From a84ad2ff0dd33b2ec0bd2a68657a5a2cbf9a5858 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Wed, 26 Apr 2023 15:22:47 +0700 Subject: [PATCH 01/87] feat: add global path config for pcsv3 --- ...ancakeswapV3IbTokenLiquidationStrategy.sol | 89 ++------------- .../libraries/LibPCSV3PoolAddress.sol | 2 +- .../reader/IPancakeSwapPathV3Reader.sol | 8 ++ solidity/contracts/reader/LibBytes.sol | 101 ++++++++++++++++++ solidity/contracts/reader/LibPath.sol | 70 ++++++++++++ .../reader/PancakeSwapPathV3Reader.sol | 86 +++++++++++++++ .../BasePCSV3LiquidationForkTest.sol | 9 +- ...quidationStrategy_ExecuteLiquidation.t.sol | 4 +- ...bTokenLiquidationStrategy_SetConfigs.t.sol | 21 ++-- 9 files changed, 296 insertions(+), 94 deletions(-) create mode 100644 solidity/contracts/reader/IPancakeSwapPathV3Reader.sol create mode 100644 solidity/contracts/reader/LibBytes.sol create mode 100644 solidity/contracts/reader/LibPath.sol create mode 100644 solidity/contracts/reader/PancakeSwapPathV3Reader.sol diff --git a/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol b/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol index 10cadc2f..35819419 100644 --- a/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol +++ b/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol @@ -6,36 +6,28 @@ import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; // ---- Libraries ---- // import { LibSafeToken } from "./libraries/LibSafeToken.sol"; -import { LibPath } from "./libraries/LibPath.sol"; // ---- Interfaces ---- // import { ILiquidationStrategy } from "./interfaces/ILiquidationStrategy.sol"; import { IPancakeSwapRouterV3 } from "./interfaces/IPancakeSwapRouterV3.sol"; import { IERC20 } from "./interfaces/IERC20.sol"; import { IMoneyMarket } from "./interfaces/IMoneyMarket.sol"; -import { IPancakeV3Pool } from "./interfaces/IPancakeV3Pool.sol"; +import { IPancakeSwapPathV3Reader } from "../reader/IPancakeSwapPathV3Reader.sol"; contract PancakeswapV3IbTokenLiquidationStrategy is ILiquidationStrategy, Ownable { using LibSafeToken for IERC20; - using LibPath for bytes; event LogSetCaller(address _caller, bool _isOk); - event LogSetPath(address _token0, address _token1, bytes _path); error PancakeswapV3IbTokenLiquidationStrategy_Unauthorized(); error PancakeswapV3IbTokenLiquidationStrategy_RepayTokenIsSameWithUnderlyingToken(); error PancakeswapV3IbTokenLiquidationStrategy_PathConfigNotFound(address tokenIn, address tokenOut); - error PancakeswapV3IbTokenLiquidationStrategy_NoLiquidity(address tokenA, address tokenB, uint24 fee); IPancakeSwapRouterV3 internal immutable router; IMoneyMarket internal immutable moneyMarket; - - address internal constant PANCAKE_V3_POOL_DEPLOYER = 0x41ff9AA7e16B8B1a8a8dc4f0eFacd93D02d071c9; - bytes32 internal constant POOL_INIT_CODE_HASH = 0x6ce8eb472fa82df5469c6ab6d485f17c3ad13c8cd7af59b3d4a8026c5ce0f7e2; + IPancakeSwapPathV3Reader public pathReader; mapping(address => bool) public callersOk; - // tokenIn => tokenOut => path - mapping(address => mapping(address => bytes)) public paths; struct WithdrawParam { address to; @@ -51,9 +43,14 @@ contract PancakeswapV3IbTokenLiquidationStrategy is ILiquidationStrategy, Ownabl _; } - constructor(address _router, address _moneyMarket) { + constructor( + address _router, + address _moneyMarket, + address _pathReader + ) { router = IPancakeSwapRouterV3(_router); moneyMarket = IMoneyMarket(_moneyMarket); + pathReader = IPancakeSwapPathV3Reader(_pathReader); } /// @notice Execute liquidate from collatToken to repayToken @@ -76,7 +73,7 @@ contract PancakeswapV3IbTokenLiquidationStrategy is ILiquidationStrategy, Ownabl revert PancakeswapV3IbTokenLiquidationStrategy_RepayTokenIsSameWithUnderlyingToken(); } - bytes memory _path = paths[_underlyingToken][_repayToken]; + bytes memory _path = pathReader.paths(_underlyingToken, _repayToken); // Revert if no swapPath config for _underlyingToken and _repayToken pair if (_path.length == 0) { revert PancakeswapV3IbTokenLiquidationStrategy_PathConfigNotFound(_underlyingToken, _repayToken); @@ -100,52 +97,6 @@ contract PancakeswapV3IbTokenLiquidationStrategy is ILiquidationStrategy, Ownabl router.exactInput(params); } - /// @notice Set paths config to be used during swap step in executeLiquidation - /// @param _paths Array of parameters used to set path - function setPaths(bytes[] calldata _paths) external onlyOwner { - uint256 _len = _paths.length; - for (uint256 _i; _i < _len; ) { - bytes memory _path = _paths[_i]; - - while (true) { - bool hasMultiplePools = LibPath.hasMultiplePools(_path); - - // get first hop (token0, fee, token1) - bytes memory _hop = _path.getFirstPool(); - // extract the token from encoded hop - (address _token0, address _token1, uint24 _fee) = _hop.decodeFirstPool(); - - // compute pool address from token0, token1 and fee - address _pool = _computeAddressV3(_token0, _token1, _fee); - - // revert EVM error if pool is not existing (cannot call liquidity) - if (IPancakeV3Pool(_pool).liquidity() == 0) { - // revert no liquidity if there's no liquidity - revert PancakeswapV3IbTokenLiquidationStrategy_NoLiquidity(_token0, _token1, _fee); - } - - // if true, go to the next hop - if (hasMultiplePools) { - _path = _path.skipToken(); - } else { - // if it's last hop - // Get source token address from first hop - (address _source, , ) = _paths[_i].decodeFirstPool(); - // Get destination token from last hop - (, address _destination, ) = _path.decodeFirstPool(); - // Assign to global paths - paths[_source][_destination] = _paths[_i]; - emit LogSetPath(_source, _destination, _paths[_i]); - break; - } - } - - unchecked { - ++_i; - } - } - } - /// @notice Set callers ok /// @param _callers A list of caller addresses /// @param _isOk An ok flag @@ -172,26 +123,4 @@ contract PancakeswapV3IbTokenLiquidationStrategy is ILiquidationStrategy, Ownabl } } } - - function _computeAddressV3( - address _tokenA, - address _tokenB, - uint24 _fee - ) internal pure returns (address pool) { - if (_tokenA > _tokenB) (_tokenA, _tokenB) = (_tokenB, _tokenA); - pool = address( - uint160( - uint256( - keccak256( - abi.encodePacked( - hex"ff", - PANCAKE_V3_POOL_DEPLOYER, - keccak256(abi.encode(_tokenA, _tokenB, _fee)), - POOL_INIT_CODE_HASH - ) - ) - ) - ) - ); - } } diff --git a/solidity/contracts/money-market/libraries/LibPCSV3PoolAddress.sol b/solidity/contracts/money-market/libraries/LibPCSV3PoolAddress.sol index df83416b..ca6febb2 100644 --- a/solidity/contracts/money-market/libraries/LibPCSV3PoolAddress.sol +++ b/solidity/contracts/money-market/libraries/LibPCSV3PoolAddress.sol @@ -32,7 +32,7 @@ library LibPCSV3PoolAddress { /// @param key The PoolKey /// @return pool The contract address of the V3 pool function computeAddress(address deployer, PoolKey memory key) internal pure returns (address pool) { - require(key.token0 < key.token1); + require(key.token0 < key.token1, "TEST"); pool = address( uint160( uint256( diff --git a/solidity/contracts/reader/IPancakeSwapPathV3Reader.sol b/solidity/contracts/reader/IPancakeSwapPathV3Reader.sol new file mode 100644 index 00000000..d00958ce --- /dev/null +++ b/solidity/contracts/reader/IPancakeSwapPathV3Reader.sol @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: BUSL +pragma solidity 0.8.19; + +interface IPancakeSwapPathV3Reader { + function setPaths(bytes[] calldata _paths) external; + + function paths(address _source, address _destination) external returns (bytes memory); +} diff --git a/solidity/contracts/reader/LibBytes.sol b/solidity/contracts/reader/LibBytes.sol new file mode 100644 index 00000000..ab5ce598 --- /dev/null +++ b/solidity/contracts/reader/LibBytes.sol @@ -0,0 +1,101 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * @title Solidity Bytes Arrays Utils + * @author Gonçalo Sá + * + * @dev Bytes tightly packed arrays utility library for ethereum contracts written in Solidity. + * The library lets you concatenate, slice and type cast bytes arrays both in memory and storage. + */ +pragma solidity 0.8.19; + +library LibBytes { + function slice( + bytes memory _bytes, + uint256 _start, + uint256 _length + ) internal pure returns (bytes memory) { + require(_length + 31 >= _length, "slice_overflow"); + require(_start + _length >= _start, "slice_overflow"); + require(_bytes.length >= _start + _length, "slice_outOfBounds"); + + bytes memory tempBytes; + + assembly { + switch iszero(_length) + case 0 { + // Get a location of some free memory and store it in tempBytes as + // Solidity does for memory variables. + tempBytes := mload(0x40) + + // The first word of the slice result is potentially a partial + // word read from the original array. To read it, we calculate + // the length of that partial word and start copying that many + // bytes into the array. The first word we copy will start with + // data we don't care about, but the last `lengthmod` bytes will + // land at the beginning of the contents of the new array. When + // we're done copying, we overwrite the full first word with + // the actual length of the slice. + let lengthmod := and(_length, 31) + + // The multiplication in the next line is necessary + // because when slicing multiples of 32 bytes (lengthmod == 0) + // the following copy loop was copying the origin's length + // and then ending prematurely not copying everything it should. + let mc := add(add(tempBytes, lengthmod), mul(0x20, iszero(lengthmod))) + let end := add(mc, _length) + + for { + // The multiplication in the next line has the same exact purpose + // as the one above. + let cc := add(add(add(_bytes, lengthmod), mul(0x20, iszero(lengthmod))), _start) + } lt(mc, end) { + mc := add(mc, 0x20) + cc := add(cc, 0x20) + } { + mstore(mc, mload(cc)) + } + + mstore(tempBytes, _length) + + //update free-memory pointer + //allocating the array padded to 32 bytes like the compiler does now + mstore(0x40, and(add(mc, 31), not(31))) + } + //if we want a zero-length slice let's just return a zero-length array + default { + tempBytes := mload(0x40) + //zero out the 32 bytes slice we are about to return + //we need to do it because Solidity does not garbage collect + mstore(tempBytes, 0) + + mstore(0x40, add(tempBytes, 0x20)) + } + } + + return tempBytes; + } + + function toAddress(bytes memory _bytes, uint256 _start) internal pure returns (address) { + require(_start + 20 >= _start, "toAddress_overflow"); + require(_bytes.length >= _start + 20, "toAddress_outOfBounds"); + address tempAddress; + + assembly { + tempAddress := div(mload(add(add(_bytes, 0x20), _start)), 0x1000000000000000000000000) + } + + return tempAddress; + } + + function toUint24(bytes memory _bytes, uint256 _start) internal pure returns (uint24) { + require(_start + 3 >= _start, "toUint24_overflow"); + require(_bytes.length >= _start + 3, "toUint24_outOfBounds"); + uint24 tempUint; + + assembly { + tempUint := mload(add(add(_bytes, 0x3), _start)) + } + + return tempUint; + } +} diff --git a/solidity/contracts/reader/LibPath.sol b/solidity/contracts/reader/LibPath.sol new file mode 100644 index 00000000..218a179c --- /dev/null +++ b/solidity/contracts/reader/LibPath.sol @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +pragma solidity >=0.6.0; + +import "./LibBytes.sol"; + +/// original is Path.sol from https://github.com/Uniswap/v3-periphery/blob/main/contracts/libraries/Path.sol +/// @title Functions for manipulating path data for multihop swaps +library LibPath { + using LibBytes for bytes; + + /// @dev The length of the bytes encoded address + uint256 private constant ADDR_SIZE = 20; + /// @dev The length of the bytes encoded fee + uint256 private constant FEE_SIZE = 3; + + /// @dev The offset of a single token address and pool fee + uint256 private constant NEXT_OFFSET = ADDR_SIZE + FEE_SIZE; + /// @dev The offset of an encoded pool key + uint256 private constant POP_OFFSET = NEXT_OFFSET + ADDR_SIZE; + /// @dev The minimum length of an encoding that contains 2 or more pools + uint256 private constant MULTIPLE_POOLS_MIN_LENGTH = POP_OFFSET + NEXT_OFFSET; + + /// @notice Returns true iff the path contains two or more pools + /// @param path The encoded swap path + /// @return True if path contains two or more pools, otherwise false + function hasMultiplePools(bytes memory path) internal pure returns (bool) { + return path.length >= MULTIPLE_POOLS_MIN_LENGTH; + } + + /// @notice Returns the number of pools in the path + /// @param path The encoded swap path + /// @return The number of pools in the path + function numPools(bytes memory path) internal pure returns (uint256) { + // Ignore the first token address. From then on every fee and token offset indicates a pool. + return ((path.length - ADDR_SIZE) / NEXT_OFFSET); + } + + /// @notice Decodes the first pool in path + /// @param path The bytes encoded swap path + /// @return tokenA The first token of the given pool + /// @return tokenB The second token of the given pool + /// @return fee The fee level of the pool + function decodeFirstPool(bytes memory path) + internal + pure + returns ( + address tokenA, + address tokenB, + uint24 fee + ) + { + tokenA = path.toAddress(0); + fee = path.toUint24(ADDR_SIZE); + tokenB = path.toAddress(NEXT_OFFSET); + } + + /// @notice Gets the segment corresponding to the first pool in the path + /// @param path The bytes encoded swap path + /// @return The segment containing all data necessary to target the first pool in the path + function getFirstPool(bytes memory path) internal pure returns (bytes memory) { + return path.slice(0, POP_OFFSET); + } + + /// @notice Skips a token + fee element from the buffer and returns the remainder + /// @param path The swap path + /// @return The remaining token + fee elements in the path + function skipToken(bytes memory path) internal pure returns (bytes memory) { + return path.slice(NEXT_OFFSET, path.length - NEXT_OFFSET); + } +} diff --git a/solidity/contracts/reader/PancakeSwapPathV3Reader.sol b/solidity/contracts/reader/PancakeSwapPathV3Reader.sol new file mode 100644 index 00000000..aad48b4f --- /dev/null +++ b/solidity/contracts/reader/PancakeSwapPathV3Reader.sol @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: BUSL +pragma solidity 0.8.19; + +import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; +import { LibPath } from "./LibPath.sol"; +import { IPancakeV3Pool } from "../money-market/interfaces/IPancakeV3Pool.sol"; +import { IPancakeSwapPathV3Reader } from "./IPancakeSwapPathV3Reader.sol"; + +contract PancakeSwapPathV3Reader is IPancakeSwapPathV3Reader, Ownable { + using LibPath for bytes; + + address internal constant PANCAKE_V3_POOL_DEPLOYER = 0x41ff9AA7e16B8B1a8a8dc4f0eFacd93D02d071c9; + bytes32 internal constant POOL_INIT_CODE_HASH = 0x6ce8eb472fa82df5469c6ab6d485f17c3ad13c8cd7af59b3d4a8026c5ce0f7e2; + + mapping(address => mapping(address => bytes)) public override paths; + + error PancakeSwapPathV3Reader_NoLiquidity(address tokenA, address tokenB, uint24 fee); + + event LogSetPath(address _token0, address _token1, bytes _path); + + function setPaths(bytes[] calldata _paths) external onlyOwner { + uint256 _len = _paths.length; + for (uint256 _i; _i < _len; ) { + bytes memory _path = _paths[_i]; + + while (true) { + bool hasMultiplePools = LibPath.hasMultiplePools(_path); + + // get first hop (token0, fee, token1) + bytes memory _hop = _path.getFirstPool(); + // extract the token from encoded hop + (address _token0, address _token1, uint24 _fee) = _hop.decodeFirstPool(); + + // compute pool address from token0, token1 and fee + address _pool = _computeAddressV3(_token0, _token1, _fee); + + // revert EVM error if pool is not existing (cannot call liquidity) + if (IPancakeV3Pool(_pool).liquidity() == 0) { + // revert no liquidity if there's no liquidity + revert PancakeSwapPathV3Reader_NoLiquidity(_token0, _token1, _fee); + } + + // if true, go to the next hop + if (hasMultiplePools) { + _path = _path.skipToken(); + } else { + // if it's last hop + // Get source token address from first hop + (address _source, , ) = _paths[_i].decodeFirstPool(); + // Get destination token from last hop + (, address _destination, ) = _path.decodeFirstPool(); + // Assign to global paths + paths[_source][_destination] = _paths[_i]; + emit LogSetPath(_source, _destination, _paths[_i]); + break; + } + } + + unchecked { + ++_i; + } + } + } + + function _computeAddressV3( + address _tokenA, + address _tokenB, + uint24 _fee + ) internal pure returns (address pool) { + if (_tokenA > _tokenB) (_tokenA, _tokenB) = (_tokenB, _tokenA); + pool = address( + uint160( + uint256( + keccak256( + abi.encodePacked( + hex"ff", + PANCAKE_V3_POOL_DEPLOYER, + keccak256(abi.encode(_tokenA, _tokenB, _fee)), + POOL_INIT_CODE_HASH + ) + ) + ) + ) + ); + } +} diff --git a/solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol b/solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol index 61f670c7..51bfb849 100644 --- a/solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol +++ b/solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol @@ -5,6 +5,7 @@ import { DSTest } from "solidity/tests/base/DSTest.sol"; import "../../utils/Components.sol"; import { PancakeswapV3IbTokenLiquidationStrategy } from "solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol"; +import { PancakeSwapPathV3Reader } from "../../../contracts/reader/PancakeSwapPathV3Reader.sol"; // interfaces import { IPancakeSwapRouterV3 } from "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol"; @@ -48,6 +49,7 @@ contract BasePCSV3LiquidationForkTest is DSTest, StdUtils, StdAssertions, StdChe IQuoterV2 internal quoterV2 = IQuoterV2(0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997); MockMoneyMarket internal moneyMarket; PancakeswapV3IbTokenLiquidationStrategy internal liquidationStrat; + PancakeSwapPathV3Reader internal pathReader; function setUp() public virtual { vm.selectFork(vm.createFork(BSC_URL_RPC)); @@ -62,8 +64,13 @@ contract BasePCSV3LiquidationForkTest is DSTest, StdUtils, StdAssertions, StdChe ibETHDecimal = ibETH.decimals(); moneyMarket = new MockMoneyMarket(); - liquidationStrat = new PancakeswapV3IbTokenLiquidationStrategy(address(router), address(moneyMarket)); + pathReader = new PancakeSwapPathV3Reader(); + liquidationStrat = new PancakeswapV3IbTokenLiquidationStrategy( + address(router), + address(moneyMarket), + address(pathReader) + ); vm.label(ALICE, "ALICE"); vm.label(BOB, "BOB"); } diff --git a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol index 0e0a4f67..83d25bed 100644 --- a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol +++ b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol @@ -24,7 +24,7 @@ contract PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation is BasePCSV3 // Set path paths[0] = abi.encodePacked(address(ETH), uint24(2500), address(btcb)); - liquidationStrat.setPaths(paths); + pathReader.setPaths(paths); vm.startPrank(BSC_TOKEN_OWNER); ETH.mint(normalizeEther(10 ether, ETHDecimal)); // mint to mm @@ -168,7 +168,7 @@ contract PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation is BasePCSV3 // set multi-hop path ETH => btcb => usdt bytes[] memory _paths = new bytes[](1); _paths[0] = abi.encodePacked(address(ETH), uint24(2500), address(btcb), uint24(500), address(usdt)); - liquidationStrat.setPaths(_paths); + pathReader.setPaths(_paths); // transfer ib to strat vm.startPrank(ALICE); diff --git a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol index 08793a3d..dc27f8ba 100644 --- a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol +++ b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol @@ -3,6 +3,7 @@ pragma solidity 0.8.19; import { BasePCSV3LiquidationForkTest } from "./BasePCSV3LiquidationForkTest.sol"; import { PancakeswapV3IbTokenLiquidationStrategy } from "../../../contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol"; +import { PancakeSwapPathV3Reader } from "../../../contracts/reader/PancakeSwapPathV3Reader.sol"; // libs import { LibPCSV3PoolAddress } from "../../../contracts/money-market/libraries/LibPCSV3PoolAddress.sol"; @@ -41,16 +42,16 @@ contract PancakeswapV3IbTokenLiquidationStrategy_SetConfigs is BasePCSV3Liquidat bytes[] memory _paths = new bytes[](1); _paths[0] = abi.encodePacked(address(cake), poolFee, address(wbnb)); - liquidationStrat.setPaths(_paths); - assertEq(liquidationStrat.paths(address(cake), address(wbnb)), _paths[0]); + pathReader.setPaths(_paths); + assertEq(pathReader.paths(address(cake), address(wbnb)), _paths[0]); } function testCorrectness_WhenOwnerSetPathMultiHop_ShouldWork() external { bytes[] memory _paths = new bytes[](1); _paths[0] = abi.encodePacked(address(cake), poolFee, address(usdt), poolFee, address(wbnb)); - liquidationStrat.setPaths(_paths); + pathReader.setPaths(_paths); - assertEq(liquidationStrat.paths(address(cake), address(wbnb)), _paths[0]); + assertEq(pathReader.paths(address(cake), address(wbnb)), _paths[0]); } function testRevert_WhenOwnerSetNonExistingPath_ShouldRevert() external { @@ -63,23 +64,23 @@ contract PancakeswapV3IbTokenLiquidationStrategy_SetConfigs is BasePCSV3Liquidat // Expect EVM Error. Since we call pool.liquidity() where pool is not existing vm.expectRevert(); - liquidationStrat.setPaths(_paths); + pathReader.setPaths(_paths); // expect pool address address _poolAddress = LibPCSV3PoolAddress.computeAddress( PANCAKE_V3_POOL_DEPLOYER, - LibPCSV3PoolAddress.PoolKey(address(_randomToken0), address(_randomToken1), poolFee) + LibPCSV3PoolAddress.getPoolKey(address(_randomToken0), address(_randomToken1), poolFee) ); - // when mock liquidity => 0, should revert PancakeswapV3IbTokenLiquidationStrategy_NoLiquidity correctly + // // when mock liquidity => 0, should revert PancakeSwapPathV3Reader_NoLiquidity correctly vm.mockCall(address(_poolAddress), abi.encodeWithSelector(IPancakeV3PoolState.liquidity.selector), abi.encode(0)); vm.expectRevert( abi.encodeWithSelector( - PancakeswapV3IbTokenLiquidationStrategy.PancakeswapV3IbTokenLiquidationStrategy_NoLiquidity.selector, + PancakeSwapPathV3Reader.PancakeSwapPathV3Reader_NoLiquidity.selector, [address(_randomToken0), address(_randomToken1), address(uint160(poolFee))] ) ); - liquidationStrat.setPaths(_paths); + pathReader.setPaths(_paths); } function testRevert_WhenCallerIsNotOwner_ShouldRevert() external { @@ -88,6 +89,6 @@ contract PancakeswapV3IbTokenLiquidationStrategy_SetConfigs is BasePCSV3Liquidat vm.prank(ALICE); vm.expectRevert("Ownable: caller is not the owner"); - liquidationStrat.setPaths(_paths); + pathReader.setPaths(_paths); } } From 13654fff5a56ea8989930956114da4e76e00a5fe Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Wed, 26 Apr 2023 15:30:43 +0700 Subject: [PATCH 02/87] chore: relocate file --- ...ancakeswapV3IbTokenLiquidationStrategy.sol | 6 +- .../money-market/libraries/BytesLib.sol | 101 ------------------ .../libraries/LibPCSV3PoolAddress.sol | 2 +- .../money-market/libraries/LibPath.sol | 70 ------------ .../reader/PancakeSwapPathV3Reader.sol | 6 +- .../IPathV3Reader.sol} | 2 +- .../reader/{ => libraries}/LibBytes.sol | 0 .../reader/{ => libraries}/LibPath.sol | 0 8 files changed, 8 insertions(+), 179 deletions(-) delete mode 100644 solidity/contracts/money-market/libraries/BytesLib.sol delete mode 100644 solidity/contracts/money-market/libraries/LibPath.sol rename solidity/contracts/reader/{IPancakeSwapPathV3Reader.sol => interfaces/IPathV3Reader.sol} (84%) rename solidity/contracts/reader/{ => libraries}/LibBytes.sol (100%) rename solidity/contracts/reader/{ => libraries}/LibPath.sol (100%) diff --git a/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol b/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol index 35819419..71ac6462 100644 --- a/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol +++ b/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol @@ -12,7 +12,7 @@ import { ILiquidationStrategy } from "./interfaces/ILiquidationStrategy.sol"; import { IPancakeSwapRouterV3 } from "./interfaces/IPancakeSwapRouterV3.sol"; import { IERC20 } from "./interfaces/IERC20.sol"; import { IMoneyMarket } from "./interfaces/IMoneyMarket.sol"; -import { IPancakeSwapPathV3Reader } from "../reader/IPancakeSwapPathV3Reader.sol"; +import { IPathV3Reader } from "../reader/interfaces/IPathV3Reader.sol"; contract PancakeswapV3IbTokenLiquidationStrategy is ILiquidationStrategy, Ownable { using LibSafeToken for IERC20; @@ -25,7 +25,7 @@ contract PancakeswapV3IbTokenLiquidationStrategy is ILiquidationStrategy, Ownabl IPancakeSwapRouterV3 internal immutable router; IMoneyMarket internal immutable moneyMarket; - IPancakeSwapPathV3Reader public pathReader; + IPathV3Reader public pathReader; mapping(address => bool) public callersOk; @@ -50,7 +50,7 @@ contract PancakeswapV3IbTokenLiquidationStrategy is ILiquidationStrategy, Ownabl ) { router = IPancakeSwapRouterV3(_router); moneyMarket = IMoneyMarket(_moneyMarket); - pathReader = IPancakeSwapPathV3Reader(_pathReader); + pathReader = IPathV3Reader(_pathReader); } /// @notice Execute liquidate from collatToken to repayToken diff --git a/solidity/contracts/money-market/libraries/BytesLib.sol b/solidity/contracts/money-market/libraries/BytesLib.sol deleted file mode 100644 index ce97c47b..00000000 --- a/solidity/contracts/money-market/libraries/BytesLib.sol +++ /dev/null @@ -1,101 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * @title Solidity Bytes Arrays Utils - * @author Gonçalo Sá - * - * @dev Bytes tightly packed arrays utility library for ethereum contracts written in Solidity. - * The library lets you concatenate, slice and type cast bytes arrays both in memory and storage. - */ -pragma solidity 0.8.19; - -library BytesLib { - function slice( - bytes memory _bytes, - uint256 _start, - uint256 _length - ) internal pure returns (bytes memory) { - require(_length + 31 >= _length, "slice_overflow"); - require(_start + _length >= _start, "slice_overflow"); - require(_bytes.length >= _start + _length, "slice_outOfBounds"); - - bytes memory tempBytes; - - assembly { - switch iszero(_length) - case 0 { - // Get a location of some free memory and store it in tempBytes as - // Solidity does for memory variables. - tempBytes := mload(0x40) - - // The first word of the slice result is potentially a partial - // word read from the original array. To read it, we calculate - // the length of that partial word and start copying that many - // bytes into the array. The first word we copy will start with - // data we don't care about, but the last `lengthmod` bytes will - // land at the beginning of the contents of the new array. When - // we're done copying, we overwrite the full first word with - // the actual length of the slice. - let lengthmod := and(_length, 31) - - // The multiplication in the next line is necessary - // because when slicing multiples of 32 bytes (lengthmod == 0) - // the following copy loop was copying the origin's length - // and then ending prematurely not copying everything it should. - let mc := add(add(tempBytes, lengthmod), mul(0x20, iszero(lengthmod))) - let end := add(mc, _length) - - for { - // The multiplication in the next line has the same exact purpose - // as the one above. - let cc := add(add(add(_bytes, lengthmod), mul(0x20, iszero(lengthmod))), _start) - } lt(mc, end) { - mc := add(mc, 0x20) - cc := add(cc, 0x20) - } { - mstore(mc, mload(cc)) - } - - mstore(tempBytes, _length) - - //update free-memory pointer - //allocating the array padded to 32 bytes like the compiler does now - mstore(0x40, and(add(mc, 31), not(31))) - } - //if we want a zero-length slice let's just return a zero-length array - default { - tempBytes := mload(0x40) - //zero out the 32 bytes slice we are about to return - //we need to do it because Solidity does not garbage collect - mstore(tempBytes, 0) - - mstore(0x40, add(tempBytes, 0x20)) - } - } - - return tempBytes; - } - - function toAddress(bytes memory _bytes, uint256 _start) internal pure returns (address) { - require(_start + 20 >= _start, "toAddress_overflow"); - require(_bytes.length >= _start + 20, "toAddress_outOfBounds"); - address tempAddress; - - assembly { - tempAddress := div(mload(add(add(_bytes, 0x20), _start)), 0x1000000000000000000000000) - } - - return tempAddress; - } - - function toUint24(bytes memory _bytes, uint256 _start) internal pure returns (uint24) { - require(_start + 3 >= _start, "toUint24_overflow"); - require(_bytes.length >= _start + 3, "toUint24_outOfBounds"); - uint24 tempUint; - - assembly { - tempUint := mload(add(add(_bytes, 0x3), _start)) - } - - return tempUint; - } -} diff --git a/solidity/contracts/money-market/libraries/LibPCSV3PoolAddress.sol b/solidity/contracts/money-market/libraries/LibPCSV3PoolAddress.sol index ca6febb2..df83416b 100644 --- a/solidity/contracts/money-market/libraries/LibPCSV3PoolAddress.sol +++ b/solidity/contracts/money-market/libraries/LibPCSV3PoolAddress.sol @@ -32,7 +32,7 @@ library LibPCSV3PoolAddress { /// @param key The PoolKey /// @return pool The contract address of the V3 pool function computeAddress(address deployer, PoolKey memory key) internal pure returns (address pool) { - require(key.token0 < key.token1, "TEST"); + require(key.token0 < key.token1); pool = address( uint160( uint256( diff --git a/solidity/contracts/money-market/libraries/LibPath.sol b/solidity/contracts/money-market/libraries/LibPath.sol deleted file mode 100644 index 1f437970..00000000 --- a/solidity/contracts/money-market/libraries/LibPath.sol +++ /dev/null @@ -1,70 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -pragma solidity >=0.6.0; - -import "./BytesLib.sol"; - -/// original is Path.sol from https://github.com/Uniswap/v3-periphery/blob/main/contracts/libraries/Path.sol -/// @title Functions for manipulating path data for multihop swaps -library LibPath { - using BytesLib for bytes; - - /// @dev The length of the bytes encoded address - uint256 private constant ADDR_SIZE = 20; - /// @dev The length of the bytes encoded fee - uint256 private constant FEE_SIZE = 3; - - /// @dev The offset of a single token address and pool fee - uint256 private constant NEXT_OFFSET = ADDR_SIZE + FEE_SIZE; - /// @dev The offset of an encoded pool key - uint256 private constant POP_OFFSET = NEXT_OFFSET + ADDR_SIZE; - /// @dev The minimum length of an encoding that contains 2 or more pools - uint256 private constant MULTIPLE_POOLS_MIN_LENGTH = POP_OFFSET + NEXT_OFFSET; - - /// @notice Returns true iff the path contains two or more pools - /// @param path The encoded swap path - /// @return True if path contains two or more pools, otherwise false - function hasMultiplePools(bytes memory path) internal pure returns (bool) { - return path.length >= MULTIPLE_POOLS_MIN_LENGTH; - } - - /// @notice Returns the number of pools in the path - /// @param path The encoded swap path - /// @return The number of pools in the path - function numPools(bytes memory path) internal pure returns (uint256) { - // Ignore the first token address. From then on every fee and token offset indicates a pool. - return ((path.length - ADDR_SIZE) / NEXT_OFFSET); - } - - /// @notice Decodes the first pool in path - /// @param path The bytes encoded swap path - /// @return tokenA The first token of the given pool - /// @return tokenB The second token of the given pool - /// @return fee The fee level of the pool - function decodeFirstPool(bytes memory path) - internal - pure - returns ( - address tokenA, - address tokenB, - uint24 fee - ) - { - tokenA = path.toAddress(0); - fee = path.toUint24(ADDR_SIZE); - tokenB = path.toAddress(NEXT_OFFSET); - } - - /// @notice Gets the segment corresponding to the first pool in the path - /// @param path The bytes encoded swap path - /// @return The segment containing all data necessary to target the first pool in the path - function getFirstPool(bytes memory path) internal pure returns (bytes memory) { - return path.slice(0, POP_OFFSET); - } - - /// @notice Skips a token + fee element from the buffer and returns the remainder - /// @param path The swap path - /// @return The remaining token + fee elements in the path - function skipToken(bytes memory path) internal pure returns (bytes memory) { - return path.slice(NEXT_OFFSET, path.length - NEXT_OFFSET); - } -} diff --git a/solidity/contracts/reader/PancakeSwapPathV3Reader.sol b/solidity/contracts/reader/PancakeSwapPathV3Reader.sol index aad48b4f..e52e90ed 100644 --- a/solidity/contracts/reader/PancakeSwapPathV3Reader.sol +++ b/solidity/contracts/reader/PancakeSwapPathV3Reader.sol @@ -2,11 +2,11 @@ pragma solidity 0.8.19; import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; -import { LibPath } from "./LibPath.sol"; +import { LibPath } from "./libraries/LibPath.sol"; import { IPancakeV3Pool } from "../money-market/interfaces/IPancakeV3Pool.sol"; -import { IPancakeSwapPathV3Reader } from "./IPancakeSwapPathV3Reader.sol"; +import { IPathV3Reader } from "./interfaces/IPathV3Reader.sol"; -contract PancakeSwapPathV3Reader is IPancakeSwapPathV3Reader, Ownable { +contract PancakeSwapPathV3Reader is IPathV3Reader, Ownable { using LibPath for bytes; address internal constant PANCAKE_V3_POOL_DEPLOYER = 0x41ff9AA7e16B8B1a8a8dc4f0eFacd93D02d071c9; diff --git a/solidity/contracts/reader/IPancakeSwapPathV3Reader.sol b/solidity/contracts/reader/interfaces/IPathV3Reader.sol similarity index 84% rename from solidity/contracts/reader/IPancakeSwapPathV3Reader.sol rename to solidity/contracts/reader/interfaces/IPathV3Reader.sol index d00958ce..4b9841fb 100644 --- a/solidity/contracts/reader/IPancakeSwapPathV3Reader.sol +++ b/solidity/contracts/reader/interfaces/IPathV3Reader.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: BUSL pragma solidity 0.8.19; -interface IPancakeSwapPathV3Reader { +interface IPathV3Reader { function setPaths(bytes[] calldata _paths) external; function paths(address _source, address _destination) external returns (bytes memory); diff --git a/solidity/contracts/reader/LibBytes.sol b/solidity/contracts/reader/libraries/LibBytes.sol similarity index 100% rename from solidity/contracts/reader/LibBytes.sol rename to solidity/contracts/reader/libraries/LibBytes.sol diff --git a/solidity/contracts/reader/LibPath.sol b/solidity/contracts/reader/libraries/LibPath.sol similarity index 100% rename from solidity/contracts/reader/LibPath.sol rename to solidity/contracts/reader/libraries/LibPath.sol From ed540692a9d5d4d1e3093dc60a0e271e512a4bb9 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Wed, 26 Apr 2023 17:19:08 +0700 Subject: [PATCH 03/87] feat: add non-ib liquidation v3 contract and tests --- .../PancakeswapV3TokenLiquidationStrategy.sol | 188 ++++++++++++++ .../libs}/LibPCSV3PoolAddress.sol | 0 .../BasePCSV3LiquidationForkTest.sol | 2 - ...quidationStrategy_ExecuteLiquidation.t.sol | 4 +- ...bTokenLiquidationStrategy_SetConfigs.t.sol | 5 +- ...quidationStrategy_ExecuteLiquidation.t.sol | 244 ++++++++++++++++++ ...3TokenLiquidationStrategy_SetConfigs.t.sol | 77 ++++++ 7 files changed, 516 insertions(+), 4 deletions(-) create mode 100644 solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol rename solidity/{contracts/money-market/libraries => tests/libs}/LibPCSV3PoolAddress.sol (100%) create mode 100644 solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation.t.sol create mode 100644 solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol diff --git a/solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol b/solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol new file mode 100644 index 00000000..0b22e1f4 --- /dev/null +++ b/solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol @@ -0,0 +1,188 @@ +// SPDX-License-Identifier: BUSL +pragma solidity 0.8.19; + +// ---- External Libraries ---- // +import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; + +// ---- Libraries ---- // +import { LibSafeToken } from "./libraries/LibSafeToken.sol"; +import { LibPath } from "./libraries/LibPath.sol"; + +// ---- Interfaces ---- // +import { ILiquidationStrategy } from "./interfaces/ILiquidationStrategy.sol"; +import { IPancakeSwapRouterV3 } from "./interfaces/IPancakeSwapRouterV3.sol"; +import { IERC20 } from "./interfaces/IERC20.sol"; +import { IPancakeV3Pool } from "./interfaces/IPancakeV3Pool.sol"; + +contract PancakeswapV3TokenLiquidationStrategy is ILiquidationStrategy, Ownable { + using LibSafeToken for IERC20; + using LibPath for bytes; + + event LogSetCaller(address _caller, bool _isOk); + event LogSetPath(address _token0, address _token1, bytes _path); + + error PancakeswapV3TokenLiquidationStrategy_Unauthorized(); + error PancakeswapV3TokenLiquidationStrategy_RepayTokenIsSameWithCollatToken(); + error PancakeswapV3TokenLiquidationStrategy_PathConfigNotFound(address tokenIn, address tokenOut); + error PancakeswapV3TokenLiquidationStrategy_NoLiquidity(address tokenA, address tokenB, uint24 fee); + + IPancakeSwapRouterV3 internal immutable router; + + address internal constant PANCAKE_V3_POOL_DEPLOYER = 0x41ff9AA7e16B8B1a8a8dc4f0eFacd93D02d071c9; + bytes32 internal constant POOL_INIT_CODE_HASH = 0x6ce8eb472fa82df5469c6ab6d485f17c3ad13c8cd7af59b3d4a8026c5ce0f7e2; + + mapping(address => bool) public callersOk; + // tokenIn => tokenOut => path + mapping(address => mapping(address => bytes)) public paths; + + struct WithdrawParam { + address to; + address token; + uint256 amount; + } + + /// @notice allow only whitelisted callers + modifier onlyWhitelistedCallers() { + if (!callersOk[msg.sender]) { + revert PancakeswapV3TokenLiquidationStrategy_Unauthorized(); + } + _; + } + + constructor(address _router) { + router = IPancakeSwapRouterV3(_router); + } + + /// @notice Execute liquidate from collatToken to repayToken + /// @param _collatToken The source token + /// @param _repayToken The destination token + /// @param _collatAmountIn Available amount of source token to trade + /// @param _minReceive Min token receive after swap + function executeLiquidation( + address _collatToken, + address _repayToken, + uint256 _collatAmountIn, + uint256, /* _repayAmount */ + uint256 _minReceive + ) external onlyWhitelistedCallers { + // Revert if _underlyingToken and _repayToken are the same address + if (_collatToken == _repayToken) { + revert PancakeswapV3TokenLiquidationStrategy_RepayTokenIsSameWithCollatToken(); + } + + bytes memory _path = paths[_collatToken][_repayToken]; + // Revert if no swapPath config for _collatToken and _repayToken pair + if (_path.length == 0) { + revert PancakeswapV3TokenLiquidationStrategy_PathConfigNotFound(_collatToken, _repayToken); + } + + // setup params from swap + IPancakeSwapRouterV3.ExactInputParams memory params = IPancakeSwapRouterV3.ExactInputParams({ + path: _path, + recipient: msg.sender, + deadline: block.timestamp, + amountIn: _collatAmountIn, + amountOutMinimum: _minReceive + }); + + // approve router for swapping + IERC20(_collatToken).safeApprove(address(router), _collatAmountIn); + // swap all collatToken to repayToken + router.exactInput(params); + } + + /// @notice Set paths config to be used during swap step in executeLiquidation + /// @param _paths Array of parameters used to set path + function setPaths(bytes[] calldata _paths) external onlyOwner { + uint256 _len = _paths.length; + for (uint256 _i; _i < _len; ) { + bytes memory _path = _paths[_i]; + + while (true) { + bool hasMultiplePools = LibPath.hasMultiplePools(_path); + + // get first hop (token0, fee, token1) + bytes memory _hop = _path.getFirstPool(); + // extract the token from encoded hop + (address _token0, address _token1, uint24 _fee) = _hop.decodeFirstPool(); + + // compute pool address from token0, token1 and fee + address _pool = _computeAddressV3(_token0, _token1, _fee); + + // revert EVM error if pool is not existing (cannot call liquidity) + if (IPancakeV3Pool(_pool).liquidity() == 0) { + // revert no liquidity if there's no liquidity + revert PancakeswapV3TokenLiquidationStrategy_NoLiquidity(_token0, _token1, _fee); + } + + // if true, go to the next hop + if (hasMultiplePools) { + _path = _path.skipToken(); + } else { + // if it's last hop + // Get source token address from first hop + (address _source, , ) = _paths[_i].decodeFirstPool(); + // Get destination token from last hop + (, address _destination, ) = _path.decodeFirstPool(); + // Assign to global paths + paths[_source][_destination] = _paths[_i]; + emit LogSetPath(_source, _destination, _paths[_i]); + break; + } + } + + unchecked { + ++_i; + } + } + } + + /// @notice Set callers ok + /// @param _callers A list of caller addresses + /// @param _isOk An ok flag + function setCallersOk(address[] calldata _callers, bool _isOk) external onlyOwner { + uint256 _length = _callers.length; + for (uint256 _i; _i < _length; ) { + callersOk[_callers[_i]] = _isOk; + emit LogSetCaller(_callers[_i], _isOk); + unchecked { + ++_i; + } + } + } + + /// @notice Withdraw ERC20 from this contract + /// @param _withdrawParams an array of Withdrawal parameters (to, token, amount) + function withdraw(WithdrawParam[] calldata _withdrawParams) external onlyOwner { + uint256 _length = _withdrawParams.length; + for (uint256 _i; _i < _length; ) { + IERC20(_withdrawParams[_i].token).safeTransfer(_withdrawParams[_i].to, _withdrawParams[_i].amount); + + unchecked { + ++_i; + } + } + } + + function _computeAddressV3( + address _tokenA, + address _tokenB, + uint24 _fee + ) internal pure returns (address pool) { + if (_tokenA > _tokenB) (_tokenA, _tokenB) = (_tokenB, _tokenA); + pool = address( + uint160( + uint256( + keccak256( + abi.encodePacked( + hex"ff", + PANCAKE_V3_POOL_DEPLOYER, + keccak256(abi.encode(_tokenA, _tokenB, _fee)), + POOL_INIT_CODE_HASH + ) + ) + ) + ) + ); + } +} diff --git a/solidity/contracts/money-market/libraries/LibPCSV3PoolAddress.sol b/solidity/tests/libs/LibPCSV3PoolAddress.sol similarity index 100% rename from solidity/contracts/money-market/libraries/LibPCSV3PoolAddress.sol rename to solidity/tests/libs/LibPCSV3PoolAddress.sol diff --git a/solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol b/solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol index 61f670c7..48b7e221 100644 --- a/solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol +++ b/solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol @@ -47,7 +47,6 @@ contract BasePCSV3LiquidationForkTest is DSTest, StdUtils, StdAssertions, StdChe IPancakeSwapRouterV3 internal router = IPancakeSwapRouterV3(0x1b81D678ffb9C0263b24A97847620C99d213eB14); IQuoterV2 internal quoterV2 = IQuoterV2(0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997); MockMoneyMarket internal moneyMarket; - PancakeswapV3IbTokenLiquidationStrategy internal liquidationStrat; function setUp() public virtual { vm.selectFork(vm.createFork(BSC_URL_RPC)); @@ -62,7 +61,6 @@ contract BasePCSV3LiquidationForkTest is DSTest, StdUtils, StdAssertions, StdChe ibETHDecimal = ibETH.decimals(); moneyMarket = new MockMoneyMarket(); - liquidationStrat = new PancakeswapV3IbTokenLiquidationStrategy(address(router), address(moneyMarket)); vm.label(ALICE, "ALICE"); vm.label(BOB, "BOB"); diff --git a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol index 0e0a4f67..395aaae3 100644 --- a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol +++ b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol @@ -9,10 +9,13 @@ import { MockERC20 } from "solidity/tests/mocks/MockERC20.sol"; contract PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation is BasePCSV3LiquidationForkTest { bytes[] internal paths = new bytes[](1); + PancakeswapV3IbTokenLiquidationStrategy internal liquidationStrat; function setUp() public override { super.setUp(); + liquidationStrat = new PancakeswapV3IbTokenLiquidationStrategy(address(router), address(moneyMarket)); + // mint ibETH to alice ibETH.mint(ALICE, normalizeEther(1 ether, ibETHDecimal)); @@ -70,7 +73,6 @@ contract PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation is BasePCSV3 vm.stopPrank(); } - // expect ibWeth => ETH => btcb function testCorrectness_WhenExecuteIbTokenLiquiationStratV3_ShouldWork() external { // prepare criteria address _ibToken = address(ibETH); diff --git a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol index 08793a3d..8931a9f3 100644 --- a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol +++ b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol @@ -5,7 +5,7 @@ import { BasePCSV3LiquidationForkTest } from "./BasePCSV3LiquidationForkTest.sol import { PancakeswapV3IbTokenLiquidationStrategy } from "../../../contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol"; // libs -import { LibPCSV3PoolAddress } from "../../../contracts/money-market/libraries/LibPCSV3PoolAddress.sol"; +import { LibPCSV3PoolAddress } from "../../libs/LibPCSV3PoolAddress.sol"; // interfaces import { IPancakeV3PoolState } from "../../../contracts/money-market/interfaces/IPancakeV3Pool.sol"; @@ -14,8 +14,11 @@ import { IPancakeV3PoolState } from "../../../contracts/money-market/interfaces/ import { MockERC20 } from "solidity/tests/mocks/MockERC20.sol"; contract PancakeswapV3IbTokenLiquidationStrategy_SetConfigs is BasePCSV3LiquidationForkTest { + PancakeswapV3IbTokenLiquidationStrategy internal liquidationStrat; + function setUp() public override { super.setUp(); + liquidationStrat = new PancakeswapV3IbTokenLiquidationStrategy(address(router), address(moneyMarket)); } function testCorrectness_WhenOwnerSetCallersOk_ShouldWork() external { diff --git a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation.t.sol b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation.t.sol new file mode 100644 index 00000000..57eb733a --- /dev/null +++ b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation.t.sol @@ -0,0 +1,244 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import { BasePCSV3LiquidationForkTest } from "./BasePCSV3LiquidationForkTest.sol"; +import { PancakeswapV3TokenLiquidationStrategy } from "../../../contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol"; + +// mocks +import { MockERC20 } from "solidity/tests/mocks/MockERC20.sol"; + +contract PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation is BasePCSV3LiquidationForkTest { + bytes[] internal paths = new bytes[](1); + PancakeswapV3TokenLiquidationStrategy internal liquidationStrat; + + function setUp() public override { + super.setUp(); + liquidationStrat = new PancakeswapV3TokenLiquidationStrategy(address(router)); + + address[] memory _callers = new address[](1); + _callers[0] = ALICE; + liquidationStrat.setCallersOk(_callers, true); + + // Set path + paths[0] = abi.encodePacked(address(ETH), uint24(2500), address(btcb)); + liquidationStrat.setPaths(paths); + + // mint ETH to ALICE + vm.startPrank(BSC_TOKEN_OWNER); + ETH.mint(normalizeEther(10 ether, ETHDecimal)); // mint to mm + ETH.transfer(address(ALICE), normalizeEther(10 ether, ETHDecimal)); + vm.stopPrank(); + } + + function testCorrectness_LiquidationStratV3_WhenExecuteLiquidation_ShouldWork() external { + address _collatToken = address(ETH); + address _debtToken = address(btcb); + uint256 _collatAmountIn = normalizeEther(1 ether, ETHDecimal); + + // state before execution + uint256 _aliceBTCBBalanceBefore = btcb.balanceOf(ALICE); + + // expected repay amount out after swap + (uint256 _expectedAmountOut, , , ) = quoterV2.quoteExactInput(paths[0], _collatAmountIn); + + vm.startPrank(ALICE); + MockERC20(_collatToken).transfer(address(liquidationStrat), _collatAmountIn); + liquidationStrat.executeLiquidation(_collatToken, _debtToken, _collatAmountIn, 0, 0); + vm.stopPrank(); + + uint256 _aliceBTCBBalanceAfter = btcb.balanceOf(ALICE); + + // nothing left in strat + assertEq(ETH.balanceOf(address(liquidationStrat)), 0, "ETH balance of strat"); + assertEq(btcb.balanceOf(address(liquidationStrat)), 0, "BTCB balance of strat"); + + // caller (ALICE) must get repay token amount + assertEq(_aliceBTCBBalanceAfter, _aliceBTCBBalanceBefore + _expectedAmountOut, "BTCB balance of money market"); + } + + function testCorrectness_WhenInjectCollatToStrat_ExecuteLiquidationV3_ShouldTransferCollatAmountBackCorrectly() + external + { + address _collatToken = address(ETH); + address _debtToken = address(btcb); + + uint256 _collatAmount = normalizeEther(1 ether, ETHDecimal); + // expected repay amount + (uint256 _expectedAmountOut, , , ) = quoterV2.quoteExactInput(paths[0], _collatAmount); + + uint256 _injectAmount = normalizeEther(1 ether, ETHDecimal); + vm.startPrank(BSC_TOKEN_OWNER); + ETH.mint(_collatAmount + _injectAmount); + ETH.transfer(address(liquidationStrat), _collatAmount + _injectAmount); + vm.stopPrank(); + + vm.prank(ALICE); + liquidationStrat.executeLiquidation(_collatToken, _debtToken, _collatAmount, 0, 0); + + // injected collat left in strat + assertEq(ETH.balanceOf(address(liquidationStrat)), _injectAmount, "ETH balance of strat"); + assertEq(btcb.balanceOf(address(liquidationStrat)), 0, "btcb balance of strat"); + + assertEq(btcb.balanceOf(address(ALICE)), _expectedAmountOut, "btcb balance of callers"); + } + + function testRevert_WhenNonCallersCallExecuteLiquidation_ShouldRevert() external { + address _collatToken = address(ETH); + address _debtToken = address(btcb); + + vm.prank(BOB); + vm.expectRevert( + abi.encodeWithSelector( + PancakeswapV3TokenLiquidationStrategy.PancakeswapV3TokenLiquidationStrategy_Unauthorized.selector + ) + ); + liquidationStrat.executeLiquidation( + _collatToken, + _debtToken, + normalizeEther(1 ether, ETHDecimal), + normalizeEther(1 ether, btcbDecimal), + 0 + ); + } + + function testRevert_WhenExecuteLiquidationOnNonExistingPath() external { + address _collatToken = address(btcb); + address _debtToken = address(cake); + + vm.prank(ALICE); + vm.expectRevert( + abi.encodeWithSelector( + PancakeswapV3TokenLiquidationStrategy.PancakeswapV3TokenLiquidationStrategy_PathConfigNotFound.selector, + _collatToken, + _debtToken + ) + ); + liquidationStrat.executeLiquidation( + _collatToken, + _debtToken, + normalizeEther(1 ether, btcbDecimal), + normalizeEther(1 ether, cakeDecimal), + 0 + ); + } + + // TODO: check multi hop + function testCorrectness_WhenLiquidationOnMultiHop_ShouldWork() external { + address _collatToken = address(ETH); + address _debtToken = address(usdt); + uint256 _collatTokenAmountIn = normalizeEther(1 ether, ETHDecimal); + uint256 _minReceive = 0; + + // set withdrawal amount + uint256 _expectedWithdrawalAmount = normalizeEther(1 ether, ETHDecimal); + moneyMarket.setWithdrawalAmount(_expectedWithdrawalAmount); + + // state before execution + uint256 _aliceETHBalanceBefore = ETH.balanceOf(ALICE); + uint256 _aliceBTCBBalanceBefore = btcb.balanceOf(ALICE); + uint256 _aliceUSDTBalanceBefore = usdt.balanceOf(ALICE); + + // set multi-hop path ETH => btcb => usdt + bytes[] memory _paths = new bytes[](1); + _paths[0] = abi.encodePacked(address(ETH), uint24(2500), address(btcb), uint24(500), address(usdt)); + liquidationStrat.setPaths(_paths); + + // transfer collat to to strat + vm.startPrank(ALICE); + ETH.transfer(address(liquidationStrat), _collatTokenAmountIn); + // expect amount out 2 hop expect btcb, expect usdt + bytes memory _ETHToBtcbPath = abi.encodePacked(address(ETH), uint24(2500), address(btcb)); + (uint256 _expectedBTCBOut, , , ) = quoterV2.quoteExactInput(_ETHToBtcbPath, _collatTokenAmountIn); + + bytes memory _BtcbToUsdtPath = abi.encodePacked(address(btcb), uint24(500), address(usdt)); + (uint256 _expectedUSDTOut, , , ) = quoterV2.quoteExactInput(_BtcbToUsdtPath, _expectedBTCBOut); + + liquidationStrat.executeLiquidation(_collatToken, _debtToken, _collatTokenAmountIn, 0, _minReceive); + + uint256 _aliceETHBalanceAfter = ETH.balanceOf(ALICE); + uint256 _aliceBTCBBalanceAfter = btcb.balanceOf(ALICE); + uint256 _aliceUSDTBalanceAfter = usdt.balanceOf(ALICE); + + // nothing left in strat + assertEq(ETH.balanceOf(address(liquidationStrat)), 0, "ETH balance of strat"); + assertEq(btcb.balanceOf(address(liquidationStrat)), 0, "btcb balance of strat"); + assertEq(usdt.balanceOf(address(liquidationStrat)), 0, "usdt balance of strat"); + + // eth of alice must not effect + assertEq(_aliceETHBalanceAfter, _aliceETHBalanceBefore - _collatTokenAmountIn, "ETH balance of ALICE"); + + // btcb of alice (middle hop) must not left + assertEq(_aliceBTCBBalanceAfter, _aliceBTCBBalanceBefore, "BTCB balance of ALICE"); + + // huge amount of collat token will cause the revert, since the tick would be changed + // repay token (usdt) of alice must increase + assertEq(_aliceUSDTBalanceAfter, _aliceUSDTBalanceBefore + _expectedUSDTOut, "USDT balance of ALICE"); + } + + function testCorrect_WhenCallerWithdraw_ShouldWork() external { + // mint erc20 to strat (token0, token1) + MockERC20 _token0 = new MockERC20("token0", "TK0", 18); + MockERC20 _token1 = new MockERC20("token1", "TK1", 18); + uint256 _token0Decimal = _token0.decimals(); + uint256 _token1Decimal = _token1.decimals(); + + uint256 _withdrawToken0Amount = normalizeEther(10, _token0Decimal); + uint256 _withdrawToken1Amount = normalizeEther(10, _token1Decimal); + _token0.mint(address(liquidationStrat), _withdrawToken0Amount); + _token1.mint(address(liquidationStrat), _withdrawToken1Amount); + + // balance before + uint256 _stratToken0BalanceBefore = _token0.balanceOf(address(liquidationStrat)); + uint256 _stratToken1BalanceBefore = _token1.balanceOf(address(liquidationStrat)); + uint256 _aliceToken0BalanceBefore = _token0.balanceOf(address(ALICE)); + uint256 _aliceToken1BalanceBefore = _token1.balanceOf(address(ALICE)); + + // use owner to withdraw + PancakeswapV3TokenLiquidationStrategy.WithdrawParam[] + memory _withdrawParams = new PancakeswapV3TokenLiquidationStrategy.WithdrawParam[](2); + _withdrawParams[0] = PancakeswapV3TokenLiquidationStrategy.WithdrawParam( + ALICE, + address(_token0), + _withdrawToken0Amount + ); + _withdrawParams[1] = PancakeswapV3TokenLiquidationStrategy.WithdrawParam( + ALICE, + address(_token1), + _withdrawToken1Amount + ); + + liquidationStrat.withdraw(_withdrawParams); + + // balance after + uint256 _stratToken0BalanceAfter = _token0.balanceOf(address(liquidationStrat)); + uint256 _stratToken1BalanceAfter = _token1.balanceOf(address(liquidationStrat)); + uint256 _aliceToken0BalanceAfter = _token0.balanceOf(address(ALICE)); + uint256 _aliceToken1BalanceAfter = _token1.balanceOf(address(ALICE)); + + // assert + // strat: after = before - withdraw + assertEq(_stratToken0BalanceAfter, _stratToken0BalanceBefore - _withdrawToken0Amount); + assertEq(_stratToken1BalanceAfter, _stratToken1BalanceBefore - _withdrawToken1Amount); + // ALICE: after = before + withdraw + assertEq(_aliceToken0BalanceAfter, _aliceToken0BalanceBefore + _withdrawToken0Amount); + assertEq(_aliceToken1BalanceAfter, _aliceToken1BalanceBefore + _withdrawToken1Amount); + } + + function testRevert_WhenNonCallerWithdraw_ShouldRevert() external { + // mint erc20 to strat + MockERC20 _token = new MockERC20("token0", "TK0", 18); + uint256 _tokenDecimal = _token.decimals(); + + uint256 _withdrawAmount = normalizeEther(10, _tokenDecimal); + _token.mint(address(liquidationStrat), _withdrawAmount); + + PancakeswapV3TokenLiquidationStrategy.WithdrawParam[] + memory _withdrawParams = new PancakeswapV3TokenLiquidationStrategy.WithdrawParam[](1); + _withdrawParams[0] = PancakeswapV3TokenLiquidationStrategy.WithdrawParam(ALICE, address(_token), _withdrawAmount); + + // prank to BOB and call withdraw + vm.startPrank(BOB); + vm.expectRevert("Ownable: caller is not the owner"); + liquidationStrat.withdraw(_withdrawParams); + } +} diff --git a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol new file mode 100644 index 00000000..e02be4e6 --- /dev/null +++ b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol @@ -0,0 +1,77 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import { BasePCSV3LiquidationForkTest } from "./BasePCSV3LiquidationForkTest.sol"; +import { PancakeswapV3TokenLiquidationStrategy } from "../../../contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol"; + +// libs +import { LibPCSV3PoolAddress } from "../../libs/LibPCSV3PoolAddress.sol"; + +// mocks +import { MockERC20 } from "solidity/tests/mocks/MockERC20.sol"; + +contract PancakeswapV3TokenLiquidationStrategy_SetConfigs is BasePCSV3LiquidationForkTest { + PancakeswapV3TokenLiquidationStrategy internal liquidationStrat; + + function setUp() public override { + super.setUp(); + liquidationStrat = new PancakeswapV3TokenLiquidationStrategy(address(router)); + } + + function testCorrectness_WhenOwnerSetCallersOk_ShouldWork() external { + address[] memory _callers = new address[](1); + _callers[0] = BOB; + + liquidationStrat.setCallersOk(_callers, true); + + assertTrue(liquidationStrat.callersOk(BOB)); + } + + function testRevert_WhenNonOwnerSetCallersOk_ShouldRevert() external { + address[] memory _callers = new address[](1); + _callers[0] = BOB; + + vm.prank(BOB); + vm.expectRevert("Ownable: caller is not the owner"); + liquidationStrat.setCallersOk(_callers, true); + } + + function testCorrectness_WhenOwnerSetPathSingleHop_ShouldWork() external { + // bytes[] paths + bytes[] memory _paths = new bytes[](1); + _paths[0] = abi.encodePacked(address(cake), poolFee, address(wbnb)); + + liquidationStrat.setPaths(_paths); + assertEq(liquidationStrat.paths(address(cake), address(wbnb)), _paths[0]); + } + + function testCorrectness_WhenOwnerSetPathMultiHop_ShouldWork() external { + bytes[] memory _paths = new bytes[](1); + _paths[0] = abi.encodePacked(address(cake), poolFee, address(usdt), poolFee, address(wbnb)); + liquidationStrat.setPaths(_paths); + + assertEq(liquidationStrat.paths(address(cake), address(wbnb)), _paths[0]); + } + + function testRevert_WhenOwnerSetNonExistingPath_ShouldRevert() external { + // random token + MockERC20 _randomToken0 = new MockERC20("Random0", "RD0", 18); + MockERC20 _randomToken1 = new MockERC20("Random1", "RD1", 18); + + bytes[] memory _paths = new bytes[](1); + _paths[0] = abi.encodePacked(address(_randomToken0), poolFee, address(_randomToken1)); + + // TODO: Revert with? + vm.expectRevert(); + liquidationStrat.setPaths(_paths); + } + + function testRevert_WhenCallerIsNotOwner_ShouldRevert() external { + bytes[] memory _paths = new bytes[](1); + _paths[0] = abi.encodePacked(address(wbnb), poolFee, address(cake)); + + vm.prank(ALICE); + vm.expectRevert("Ownable: caller is not the owner"); + liquidationStrat.setPaths(_paths); + } +} From 8a6d4f87520779afab3c533d6179ab6a00df1312 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Thu, 27 Apr 2023 11:10:15 +0700 Subject: [PATCH 04/87] fix: remove first hop extraction --- .../money-market/PancakeswapV3IbTokenLiquidationStrategy.sol | 4 +--- .../money-market/PancakeswapV3TokenLiquidationStrategy.sol | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol b/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol index 10cadc2f..c6fc89f4 100644 --- a/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol +++ b/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol @@ -110,10 +110,8 @@ contract PancakeswapV3IbTokenLiquidationStrategy is ILiquidationStrategy, Ownabl while (true) { bool hasMultiplePools = LibPath.hasMultiplePools(_path); - // get first hop (token0, fee, token1) - bytes memory _hop = _path.getFirstPool(); // extract the token from encoded hop - (address _token0, address _token1, uint24 _fee) = _hop.decodeFirstPool(); + (address _token0, address _token1, uint24 _fee) = _path.decodeFirstPool(); // compute pool address from token0, token1 and fee address _pool = _computeAddressV3(_token0, _token1, _fee); diff --git a/solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol b/solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol index 0b22e1f4..8bd373c8 100644 --- a/solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol +++ b/solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol @@ -101,10 +101,8 @@ contract PancakeswapV3TokenLiquidationStrategy is ILiquidationStrategy, Ownable while (true) { bool hasMultiplePools = LibPath.hasMultiplePools(_path); - // get first hop (token0, fee, token1) - bytes memory _hop = _path.getFirstPool(); // extract the token from encoded hop - (address _token0, address _token1, uint24 _fee) = _hop.decodeFirstPool(); + (address _token0, address _token1, uint24 _fee) = _path.decodeFirstPool(); // compute pool address from token0, token1 and fee address _pool = _computeAddressV3(_token0, _token1, _fee); From 3b45048de1cd6eb1086b77e39536fd4c9bb55136 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Thu, 27 Apr 2023 11:14:14 +0700 Subject: [PATCH 05/87] fix: add comments, remove hop extraction --- solidity/contracts/reader/PancakeSwapPathV3Reader.sol | 7 +++---- ...ancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/solidity/contracts/reader/PancakeSwapPathV3Reader.sol b/solidity/contracts/reader/PancakeSwapPathV3Reader.sol index e52e90ed..6b95c86c 100644 --- a/solidity/contracts/reader/PancakeSwapPathV3Reader.sol +++ b/solidity/contracts/reader/PancakeSwapPathV3Reader.sol @@ -12,6 +12,7 @@ contract PancakeSwapPathV3Reader is IPathV3Reader, Ownable { address internal constant PANCAKE_V3_POOL_DEPLOYER = 0x41ff9AA7e16B8B1a8a8dc4f0eFacd93D02d071c9; bytes32 internal constant POOL_INIT_CODE_HASH = 0x6ce8eb472fa82df5469c6ab6d485f17c3ad13c8cd7af59b3d4a8026c5ce0f7e2; + // tokenIn => tokenOut => path mapping(address => mapping(address => bytes)) public override paths; error PancakeSwapPathV3Reader_NoLiquidity(address tokenA, address tokenB, uint24 fee); @@ -26,10 +27,8 @@ contract PancakeSwapPathV3Reader is IPathV3Reader, Ownable { while (true) { bool hasMultiplePools = LibPath.hasMultiplePools(_path); - // get first hop (token0, fee, token1) - bytes memory _hop = _path.getFirstPool(); - // extract the token from encoded hop - (address _token0, address _token1, uint24 _fee) = _hop.decodeFirstPool(); + // extract the token from first encoded hop + (address _token0, address _token1, uint24 _fee) = _path.decodeFirstPool(); // compute pool address from token0, token1 and fee address _pool = _computeAddressV3(_token0, _token1, _fee); diff --git a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol index dc27f8ba..8508aa81 100644 --- a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol +++ b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol @@ -72,7 +72,7 @@ contract PancakeswapV3IbTokenLiquidationStrategy_SetConfigs is BasePCSV3Liquidat LibPCSV3PoolAddress.getPoolKey(address(_randomToken0), address(_randomToken1), poolFee) ); - // // when mock liquidity => 0, should revert PancakeSwapPathV3Reader_NoLiquidity correctly + // when mock liquidity => 0, should revert PancakeSwapPathV3Reader_NoLiquidity correctly vm.mockCall(address(_poolAddress), abi.encodeWithSelector(IPancakeV3PoolState.liquidity.selector), abi.encode(0)); vm.expectRevert( abi.encodeWithSelector( From 61af1c38bda817619a59d2c200f1ad9da3587b8c Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Fri, 28 Apr 2023 16:59:08 +0700 Subject: [PATCH 06/87] feat: init alpaca flashloan --- .../money-market/facets/FlashloanFacet.sol | 76 +++++++++++++++++++ .../interfaces/IAlpacaFlashloan.sol | 6 ++ .../flashloan/MoneyMarket_Flashloan.t.sol | 17 +++++ 3 files changed, 99 insertions(+) create mode 100644 solidity/contracts/money-market/facets/FlashloanFacet.sol create mode 100644 solidity/contracts/money-market/interfaces/IAlpacaFlashloan.sol create mode 100644 solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol diff --git a/solidity/contracts/money-market/facets/FlashloanFacet.sol b/solidity/contracts/money-market/facets/FlashloanFacet.sol new file mode 100644 index 00000000..bc2f6873 --- /dev/null +++ b/solidity/contracts/money-market/facets/FlashloanFacet.sol @@ -0,0 +1,76 @@ +// SPDX-License-Identifier: BUSL +pragma solidity 0.8.19; + +// libraries +import { LibMoneyMarket01 } from "../libraries/LibMoneyMarket01.sol"; +import { LibSafeToken } from "../libraries/LibSafeToken.sol"; + +// interfaces +import { IAlpacaFlashloan } from "../interfaces/IAlpacaFlashloan.sol"; +import { IERC20 } from "../interfaces/IERC20.sol"; + +contract FlashloanFacet { + using LibSafeToken for IERC20; + + // error + error FlashloanFacet_InvalidToken(address _token); + error FlashloanFacet_NotEnoughToken(uint256 _amount); + error FlashloanFacet_NotEnoughRepay(); + + // external call for using flashloan + function flashloan(address _token, uint256 _amount) external { + // prep + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + + // 1. is market open for this token? (ib token from token) + // Revert if market doesn't exist for `_token` + if (moneyMarketDs.tokenToIbTokens[_token] == address(0)) { + revert FlashloanFacet_InvalidToken(_token); + } + + // 2. token reserve > _amount + if (moneyMarketDs.reserves[_token] < _amount) { + revert FlashloanFacet_NotEnoughToken(_amount); + } + + // TODO: How much fee? + // 3. expected repay = _amount + total fee + uint256 _totalFee = (_amount * 101) / 100; + + // TODO + // 3.5 lender fee = 50 % total fee + uint256 _lenderFee = _totalFee / 2; + // uint256 _repayAmount = _amount + _totalFee; + + // 4. transfer token from xx to msg.sender + // TODO: update state? + // Update the global reserve of the token, as a result less borrowing can be made + + IERC20(_token).safeTransfer(msg.sender, _amount); + + // balance before + uint256 _balanceBefore = IERC20(_token).balanceOf(address(this)); + + // 5. call AlpacaFlashloanCallback (AlpacaFlashloanCallback must return repay) + IAlpacaFlashloan(msg.sender).AlpacaFlashloanCallback(); + // TODO: update state? + uint256 _balanceAfter = IERC20(_token).balanceOf(address(this)); + + // borrow 100 + // fee 5% + // repay = 105 + // 105 >= 100 + 5 + + // 6. repay must be exceed the expected repay (revert if condition is not met) + if (_balanceAfter >= _balanceBefore + _totalFee) { + revert FlashloanFacet_NotEnoughRepay(); + } + + // 7. the excess repay will be added to reserve + // TODO: transfer fee to lender + // IERC20(_token).safeTransfer(msg.sender, _amount); + + // TODO: transfer exceed fee to protocol reserve + // IERC20(_token).safeTransfer(msg.sender, _amount); + } +} diff --git a/solidity/contracts/money-market/interfaces/IAlpacaFlashloan.sol b/solidity/contracts/money-market/interfaces/IAlpacaFlashloan.sol new file mode 100644 index 00000000..1b6c28bb --- /dev/null +++ b/solidity/contracts/money-market/interfaces/IAlpacaFlashloan.sol @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: BUSL +pragma solidity 0.8.19; + +interface IAlpacaFlashloan { + function AlpacaFlashloanCallback() external; +} diff --git a/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol b/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol new file mode 100644 index 00000000..412a9f54 --- /dev/null +++ b/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import { MoneyMarket_BaseTest } from "../MoneyMarket_BaseTest.t.sol"; + +// libs +import { LibMoneyMarket01 } from "../../../contracts/money-market/libraries/LibMoneyMarket01.sol"; + +// interfaces +import { ILendFacet } from "../../../contracts/money-market/interfaces/ILendFacet.sol"; +import { IERC20 } from "../../../contracts/money-market/interfaces/IERC20.sol"; + +contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { + function setUp() public override { + super.setUp(); + } +} From 39c1592c9b849dd0c6a20738e028eb050a2ead81 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Tue, 2 May 2023 15:20:38 +0700 Subject: [PATCH 07/87] feat: init flashload facet --- .../money-market/facets/FlashloanFacet.sol | 55 ++++++++----------- .../interfaces/IAlpacaFlashloan.sol | 2 +- .../interfaces/IFlashloanFacet.sol | 6 ++ 3 files changed, 31 insertions(+), 32 deletions(-) create mode 100644 solidity/contracts/money-market/interfaces/IFlashloanFacet.sol diff --git a/solidity/contracts/money-market/facets/FlashloanFacet.sol b/solidity/contracts/money-market/facets/FlashloanFacet.sol index bc2f6873..7599b978 100644 --- a/solidity/contracts/money-market/facets/FlashloanFacet.sol +++ b/solidity/contracts/money-market/facets/FlashloanFacet.sol @@ -4,12 +4,14 @@ pragma solidity 0.8.19; // libraries import { LibMoneyMarket01 } from "../libraries/LibMoneyMarket01.sol"; import { LibSafeToken } from "../libraries/LibSafeToken.sol"; +import { LibConstant } from "../libraries/LibConstant.sol"; // interfaces +import { IFlashloanFacet } from "../interfaces/IFlashloanFacet.sol"; import { IAlpacaFlashloan } from "../interfaces/IAlpacaFlashloan.sol"; import { IERC20 } from "../interfaces/IERC20.sol"; -contract FlashloanFacet { +contract FlashloanFacet is IFlashloanFacet { using LibSafeToken for IERC20; // error @@ -22,55 +24,46 @@ contract FlashloanFacet { // prep LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + // check if fee is set? + // 1. is market open for this token? (ib token from token) // Revert if market doesn't exist for `_token` if (moneyMarketDs.tokenToIbTokens[_token] == address(0)) { revert FlashloanFacet_InvalidToken(_token); } - // 2. token reserve > _amount + // 2. token reserve > borrow amount if (moneyMarketDs.reserves[_token] < _amount) { revert FlashloanFacet_NotEnoughToken(_amount); } - // TODO: How much fee? - // 3. expected repay = _amount + total fee - uint256 _totalFee = (_amount * 101) / 100; - - // TODO - // 3.5 lender fee = 50 % total fee - uint256 _lenderFee = _totalFee / 2; - // uint256 _repayAmount = _amount + _totalFee; - - // 4. transfer token from xx to msg.sender - // TODO: update state? - // Update the global reserve of the token, as a result less borrowing can be made - - IERC20(_token).safeTransfer(msg.sender, _amount); + // 3. expected fee = (_amount * feeBps) / maxBps + uint256 _expectedFee = (_amount * moneyMarketDs.flashLoanFeeBps) / LibConstant.MAX_BPS; // balance before uint256 _balanceBefore = IERC20(_token).balanceOf(address(this)); + IERC20(_token).safeTransfer(msg.sender, _amount); - // 5. call AlpacaFlashloanCallback (AlpacaFlashloanCallback must return repay) - IAlpacaFlashloan(msg.sender).AlpacaFlashloanCallback(); - // TODO: update state? - uint256 _balanceAfter = IERC20(_token).balanceOf(address(this)); + // 4. call AlpacaFlashloanCallback (AlpacaFlashloanCallback must return repay) + IAlpacaFlashloan(msg.sender).AlpacaFlashloanCallback(_token, _amount); - // borrow 100 - // fee 5% - // repay = 105 - // 105 >= 100 + 5 + // balance after + uint256 _balanceAfter = IERC20(_token).balanceOf(address(this)); - // 6. repay must be exceed the expected repay (revert if condition is not met) - if (_balanceAfter >= _balanceBefore + _totalFee) { + // 5. repay must be excess balance before + fee (revert if condition is not met) + if (_balanceAfter <= _balanceBefore + _expectedFee) { revert FlashloanFacet_NotEnoughRepay(); } - // 7. the excess repay will be added to reserve - // TODO: transfer fee to lender - // IERC20(_token).safeTransfer(msg.sender, _amount); + uint256 _actualTotalFee = _balanceAfter - _balanceBefore; + + // 6. 50% of fee add to reserve + uint256 _lenderFee = (_expectedFee * 50) / 100; + + // lender fee (add on reserve) + moneyMarketDs.reserves[_token] += _lenderFee; - // TODO: transfer exceed fee to protocol reserve - // IERC20(_token).safeTransfer(msg.sender, _amount); + // transfer the rest of fee to protocol reserve + moneyMarketDs.protocolReserves[_token] += (_actualTotalFee - _lenderFee); } } diff --git a/solidity/contracts/money-market/interfaces/IAlpacaFlashloan.sol b/solidity/contracts/money-market/interfaces/IAlpacaFlashloan.sol index 1b6c28bb..f0cce176 100644 --- a/solidity/contracts/money-market/interfaces/IAlpacaFlashloan.sol +++ b/solidity/contracts/money-market/interfaces/IAlpacaFlashloan.sol @@ -2,5 +2,5 @@ pragma solidity 0.8.19; interface IAlpacaFlashloan { - function AlpacaFlashloanCallback() external; + function AlpacaFlashloanCallback(address _token, uint256 _amount) external; } diff --git a/solidity/contracts/money-market/interfaces/IFlashloanFacet.sol b/solidity/contracts/money-market/interfaces/IFlashloanFacet.sol new file mode 100644 index 00000000..d1246a0c --- /dev/null +++ b/solidity/contracts/money-market/interfaces/IFlashloanFacet.sol @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: BUSL +pragma solidity 0.8.19; + +interface IFlashloanFacet { + function flashloan(address _token, uint256 _amount) external; +} From e6a11e704945ffe99bf5943211573a2ad8aaa789 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Tue, 2 May 2023 15:21:44 +0700 Subject: [PATCH 08/87] fix: update flashload params on other files --- .../deployments/MoneyMarket/config/SetFees.s.sol | 3 ++- .../libraries/LibMoneyMarketDeployment.sol | 16 +++++++++++++++- script/utilities/SetMoneyMarketConfigs.s.sol | 6 ++++-- .../contracts/money-market/facets/AdminFacet.sol | 16 ++++++++++++---- .../contracts/money-market/facets/ViewFacet.sol | 5 ++++- .../money-market/interfaces/IAdminFacet.sol | 3 ++- .../money-market/interfaces/IViewFacet.sol | 3 ++- .../money-market/libraries/LibMoneyMarket01.sol | 1 + .../money-market/MoneyMarket_BaseTest.t.sol | 7 +++++-- .../MoneyMarket_AccrueInterest_Borrow.t.sol | 2 +- 10 files changed, 48 insertions(+), 14 deletions(-) diff --git a/script/deployments/MoneyMarket/config/SetFees.s.sol b/script/deployments/MoneyMarket/config/SetFees.s.sol index d0f948c8..ef347c7d 100644 --- a/script/deployments/MoneyMarket/config/SetFees.s.sol +++ b/script/deployments/MoneyMarket/config/SetFees.s.sol @@ -20,11 +20,12 @@ contract SetFeesScript is BaseScript { uint16 _newLendingFeeBps = 1900; uint16 _newRepurchaseFeeBps = 500; uint16 _newLiquidationFeeBps = 500; + uint16 _newFlashLoanFeeBps = 500; //---- execution ----// _startDeployerBroadcast(); - moneyMarket.setFees(_newLendingFeeBps, _newRepurchaseFeeBps, _newLiquidationFeeBps); + moneyMarket.setFees(_newLendingFeeBps, _newRepurchaseFeeBps, _newLiquidationFeeBps, _newFlashLoanFeeBps); _stopBroadcast(); } diff --git a/script/deployments/libraries/LibMoneyMarketDeployment.sol b/script/deployments/libraries/LibMoneyMarketDeployment.sol index f7db21e4..e0a65fa6 100644 --- a/script/deployments/libraries/LibMoneyMarketDeployment.sol +++ b/script/deployments/libraries/LibMoneyMarketDeployment.sol @@ -15,6 +15,7 @@ import { INonCollatBorrowFacet } from "solidity/contracts/money-market/interface import { IAdminFacet } from "solidity/contracts/money-market/interfaces/IAdminFacet.sol"; import { ILiquidationFacet } from "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol"; import { IMMOwnershipFacet } from "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol"; +import { IFlashloanFacet } from "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol"; library LibMoneyMarketDeployment { VM internal constant vm = VM(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D); @@ -29,6 +30,7 @@ library LibMoneyMarketDeployment { address adminFacet; address liquidationFacet; address ownershipFacet; + address flashloanFacet; } function deployMoneyMarketDiamond(address _miniFL) @@ -70,6 +72,7 @@ library LibMoneyMarketDeployment { _facetAddresses.adminFacet = deployContract("./out/AdminFacet.sol/AdminFacet.json"); _facetAddresses.liquidationFacet = deployContract("./out/LiquidationFacet.sol/LiquidationFacet.json"); _facetAddresses.ownershipFacet = deployContract("./out/MMOwnershipFacet.sol/MMOwnershipFacet.json"); + _facetAddresses.flashloanFacet = deployContract("./out/FlashloanFacet.sol/FlashloanFacet.json"); } function deployContract(string memory _path) internal returns (address _deployedAddress) { @@ -94,9 +97,10 @@ library LibMoneyMarketDeployment { bytes4[] memory _adminFacetSelectors = getAdminFacetSelectors(); bytes4[] memory _liquidationFacetSelectors = getLiquidationFacetSelectors(); bytes4[] memory _ownershipFacetSelectors = getOwnershipFacetSelectors(); + bytes4[] memory _flashloanFacetSelectors = getFlashloanFacetSelectors(); // prepare FacetCuts - IMMDiamondCut.FacetCut[] memory _facetCuts = new IMMDiamondCut.FacetCut[](9); + IMMDiamondCut.FacetCut[] memory _facetCuts = new IMMDiamondCut.FacetCut[](10); _facetCuts[0] = IMMDiamondCut.FacetCut({ action: IMMDiamondCut.FacetCutAction.Add, facetAddress: _facetAddresses.diamondLoupeFacet, @@ -142,6 +146,11 @@ library LibMoneyMarketDeployment { facetAddress: _facetAddresses.ownershipFacet, functionSelectors: _ownershipFacetSelectors }); + _facetCuts[9] = IMMDiamondCut.FacetCut({ + action: IMMDiamondCut.FacetCutAction.Add, + facetAddress: _facetAddresses.flashloanFacet, + functionSelectors: _flashloanFacetSelectors + }); // perform diamond cut on deployed MoneyMarketDiamond // address(0) and empty string means no initialization / cleanup after diamond cut @@ -269,4 +278,9 @@ library LibMoneyMarketDeployment { _selectors[2] = IMMOwnershipFacet.owner.selector; _selectors[3] = IMMOwnershipFacet.pendingOwner.selector; } + + function getFlashloanFacetSelectors() internal pure returns (bytes4[] memory _selectors) { + _selectors = new bytes4[](1); + _selectors[0] = IFlashloanFacet.flashloan.selector; + } } diff --git a/script/utilities/SetMoneyMarketConfigs.s.sol b/script/utilities/SetMoneyMarketConfigs.s.sol index 08c11223..7284a3b4 100644 --- a/script/utilities/SetMoneyMarketConfigs.s.sol +++ b/script/utilities/SetMoneyMarketConfigs.s.sol @@ -44,13 +44,15 @@ contract SetMoneyMarketConfigsScript is BaseUtilsScript { uint16 newLendingFeeBps = 0; uint16 newRepurchaseFeeBps = 0; uint16 newLiquidationFeeBps = 0; + uint16 newFlashLoanFeeBps = 0; //---- execution ----// - moneyMarket.setFees(newLendingFeeBps, newRepurchaseFeeBps, newLiquidationFeeBps); + moneyMarket.setFees(newLendingFeeBps, newRepurchaseFeeBps, newLiquidationFeeBps, newFlashLoanFeeBps); console.log("setFees"); console.log(" newLendingFeeBps :", newLendingFeeBps); console.log(" newRepurchaseFeeBps :", newRepurchaseFeeBps); - console.log(" newLiquidationFeeBps :", newLiquidationFeeBps, "\n"); + console.log(" newLiquidationFeeBps :", newLiquidationFeeBps); + console.log(" newFlashLoanFeeBps :", newFlashLoanFeeBps, "\n"); // // setTreasury diff --git a/solidity/contracts/money-market/facets/AdminFacet.sol b/solidity/contracts/money-market/facets/AdminFacet.sol index 4ea62c25..ed9c22fa 100644 --- a/solidity/contracts/money-market/facets/AdminFacet.sol +++ b/solidity/contracts/money-market/facets/AdminFacet.sol @@ -41,7 +41,12 @@ contract AdminFacet is IAdminFacet { event LogSetRiskManagerOk(address indexed _account, bool isOk); event LogSetAccountManagerOk(address indexed _manager, bool isOk); event LogSetLiquidationTreasury(address indexed _treasury); - event LogSetFees(uint256 _lendingFeeBps, uint256 _repurchaseFeeBps, uint256 _liquidationFeeBps); + event LogSetFees( + uint256 _lendingFeeBps, + uint256 _repurchaseFeeBps, + uint256 _liquidationFeeBps, + uint16 _flashLoanFeeBps + ); event LogSetRepurchaseRewardModel(IFeeModel indexed _repurchaseRewardModel); event LogSetIbTokenImplementation(address indexed _newImplementation); event LogSetDebtTokenImplementation(address indexed _newImplementation); @@ -364,13 +369,15 @@ contract AdminFacet is IAdminFacet { function setFees( uint16 _newLendingFeeBps, uint16 _newRepurchaseFeeBps, - uint16 _newLiquidationFeeBps + uint16 _newLiquidationFeeBps, + uint16 _newflashLoanFeeBps ) external onlyOwner { // Revert if fees exceed max bps if ( _newLendingFeeBps > LibConstant.MAX_BPS || _newRepurchaseFeeBps > LibConstant.MAX_BPS || - _newLiquidationFeeBps > LibConstant.MAX_BPS + _newLiquidationFeeBps > LibConstant.MAX_BPS || + _newflashLoanFeeBps > LibConstant.MAX_BPS ) { revert AdminFacet_InvalidArguments(); } @@ -381,8 +388,9 @@ contract AdminFacet is IAdminFacet { moneyMarketDs.lendingFeeBps = _newLendingFeeBps; moneyMarketDs.repurchaseFeeBps = _newRepurchaseFeeBps; moneyMarketDs.liquidationFeeBps = _newLiquidationFeeBps; + moneyMarketDs.flashLoanFeeBps = _newflashLoanFeeBps; - emit LogSetFees(_newLendingFeeBps, _newRepurchaseFeeBps, _newLiquidationFeeBps); + emit LogSetFees(_newLendingFeeBps, _newRepurchaseFeeBps, _newLiquidationFeeBps, _newflashLoanFeeBps); } /// @notice Set the repurchase reward model for a token specifically to over collateralized borrowing diff --git a/solidity/contracts/money-market/facets/ViewFacet.sol b/solidity/contracts/money-market/facets/ViewFacet.sol index 329da879..0707449f 100644 --- a/solidity/contracts/money-market/facets/ViewFacet.sol +++ b/solidity/contracts/money-market/facets/ViewFacet.sol @@ -401,19 +401,22 @@ contract ViewFacet is IViewFacet { /// @return _lendingFeeBps The lending fee imposed on interest collected /// @return _repurchaseFeeBps The repurchase fee collected by the protocol /// @return _liquidationFeeBps The total fee from liquidation + /// @return _flashLoanFeeBps The flashloan fee collected by the protocol function getFeeParams() external view returns ( uint16 _lendingFeeBps, uint16 _repurchaseFeeBps, - uint16 _liquidationFeeBps + uint16 _liquidationFeeBps, + uint16 _flashLoanFeeBps ) { LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); _lendingFeeBps = moneyMarketDs.lendingFeeBps; _repurchaseFeeBps = moneyMarketDs.repurchaseFeeBps; _liquidationFeeBps = moneyMarketDs.liquidationFeeBps; + _flashLoanFeeBps = moneyMarketDs.flashLoanFeeBps; } /// @notice Get the address of repurchase reward model diff --git a/solidity/contracts/money-market/interfaces/IAdminFacet.sol b/solidity/contracts/money-market/interfaces/IAdminFacet.sol index 0a7d15c8..a837d8b4 100644 --- a/solidity/contracts/money-market/interfaces/IAdminFacet.sol +++ b/solidity/contracts/money-market/interfaces/IAdminFacet.sol @@ -82,7 +82,8 @@ interface IAdminFacet { function setFees( uint16 _newLendingFeeBps, uint16 _newRepurchaseFeeBps, - uint16 _newLiquidationFeeBps + uint16 _newLiquidationFeeBps, + uint16 _newflashLoanFeeBps ) external; function setRepurchaseRewardModel(IFeeModel _newRepurchaseRewardModel) external; diff --git a/solidity/contracts/money-market/interfaces/IViewFacet.sol b/solidity/contracts/money-market/interfaces/IViewFacet.sol index af6924ad..6bfefa84 100644 --- a/solidity/contracts/money-market/interfaces/IViewFacet.sol +++ b/solidity/contracts/money-market/interfaces/IViewFacet.sol @@ -112,7 +112,8 @@ interface IViewFacet { returns ( uint16 _lendingFeeBps, uint16 _repurchaseFeeBps, - uint16 _liquidationFeeBps + uint16 _liquidationFeeBps, + uint16 _flashLoanFeeBps ); function getRepurchaseRewardModel() external view returns (address); diff --git a/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol b/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol index 3bb8a1b1..daa109a7 100644 --- a/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol +++ b/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol @@ -150,6 +150,7 @@ library LibMoneyMarket01 { uint16 lendingFeeBps; // fee that is charged from lending interest by protocol, goes to protocolReserve uint16 repurchaseFeeBps; // fee that is charged during repurchase by protocol, goes to liquidationTreasury uint16 liquidationFeeBps; // fee that is charged during liquidation by protocol, goes to liquidationTreasury + uint16 flashLoanFeeBps; // fee that is charged when providing the flashloan, 50% for protocolReserve, another 50% for reserve } /// @dev Get money market storage diff --git a/solidity/tests/money-market/MoneyMarket_BaseTest.t.sol b/solidity/tests/money-market/MoneyMarket_BaseTest.t.sol index 062166bc..d93ba4e7 100644 --- a/solidity/tests/money-market/MoneyMarket_BaseTest.t.sol +++ b/solidity/tests/money-market/MoneyMarket_BaseTest.t.sol @@ -17,6 +17,7 @@ import { INonCollatBorrowFacet } from "../../contracts/money-market/interfaces/I import { ILiquidationFacet } from "../../contracts/money-market/interfaces/ILiquidationFacet.sol"; import { IMMOwnershipFacet } from "../../contracts/money-market/interfaces/IMMOwnershipFacet.sol"; import { IMoneyMarketAccountManager } from "../../contracts/interfaces/IMoneyMarketAccountManager.sol"; +import { IFlashloanFacet } from "../../contracts/money-market/interfaces/IFlashloanFacet.sol"; import { IERC20 } from "../../contracts/money-market/interfaces/IERC20.sol"; // mocks @@ -44,6 +45,7 @@ abstract contract MoneyMarket_BaseTest is BaseTest { INonCollatBorrowFacet internal nonCollatBorrowFacet; ILiquidationFacet internal liquidationFacet; IMMOwnershipFacet internal MMOwnershipFacet; + IFlashloanFacet internal flashloanFacet; MockAlpacaV2Oracle internal mockOracle; @@ -60,6 +62,7 @@ abstract contract MoneyMarket_BaseTest is BaseTest { nonCollatBorrowFacet = INonCollatBorrowFacet(moneyMarketDiamond); liquidationFacet = ILiquidationFacet(moneyMarketDiamond); MMOwnershipFacet = IMMOwnershipFacet(moneyMarketDiamond); + flashloanFacet = IFlashloanFacet(moneyMarketDiamond); address[] memory _whitelistedCallers = new address[](1); _whitelistedCallers[0] = moneyMarketDiamond; @@ -222,9 +225,9 @@ abstract contract MoneyMarket_BaseTest is BaseTest { adminFacet.setLiquidationTreasury(liquidationTreasury); - // adminFacet.setFees(_newLendingFeeBps, _newRepurchaseFeeBps, _newLiquidationFeeBps); + // adminFacet.setFees(_newLendingFeeBps, _newRepurchaseFeeBps, _newLiquidationFeeBps, _newflashLoanFeeBps); - adminFacet.setFees(0, 100, 100); + adminFacet.setFees(0, 100, 100, 100); // set liquidation params: maxLiquidate 50%, liquidationThreshold 111.11% adminFacet.setLiquidationParams(5000, 11111); diff --git a/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol b/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol index 36200447..00f41913 100644 --- a/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol +++ b/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol @@ -371,7 +371,7 @@ contract MoneyMarket_AccrueInterest_Borrow is MoneyMarket_BaseTest { function testCorrectness_WhenAccrueInterestAndThereIsLendingFee_ProtocolShouldGetRevenue() external { // set lending fee to 100 bps - adminFacet.setFees(100, 0, 0); + adminFacet.setFees(100, 0, 0, 0); uint256 _actualInterest = viewFacet.getGlobalPendingInterest(address(weth)); assertEq(_actualInterest, 0); From bbf07581ef883e75f1918373356e9a5b0668d8a7 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Tue, 2 May 2023 15:22:03 +0700 Subject: [PATCH 09/87] test: add flashloan tests --- .../flashloan/MoneyMarket_Flashloan.t.sol | 46 ++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol b/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol index 412a9f54..c4de29d2 100644 --- a/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol +++ b/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.19; -import { MoneyMarket_BaseTest } from "../MoneyMarket_BaseTest.t.sol"; +import { MoneyMarket_BaseTest, console } from "../MoneyMarket_BaseTest.t.sol"; // libs import { LibMoneyMarket01 } from "../../../contracts/money-market/libraries/LibMoneyMarket01.sol"; @@ -10,8 +10,52 @@ import { LibMoneyMarket01 } from "../../../contracts/money-market/libraries/LibM import { ILendFacet } from "../../../contracts/money-market/interfaces/ILendFacet.sol"; import { IERC20 } from "../../../contracts/money-market/interfaces/IERC20.sol"; +// mock +import { MockFlashloan } from "./MockFlashloan.sol"; + contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { + MockFlashloan internal mockFlashloan; + function setUp() public override { super.setUp(); + + // pool must have reserve + + mockFlashloan = new MockFlashloan(); + + // usdc.mint(moneyMarketDiamond, normalizeEther(1000 ether, usdcDecimal)); + vm.prank(ALICE); + uint256 _depositAmount = normalizeEther(10 ether, usdcDecimal); + accountManager.deposit(address(usdc), _depositAmount); } + + // test flashloan work correctly + // - user balance is deducted correctly + // - reserve increase correctly + // - protocol reserve increase correctly + function testCorrectness_WhenUserCallFlashloan_ShouldWork() external { + uint256 _AliceBalanceBefore = usdc.balanceOf(ALICE); + uint256 _flashloanAmount = normalizeEther(1 ether, usdcDecimal); + + // deposit to + vm.startPrank(ALICE); + usdc.transfer(address(mockFlashloan), _flashloanAmount * 3); + vm.stopPrank(); + + vm.startPrank(address(mockFlashloan)); + mockFlashloan.flash(moneyMarketDiamond, address(usdc), _flashloanAmount); + vm.stopPrank(); + uint256 _AliceBalanceAfter = usdc.balanceOf(ALICE); + + assertLt(_AliceBalanceAfter, _AliceBalanceBefore, "ALICE USDC balance"); + } + + // test if repay excess the expected fee (should work) + function testCorrectness_WhenUserRepayGreaterThanExpectedFee_ShouldWork() external {} + + // test if repay less than the expected fee (should revert) + function testRevert_WhenUserRepayLessThanExpectedFee_ShouldRevert() external {} + + // test if token is not available for flashloan (should revert) + function testRevert_WhenUserFlashloanOnNonExistingToken_ShouldRevert() external {} } From 11074e43240b435556593b247c7de3a1c8597f21 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Tue, 2 May 2023 15:22:24 +0700 Subject: [PATCH 10/87] test: add flashload tests --- .../money-market/flashloan/MockFlashloan.sol | 20 +++++++++++++++++++ .../MoneyMarket_Liquidation_Repurchase.t.sol | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 solidity/tests/money-market/flashloan/MockFlashloan.sol diff --git a/solidity/tests/money-market/flashloan/MockFlashloan.sol b/solidity/tests/money-market/flashloan/MockFlashloan.sol new file mode 100644 index 00000000..02099569 --- /dev/null +++ b/solidity/tests/money-market/flashloan/MockFlashloan.sol @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import { IAlpacaFlashloan } from "../../../contracts/money-market/interfaces/IAlpacaFlashloan.sol"; +import { IFlashloanFacet } from "../../../contracts/money-market/interfaces/IFlashloanFacet.sol"; +import { IERC20 } from "../../../contracts/money-market/interfaces/IERC20.sol"; + +contract MockFlashloan is IAlpacaFlashloan { + function flash( + address _flashloanRouter, + address _token, + uint256 _amount + ) external { + IFlashloanFacet(_flashloanRouter).flashloan(_token, _amount); + } + + function AlpacaFlashloanCallback(address _token, uint256 _amount) external { + IERC20(_token).transfer(msg.sender, _amount * 2); + } +} diff --git a/solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_Repurchase.t.sol b/solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_Repurchase.t.sol index bc06e94e..bca20d7a 100644 --- a/solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_Repurchase.t.sol +++ b/solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_Repurchase.t.sol @@ -53,7 +53,7 @@ contract MoneyMarket_Liquidation_RepurchaseTest is MoneyMarket_BaseTest { }); adminFacet.setTokenConfigs(_tokens, _tokenConfigInputs); // 10% repurchase fee - adminFacet.setFees(0, REPURCHASE_FEE, 0); + adminFacet.setFees(0, REPURCHASE_FEE, 0, 0); // 1% repurchase reward (hard-coded in FixedFeeModel100Bps) FixedFeeModel100Bps fixedFeeModel = new FixedFeeModel100Bps(); adminFacet.setRepurchaseRewardModel(fixedFeeModel); From 95d25593a20ca686b4411f1ba3215c1e3c263412 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Tue, 2 May 2023 16:15:23 +0700 Subject: [PATCH 11/87] fix: use unchecked --- .../money-market/facets/FlashloanFacet.sol | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/solidity/contracts/money-market/facets/FlashloanFacet.sol b/solidity/contracts/money-market/facets/FlashloanFacet.sol index 7599b978..e97f3616 100644 --- a/solidity/contracts/money-market/facets/FlashloanFacet.sol +++ b/solidity/contracts/money-market/facets/FlashloanFacet.sol @@ -50,8 +50,8 @@ contract FlashloanFacet is IFlashloanFacet { // balance after uint256 _balanceAfter = IERC20(_token).balanceOf(address(this)); - // 5. repay must be excess balance before + fee (revert if condition is not met) - if (_balanceAfter <= _balanceBefore + _expectedFee) { + // 5. revert if after - before < fee + if (_balanceAfter - _balanceBefore < _expectedFee) { revert FlashloanFacet_NotEnoughRepay(); } @@ -59,11 +59,11 @@ contract FlashloanFacet is IFlashloanFacet { // 6. 50% of fee add to reserve uint256 _lenderFee = (_expectedFee * 50) / 100; - - // lender fee (add on reserve) - moneyMarketDs.reserves[_token] += _lenderFee; - - // transfer the rest of fee to protocol reserve - moneyMarketDs.protocolReserves[_token] += (_actualTotalFee - _lenderFee); + unchecked { + // lender fee (add on reserve) + moneyMarketDs.reserves[_token] += _actualTotalFee; + // transfer the rest of fee to protocol reserve + moneyMarketDs.protocolReserves[_token] += _actualTotalFee - _lenderFee; + } } } From ad7c7775ea7aefd80ebfb6418fdcfce331e82f48 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Tue, 2 May 2023 16:16:28 +0700 Subject: [PATCH 12/87] test: test reserve --- .../flashloan/MoneyMarket_Flashloan.t.sol | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol b/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol index c4de29d2..aa6af62a 100644 --- a/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol +++ b/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol @@ -5,6 +5,7 @@ import { MoneyMarket_BaseTest, console } from "../MoneyMarket_BaseTest.t.sol"; // libs import { LibMoneyMarket01 } from "../../../contracts/money-market/libraries/LibMoneyMarket01.sol"; +import { LibConstant } from "../../../contracts/money-market/libraries/LibConstant.sol"; // interfaces import { ILendFacet } from "../../../contracts/money-market/interfaces/ILendFacet.sol"; @@ -34,20 +35,33 @@ contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { // - reserve increase correctly // - protocol reserve increase correctly function testCorrectness_WhenUserCallFlashloan_ShouldWork() external { - uint256 _AliceBalanceBefore = usdc.balanceOf(ALICE); + // uint256 _AliceBalanceBefore = usdc.balanceOf(ALICE); uint256 _flashloanAmount = normalizeEther(1 ether, usdcDecimal); + (, , , uint16 _flashloanFee) = viewFacet.getFeeParams(); + + uint256 _expectedFee = (_flashloanAmount * _flashloanFee) / LibConstant.MAX_BPS; + + uint256 _reserveBefore = viewFacet.getTotalToken(address(usdc)); // deposit to vm.startPrank(ALICE); usdc.transfer(address(mockFlashloan), _flashloanAmount * 3); vm.stopPrank(); + uint256 _mockFlashloanBalanceBefore = usdc.balanceOf(address(mockFlashloan)); + vm.startPrank(address(mockFlashloan)); mockFlashloan.flash(moneyMarketDiamond, address(usdc), _flashloanAmount); vm.stopPrank(); - uint256 _AliceBalanceAfter = usdc.balanceOf(ALICE); + // uint256 _AliceBalanceAfter = usdc.balanceOf(ALICE); + uint256 _mockFlashloanBalanceAfter = usdc.balanceOf(address(mockFlashloan)); + + // - user balance is deducted correctly + assertLt(_mockFlashloanBalanceAfter, _mockFlashloanBalanceBefore, "mockFlashloan USDC balance"); - assertLt(_AliceBalanceAfter, _AliceBalanceBefore, "ALICE USDC balance"); + // - reserve increase correctly + uint256 _reserveAfter = viewFacet.getTotalToken(address(usdc)); + // assertEq(_reserveAfter, _reserveBefore + _expectedFee, "Reserve"); } // test if repay excess the expected fee (should work) From 1e8dc792e5aa5108cadf6afda4e5e901e8fb5471 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Wed, 3 May 2023 11:35:56 +0700 Subject: [PATCH 13/87] fix: rename and make it stand-alone function --- .../MoneyMarket/config/SetFees.s.sol | 3 +- .../libraries/LibMoneyMarketDeployment.sol | 6 ++-- script/utilities/SetMoneyMarketConfigs.s.sol | 6 ++-- .../money-market/facets/AdminFacet.sol | 32 ++++++++++++------- .../money-market/facets/ViewFacet.sol | 14 +++++--- .../money-market/interfaces/IAdminFacet.sol | 5 +-- .../interfaces/IAlpacaFlashloan.sol | 6 ---- .../interfaces/IAlpacaFlashloanCallback.sol | 12 +++++++ .../money-market/interfaces/IViewFacet.sol | 5 +-- .../libraries/LibMoneyMarket01.sol | 3 +- .../MoneyMarket_AccrueInterest_Borrow.t.sol | 2 +- .../MoneyMarket_Liquidation_Repurchase.t.sol | 2 +- 12 files changed, 59 insertions(+), 37 deletions(-) delete mode 100644 solidity/contracts/money-market/interfaces/IAlpacaFlashloan.sol create mode 100644 solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol diff --git a/script/deployments/MoneyMarket/config/SetFees.s.sol b/script/deployments/MoneyMarket/config/SetFees.s.sol index ef347c7d..d0f948c8 100644 --- a/script/deployments/MoneyMarket/config/SetFees.s.sol +++ b/script/deployments/MoneyMarket/config/SetFees.s.sol @@ -20,12 +20,11 @@ contract SetFeesScript is BaseScript { uint16 _newLendingFeeBps = 1900; uint16 _newRepurchaseFeeBps = 500; uint16 _newLiquidationFeeBps = 500; - uint16 _newFlashLoanFeeBps = 500; //---- execution ----// _startDeployerBroadcast(); - moneyMarket.setFees(_newLendingFeeBps, _newRepurchaseFeeBps, _newLiquidationFeeBps, _newFlashLoanFeeBps); + moneyMarket.setFees(_newLendingFeeBps, _newRepurchaseFeeBps, _newLiquidationFeeBps); _stopBroadcast(); } diff --git a/script/deployments/libraries/LibMoneyMarketDeployment.sol b/script/deployments/libraries/LibMoneyMarketDeployment.sol index e0a65fa6..029c9f4e 100644 --- a/script/deployments/libraries/LibMoneyMarketDeployment.sol +++ b/script/deployments/libraries/LibMoneyMarketDeployment.sol @@ -166,7 +166,7 @@ library LibMoneyMarketDeployment { } function getViewFacetSelectors() internal pure returns (bytes4[] memory _selectors) { - _selectors = new bytes4[](42); + _selectors = new bytes4[](43); _selectors[0] = IViewFacet.getProtocolReserve.selector; _selectors[1] = IViewFacet.getTokenConfig.selector; _selectors[2] = IViewFacet.getOverCollatDebtSharesOf.selector; @@ -209,6 +209,7 @@ library LibMoneyMarketDeployment { _selectors[39] = IViewFacet.getOverCollatPendingInterest.selector; _selectors[40] = IViewFacet.getOverCollatInterestModel.selector; _selectors[41] = IViewFacet.getOverCollatInterestRate.selector; + _selectors[42] = IViewFacet.getFlashloanFeeParams.selector; } function getLendFacetSelectors() internal pure returns (bytes4[] memory _selectors) { @@ -239,7 +240,7 @@ library LibMoneyMarketDeployment { } function getAdminFacetSelectors() internal pure returns (bytes4[] memory _selectors) { - _selectors = new bytes4[](23); + _selectors = new bytes4[](24); _selectors[0] = IAdminFacet.openMarket.selector; _selectors[1] = IAdminFacet.setTokenConfigs.selector; _selectors[2] = IAdminFacet.setNonCollatBorrowerOk.selector; @@ -263,6 +264,7 @@ library LibMoneyMarketDeployment { _selectors[20] = IAdminFacet.setAccountManagersOk.selector; _selectors[21] = IAdminFacet.setTokenMaximumCapacities.selector; _selectors[22] = IAdminFacet.setRiskManagersOk.selector; + _selectors[23] = IAdminFacet.setFlashloanFees.selector; } function getLiquidationFacetSelectors() internal pure returns (bytes4[] memory _selectors) { diff --git a/script/utilities/SetMoneyMarketConfigs.s.sol b/script/utilities/SetMoneyMarketConfigs.s.sol index 7284a3b4..08c11223 100644 --- a/script/utilities/SetMoneyMarketConfigs.s.sol +++ b/script/utilities/SetMoneyMarketConfigs.s.sol @@ -44,15 +44,13 @@ contract SetMoneyMarketConfigsScript is BaseUtilsScript { uint16 newLendingFeeBps = 0; uint16 newRepurchaseFeeBps = 0; uint16 newLiquidationFeeBps = 0; - uint16 newFlashLoanFeeBps = 0; //---- execution ----// - moneyMarket.setFees(newLendingFeeBps, newRepurchaseFeeBps, newLiquidationFeeBps, newFlashLoanFeeBps); + moneyMarket.setFees(newLendingFeeBps, newRepurchaseFeeBps, newLiquidationFeeBps); console.log("setFees"); console.log(" newLendingFeeBps :", newLendingFeeBps); console.log(" newRepurchaseFeeBps :", newRepurchaseFeeBps); - console.log(" newLiquidationFeeBps :", newLiquidationFeeBps); - console.log(" newFlashLoanFeeBps :", newFlashLoanFeeBps, "\n"); + console.log(" newLiquidationFeeBps :", newLiquidationFeeBps, "\n"); // // setTreasury diff --git a/solidity/contracts/money-market/facets/AdminFacet.sol b/solidity/contracts/money-market/facets/AdminFacet.sol index ed9c22fa..a4b6b40b 100644 --- a/solidity/contracts/money-market/facets/AdminFacet.sol +++ b/solidity/contracts/money-market/facets/AdminFacet.sol @@ -41,12 +41,8 @@ contract AdminFacet is IAdminFacet { event LogSetRiskManagerOk(address indexed _account, bool isOk); event LogSetAccountManagerOk(address indexed _manager, bool isOk); event LogSetLiquidationTreasury(address indexed _treasury); - event LogSetFees( - uint256 _lendingFeeBps, - uint256 _repurchaseFeeBps, - uint256 _liquidationFeeBps, - uint16 _flashLoanFeeBps - ); + event LogSetFees(uint256 _lendingFeeBps, uint256 _repurchaseFeeBps, uint256 _liquidationFeeBps); + event LogSetFlashloanFees(uint256 _flashloanFeeBps, uint256 _lenderFlashloanBps); event LogSetRepurchaseRewardModel(IFeeModel indexed _repurchaseRewardModel); event LogSetIbTokenImplementation(address indexed _newImplementation); event LogSetDebtTokenImplementation(address indexed _newImplementation); @@ -369,15 +365,13 @@ contract AdminFacet is IAdminFacet { function setFees( uint16 _newLendingFeeBps, uint16 _newRepurchaseFeeBps, - uint16 _newLiquidationFeeBps, - uint16 _newflashLoanFeeBps + uint16 _newLiquidationFeeBps ) external onlyOwner { // Revert if fees exceed max bps if ( _newLendingFeeBps > LibConstant.MAX_BPS || _newRepurchaseFeeBps > LibConstant.MAX_BPS || - _newLiquidationFeeBps > LibConstant.MAX_BPS || - _newflashLoanFeeBps > LibConstant.MAX_BPS + _newLiquidationFeeBps > LibConstant.MAX_BPS ) { revert AdminFacet_InvalidArguments(); } @@ -388,9 +382,23 @@ contract AdminFacet is IAdminFacet { moneyMarketDs.lendingFeeBps = _newLendingFeeBps; moneyMarketDs.repurchaseFeeBps = _newRepurchaseFeeBps; moneyMarketDs.liquidationFeeBps = _newLiquidationFeeBps; - moneyMarketDs.flashLoanFeeBps = _newflashLoanFeeBps; - emit LogSetFees(_newLendingFeeBps, _newRepurchaseFeeBps, _newLiquidationFeeBps, _newflashLoanFeeBps); + emit LogSetFees(_newLendingFeeBps, _newRepurchaseFeeBps, _newLiquidationFeeBps); + } + + /// @notice Set lender portion and flashloan fee + /// @param _flashloanFeeBps the flashloan fee collected by protocol + /// @param _lenderFlashloanBps the portion that lender will receive when providing liquidity + function setFlashloanFees(uint16 _flashloanFeeBps, uint16 _lenderFlashloanBps) external onlyOwner { + if (_flashloanFeeBps > LibConstant.MAX_BPS || _lenderFlashloanBps > LibConstant.MAX_BPS) { + revert AdminFacet_InvalidArguments(); + } + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + // Replace existing fees + moneyMarketDs.flashloanFeeBps = _flashloanFeeBps; + moneyMarketDs.lenderFlashloanBps = _lenderFlashloanBps; + + emit LogSetFlashloanFees(_flashloanFeeBps, _lenderFlashloanBps); } /// @notice Set the repurchase reward model for a token specifically to over collateralized borrowing diff --git a/solidity/contracts/money-market/facets/ViewFacet.sol b/solidity/contracts/money-market/facets/ViewFacet.sol index 0707449f..701478a4 100644 --- a/solidity/contracts/money-market/facets/ViewFacet.sol +++ b/solidity/contracts/money-market/facets/ViewFacet.sol @@ -401,22 +401,28 @@ contract ViewFacet is IViewFacet { /// @return _lendingFeeBps The lending fee imposed on interest collected /// @return _repurchaseFeeBps The repurchase fee collected by the protocol /// @return _liquidationFeeBps The total fee from liquidation - /// @return _flashLoanFeeBps The flashloan fee collected by the protocol function getFeeParams() external view returns ( uint16 _lendingFeeBps, uint16 _repurchaseFeeBps, - uint16 _liquidationFeeBps, - uint16 _flashLoanFeeBps + uint16 _liquidationFeeBps ) { LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); _lendingFeeBps = moneyMarketDs.lendingFeeBps; _repurchaseFeeBps = moneyMarketDs.repurchaseFeeBps; _liquidationFeeBps = moneyMarketDs.liquidationFeeBps; - _flashLoanFeeBps = moneyMarketDs.flashLoanFeeBps; + } + + /// @notice Get flashloan fees + /// @return _flashloanFeeBps the flashloan fee collected by protocol + /// @return _lenderFlashloanBps the portion that lender will receive when providing liquidity + function getFlashloanFeeParams() external view returns (uint16 _flashloanFeeBps, uint16 _lenderFlashloanBps) { + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + _flashloanFeeBps = moneyMarketDs.flashloanFeeBps; + _lenderFlashloanBps = moneyMarketDs.lenderFlashloanBps; } /// @notice Get the address of repurchase reward model diff --git a/solidity/contracts/money-market/interfaces/IAdminFacet.sol b/solidity/contracts/money-market/interfaces/IAdminFacet.sol index a837d8b4..27ded863 100644 --- a/solidity/contracts/money-market/interfaces/IAdminFacet.sol +++ b/solidity/contracts/money-market/interfaces/IAdminFacet.sol @@ -82,10 +82,11 @@ interface IAdminFacet { function setFees( uint16 _newLendingFeeBps, uint16 _newRepurchaseFeeBps, - uint16 _newLiquidationFeeBps, - uint16 _newflashLoanFeeBps + uint16 _newLiquidationFeeBps ) external; + function setFlashloanFees(uint16 _flashloanFeeBps, uint16 _lenderFlashloanBps) external; + function setRepurchaseRewardModel(IFeeModel _newRepurchaseRewardModel) external; function setIbTokenImplementation(address _newImplementation) external; diff --git a/solidity/contracts/money-market/interfaces/IAlpacaFlashloan.sol b/solidity/contracts/money-market/interfaces/IAlpacaFlashloan.sol deleted file mode 100644 index f0cce176..00000000 --- a/solidity/contracts/money-market/interfaces/IAlpacaFlashloan.sol +++ /dev/null @@ -1,6 +0,0 @@ -// SPDX-License-Identifier: BUSL -pragma solidity 0.8.19; - -interface IAlpacaFlashloan { - function AlpacaFlashloanCallback(address _token, uint256 _amount) external; -} diff --git a/solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol b/solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol new file mode 100644 index 00000000..8b98c425 --- /dev/null +++ b/solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: BUSL +pragma solidity 0.8.19; + +interface IAlpacaFlashloanCallback { + // @notice Called to `msg.sender` after executing a flashloan via IFlashloanFacet#flashloan. + // TODO: params not confirm yet + function alpacaFlashloanCallback( + address _token, + uint256 _amount, + uint256 _expectedFee + ) external; +} diff --git a/solidity/contracts/money-market/interfaces/IViewFacet.sol b/solidity/contracts/money-market/interfaces/IViewFacet.sol index 6bfefa84..daae62ed 100644 --- a/solidity/contracts/money-market/interfaces/IViewFacet.sol +++ b/solidity/contracts/money-market/interfaces/IViewFacet.sol @@ -112,10 +112,11 @@ interface IViewFacet { returns ( uint16 _lendingFeeBps, uint16 _repurchaseFeeBps, - uint16 _liquidationFeeBps, - uint16 _flashLoanFeeBps + uint16 _liquidationFeeBps ); + function getFlashloanFeeParams() external view returns (uint16 _flashloanFeeBps, uint16 _lenderFlashloanBps); + function getRepurchaseRewardModel() external view returns (address); function getIbTokenImplementation() external view returns (address); diff --git a/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol b/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol index daa109a7..37c6ee59 100644 --- a/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol +++ b/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol @@ -150,7 +150,8 @@ library LibMoneyMarket01 { uint16 lendingFeeBps; // fee that is charged from lending interest by protocol, goes to protocolReserve uint16 repurchaseFeeBps; // fee that is charged during repurchase by protocol, goes to liquidationTreasury uint16 liquidationFeeBps; // fee that is charged during liquidation by protocol, goes to liquidationTreasury - uint16 flashLoanFeeBps; // fee that is charged when providing the flashloan, 50% for protocolReserve, another 50% for reserve + uint16 flashloanFeeBps; // fee that is charged when providing the flashloan, 50% goes to reserve, the rest goes to protocol reserve + uint16 lenderFlashloanBps; // portion that lender will receive when providing the liquidity for flashloan } /// @dev Get money market storage diff --git a/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol b/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol index c0e26655..e061b585 100644 --- a/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol +++ b/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol @@ -369,7 +369,7 @@ contract MoneyMarket_AccrueInterest_Borrow is MoneyMarket_BaseTest { function testCorrectness_WhenAccrueInterestAndThereIsLendingFee_ProtocolShouldGetRevenue() external { // set lending fee to 100 bps - adminFacet.setFees(100, 0, 0, 0); + adminFacet.setFees(100, 0, 0); uint256 _actualInterest = viewFacet.getGlobalPendingInterest(address(weth)); assertEq(_actualInterest, 0); diff --git a/solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_Repurchase.t.sol b/solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_Repurchase.t.sol index bca20d7a..bc06e94e 100644 --- a/solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_Repurchase.t.sol +++ b/solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_Repurchase.t.sol @@ -53,7 +53,7 @@ contract MoneyMarket_Liquidation_RepurchaseTest is MoneyMarket_BaseTest { }); adminFacet.setTokenConfigs(_tokens, _tokenConfigInputs); // 10% repurchase fee - adminFacet.setFees(0, REPURCHASE_FEE, 0, 0); + adminFacet.setFees(0, REPURCHASE_FEE, 0); // 1% repurchase reward (hard-coded in FixedFeeModel100Bps) FixedFeeModel100Bps fixedFeeModel = new FixedFeeModel100Bps(); adminFacet.setRepurchaseRewardModel(fixedFeeModel); From b49339d6746cd1408bb88f5e48a6516bc764b0df Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Wed, 3 May 2023 12:08:33 +0700 Subject: [PATCH 14/87] feat: add reentrancy guard to flashloan --- .../money-market/facets/FlashloanFacet.sol | 66 +++++++++---------- 1 file changed, 31 insertions(+), 35 deletions(-) diff --git a/solidity/contracts/money-market/facets/FlashloanFacet.sol b/solidity/contracts/money-market/facets/FlashloanFacet.sol index e97f3616..832a7a84 100644 --- a/solidity/contracts/money-market/facets/FlashloanFacet.sol +++ b/solidity/contracts/money-market/facets/FlashloanFacet.sol @@ -5,10 +5,11 @@ pragma solidity 0.8.19; import { LibMoneyMarket01 } from "../libraries/LibMoneyMarket01.sol"; import { LibSafeToken } from "../libraries/LibSafeToken.sol"; import { LibConstant } from "../libraries/LibConstant.sol"; +import { LibReentrancyGuard } from "../libraries/LibReentrancyGuard.sol"; // interfaces import { IFlashloanFacet } from "../interfaces/IFlashloanFacet.sol"; -import { IAlpacaFlashloan } from "../interfaces/IAlpacaFlashloan.sol"; +import { IAlpacaFlashloanCallback } from "../interfaces/IAlpacaFlashloanCallback.sol"; import { IERC20 } from "../interfaces/IERC20.sol"; contract FlashloanFacet is IFlashloanFacet { @@ -19,51 +20,46 @@ contract FlashloanFacet is IFlashloanFacet { error FlashloanFacet_NotEnoughToken(uint256 _amount); error FlashloanFacet_NotEnoughRepay(); - // external call for using flashloan - function flashloan(address _token, uint256 _amount) external { - // prep - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - - // check if fee is set? - - // 1. is market open for this token? (ib token from token) - // Revert if market doesn't exist for `_token` - if (moneyMarketDs.tokenToIbTokens[_token] == address(0)) { - revert FlashloanFacet_InvalidToken(_token); - } + modifier nonReentrant() { + LibReentrancyGuard.lock(); + _; + LibReentrancyGuard.unlock(); + } - // 2. token reserve > borrow amount - if (moneyMarketDs.reserves[_token] < _amount) { - revert FlashloanFacet_NotEnoughToken(_amount); - } + /// @notice Receive token0 and/or token1 and pay it back, plus a fee, in the callback + /// @dev The caller of this method receives a callback in the form of IAlpacaFlashloanCallback#alpacaFlashloanCallback + /// @param _token The address of loan token + /// @param _amount The amount of the loan token + /// @param _data Any data to be passed through to the callback + function flashloan( + address _token, + uint256 _amount, + bytes calldata _data + ) external nonReentrant { + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - // 3. expected fee = (_amount * feeBps) / maxBps - uint256 _expectedFee = (_amount * moneyMarketDs.flashLoanFeeBps) / LibConstant.MAX_BPS; + // expected fee = (_amount * feeBps) / maxBps + uint256 _expectedFee = (_amount * moneyMarketDs.flashloanFeeBps) / LibConstant.MAX_BPS; // balance before uint256 _balanceBefore = IERC20(_token).balanceOf(address(this)); IERC20(_token).safeTransfer(msg.sender, _amount); - // 4. call AlpacaFlashloanCallback (AlpacaFlashloanCallback must return repay) - IAlpacaFlashloan(msg.sender).AlpacaFlashloanCallback(_token, _amount); + // call alpacaFlashloanCallback from msg.sender + IAlpacaFlashloanCallback(msg.sender).alpacaFlashloanCallback(_token, _amount + _expectedFee, _data); - // balance after - uint256 _balanceAfter = IERC20(_token).balanceOf(address(this)); - - // 5. revert if after - before < fee - if (_balanceAfter - _balanceBefore < _expectedFee) { + // revert if actual fee < fee + uint256 _actualTotalFee = IERC20(_token).balanceOf(address(this)) - _balanceBefore; + if (_actualTotalFee < _expectedFee) { revert FlashloanFacet_NotEnoughRepay(); } - uint256 _actualTotalFee = _balanceAfter - _balanceBefore; + // 50% of fee add to reserve + uint256 _lenderFee = (_expectedFee * moneyMarketDs.lenderFlashloanBps) / LibConstant.MAX_BPS; - // 6. 50% of fee add to reserve - uint256 _lenderFee = (_expectedFee * 50) / 100; - unchecked { - // lender fee (add on reserve) - moneyMarketDs.reserves[_token] += _actualTotalFee; - // transfer the rest of fee to protocol reserve - moneyMarketDs.protocolReserves[_token] += _actualTotalFee - _lenderFee; - } + // lender fee (add on reserve) + moneyMarketDs.reserves[_token] += _actualTotalFee; + // transfer the rest of fee to protocol reserve + moneyMarketDs.protocolReserves[_token] += _actualTotalFee - _lenderFee; } } From fae2699a263862fe747eb3f5403e988d3c26bafc Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Wed, 3 May 2023 12:08:43 +0700 Subject: [PATCH 15/87] fix: add, revise params and comments --- .../interfaces/IAlpacaFlashloanCallback.sol | 10 ++-- .../interfaces/IFlashloanFacet.sol | 8 ++- .../money-market/MoneyMarket_BaseTest.t.sol | 7 ++- .../money-market/flashloan/MockFlashloan.sol | 28 ++++++--- .../flashloan/MoneyMarket_Flashloan.t.sol | 60 +++++++++++-------- 5 files changed, 75 insertions(+), 38 deletions(-) diff --git a/solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol b/solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol index 8b98c425..fab7b1a9 100644 --- a/solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol +++ b/solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol @@ -2,11 +2,13 @@ pragma solidity 0.8.19; interface IAlpacaFlashloanCallback { - // @notice Called to `msg.sender` after executing a flashloan via IFlashloanFacet#flashloan. - // TODO: params not confirm yet + /// @notice Called to `msg.sender` after executing a flashloan via IFlashloanFacet#flashloan. + /// @param _token The address of loan token + /// @param _repay The atleast amount that msg.sender required for pay back + /// @param _data Any data to be passed through to the callback function alpacaFlashloanCallback( address _token, - uint256 _amount, - uint256 _expectedFee + uint256 _repay, + bytes calldata _data ) external; } diff --git a/solidity/contracts/money-market/interfaces/IFlashloanFacet.sol b/solidity/contracts/money-market/interfaces/IFlashloanFacet.sol index d1246a0c..11821d77 100644 --- a/solidity/contracts/money-market/interfaces/IFlashloanFacet.sol +++ b/solidity/contracts/money-market/interfaces/IFlashloanFacet.sol @@ -2,5 +2,11 @@ pragma solidity 0.8.19; interface IFlashloanFacet { - function flashloan(address _token, uint256 _amount) external; + ///@dev The caller of this method receives a callback in the form of IAlpacaFlashloanCallback#alpacaFlashloanCallback + //@param the confirm yet + function flashloan( + address _token, + uint256 _amount, + bytes calldata _data + ) external; } diff --git a/solidity/tests/money-market/MoneyMarket_BaseTest.t.sol b/solidity/tests/money-market/MoneyMarket_BaseTest.t.sol index d93ba4e7..c0dae256 100644 --- a/solidity/tests/money-market/MoneyMarket_BaseTest.t.sol +++ b/solidity/tests/money-market/MoneyMarket_BaseTest.t.sol @@ -225,9 +225,12 @@ abstract contract MoneyMarket_BaseTest is BaseTest { adminFacet.setLiquidationTreasury(liquidationTreasury); - // adminFacet.setFees(_newLendingFeeBps, _newRepurchaseFeeBps, _newLiquidationFeeBps, _newflashLoanFeeBps); + // adminFacet.setFees(_newLendingFeeBps, _newRepurchaseFeeBps, _newLiquidationFeeBps, _newflashloanFeeBps); - adminFacet.setFees(0, 100, 100, 100); + adminFacet.setFees(0, 100, 100); + + // adminFacet.setFlashloanFees(_flashloanFeeBps, _lenderFlashloanBps); + adminFacet.setFlashloanFees(500, 5000); // set liquidation params: maxLiquidate 50%, liquidationThreshold 111.11% adminFacet.setLiquidationParams(5000, 11111); diff --git a/solidity/tests/money-market/flashloan/MockFlashloan.sol b/solidity/tests/money-market/flashloan/MockFlashloan.sol index 02099569..0bab3961 100644 --- a/solidity/tests/money-market/flashloan/MockFlashloan.sol +++ b/solidity/tests/money-market/flashloan/MockFlashloan.sol @@ -1,20 +1,34 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.19; -import { IAlpacaFlashloan } from "../../../contracts/money-market/interfaces/IAlpacaFlashloan.sol"; +import { IAlpacaFlashloanCallback } from "../../../contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol"; import { IFlashloanFacet } from "../../../contracts/money-market/interfaces/IFlashloanFacet.sol"; import { IERC20 } from "../../../contracts/money-market/interfaces/IERC20.sol"; -contract MockFlashloan is IAlpacaFlashloan { +contract MockFlashloan is IAlpacaFlashloanCallback { + IFlashloanFacet internal immutable flashloanRouter; + + constructor(address _flashloanRouter) { + flashloanRouter = IFlashloanFacet(_flashloanRouter); + } + function flash( - address _flashloanRouter, address _token, - uint256 _amount + uint256 _amount, + bytes calldata _data ) external { - IFlashloanFacet(_flashloanRouter).flashloan(_token, _amount); + flashloanRouter.flashloan(_token, _amount, _data); } - function AlpacaFlashloanCallback(address _token, uint256 _amount) external { - IERC20(_token).transfer(msg.sender, _amount * 2); + function alpacaFlashloanCallback( + address _token, + uint256 _repay, + bytes calldata _data + ) external { + uint256 _extraFee; + if (_data.length > 0) { + _extraFee = abi.decode(_data, (uint256)); + } + IERC20(_token).transfer(msg.sender, _repay + _extraFee); } } diff --git a/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol b/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol index aa6af62a..83ec78cc 100644 --- a/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol +++ b/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol @@ -20,11 +20,11 @@ contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { function setUp() public override { super.setUp(); - // pool must have reserve + mockFlashloan = new MockFlashloan(moneyMarketDiamond); + // add 5 usdc to mock flashloan contract + usdc.mint(address(mockFlashloan), normalizeEther(5 ether, usdcDecimal)); - mockFlashloan = new MockFlashloan(); - - // usdc.mint(moneyMarketDiamond, normalizeEther(1000 ether, usdcDecimal)); + // add 10 USDC to moneymarket's reserve vm.prank(ALICE); uint256 _depositAmount = normalizeEther(10 ether, usdcDecimal); accountManager.deposit(address(usdc), _depositAmount); @@ -35,41 +35,53 @@ contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { // - reserve increase correctly // - protocol reserve increase correctly function testCorrectness_WhenUserCallFlashloan_ShouldWork() external { - // uint256 _AliceBalanceBefore = usdc.balanceOf(ALICE); + // Fee calculation: + // ============================= + // fee = 5% of amount + // flashloan amount: 1 USDC + // fee = 1 USDC * 5% = 0.05 USDC + // Contract: 5 USDC + // After call flashloan = balance - fee from flashloan + // = 5 - (1 * 5%) = 4.95 USDC + + // Reserve calculation: + // ============================= + // Market reserve: 10 USDC + // After call flashloan, reserve = current reserve + (50% of fee from flashloan's amount) + // reserve = 10 + (1 * 5%/2) = 10 + (0.05/2) = 10.025 USDC + // protocol reserve = 0.025 USDC + + // flashloan 1 usdc uint256 _flashloanAmount = normalizeEther(1 ether, usdcDecimal); - (, , , uint16 _flashloanFee) = viewFacet.getFeeParams(); - - uint256 _expectedFee = (_flashloanAmount * _flashloanFee) / LibConstant.MAX_BPS; - - uint256 _reserveBefore = viewFacet.getTotalToken(address(usdc)); - - // deposit to - vm.startPrank(ALICE); - usdc.transfer(address(mockFlashloan), _flashloanAmount * 3); - vm.stopPrank(); - - uint256 _mockFlashloanBalanceBefore = usdc.balanceOf(address(mockFlashloan)); + // call flashloan with 1 usdc vm.startPrank(address(mockFlashloan)); - mockFlashloan.flash(moneyMarketDiamond, address(usdc), _flashloanAmount); + mockFlashloan.flash(address(usdc), _flashloanAmount, ""); vm.stopPrank(); - // uint256 _AliceBalanceAfter = usdc.balanceOf(ALICE); + + // mock flashloan contract should have 5 - (1 * fee) = 4.95 usdc uint256 _mockFlashloanBalanceAfter = usdc.balanceOf(address(mockFlashloan)); // - user balance is deducted correctly - assertLt(_mockFlashloanBalanceAfter, _mockFlashloanBalanceBefore, "mockFlashloan USDC balance"); + assertEq(_mockFlashloanBalanceAfter, normalizeEther(4.95 ether, usdcDecimal), "mockFlashloan USDC balance"); // - reserve increase correctly uint256 _reserveAfter = viewFacet.getTotalToken(address(usdc)); - // assertEq(_reserveAfter, _reserveBefore + _expectedFee, "Reserve"); + assertEq(_reserveAfter, normalizeEther(10.025 ether, usdcDecimal), "Reserve"); } // test if repay excess the expected fee (should work) - function testCorrectness_WhenUserRepayGreaterThanExpectedFee_ShouldWork() external {} + function testCorrectness_WhenContractRepayGreaterThanExpectedFee_ShouldWork() external {} // test if repay less than the expected fee (should revert) - function testRevert_WhenUserRepayLessThanExpectedFee_ShouldRevert() external {} + function testRevert_WhenContractRepayLessThanExpectedFee_ShouldRevert() external {} // test if token is not available for flashloan (should revert) - function testRevert_WhenUserFlashloanOnNonExistingToken_ShouldRevert() external {} + function testRevert_WhenContractCallFlashloanOnNonExistingToken_ShouldRevert() external {} + + // Flash and deposit back to mm, should revert with Reentrant error + function testRevert_WhenContractCallFlashloanAndDepositBacktoMM_ShouldRevert() external {} + + // Flash and repurchase, should revert with Reentrant error + function testRevert_WhenContractCallFlashloanAndRepurchase_ShouldRevert() external {} } From 28bb74de618824133ba6f26e5ea576255aa95efc Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Wed, 3 May 2023 13:21:19 +0700 Subject: [PATCH 16/87] chore: revise comment --- solidity/contracts/money-market/facets/FlashloanFacet.sol | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/solidity/contracts/money-market/facets/FlashloanFacet.sol b/solidity/contracts/money-market/facets/FlashloanFacet.sol index 832a7a84..62f87610 100644 --- a/solidity/contracts/money-market/facets/FlashloanFacet.sol +++ b/solidity/contracts/money-market/facets/FlashloanFacet.sol @@ -38,7 +38,7 @@ contract FlashloanFacet is IFlashloanFacet { ) external nonReentrant { LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - // expected fee = (_amount * feeBps) / maxBps + // expected fee = (_amount * flashloan fee (bps)) / max bps uint256 _expectedFee = (_amount * moneyMarketDs.flashloanFeeBps) / LibConstant.MAX_BPS; // balance before @@ -54,12 +54,12 @@ contract FlashloanFacet is IFlashloanFacet { revert FlashloanFacet_NotEnoughRepay(); } - // 50% of fee add to reserve + // lender fee = x% of expected fee uint256 _lenderFee = (_expectedFee * moneyMarketDs.lenderFlashloanBps) / LibConstant.MAX_BPS; - // lender fee (add on reserve) + // actual fee will be added to reserve (including excess fee) moneyMarketDs.reserves[_token] += _actualTotalFee; - // transfer the rest of fee to protocol reserve + // procol fee = actual fee - lender fee (x% from expected fee) moneyMarketDs.protocolReserves[_token] += _actualTotalFee - _lenderFee; } } From b06146c9c2904ebd9191c7e1b86e0e449d5979ce Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Wed, 3 May 2023 14:23:27 +0700 Subject: [PATCH 17/87] test: add redeposit case --- .../money-market/facets/FlashloanFacet.sol | 5 - .../interfaces/IFlashloanFacet.sol | 12 +- .../money-market/flashloan/MockFlashloan.sol | 18 ++- .../flashloan/MockFlashloan_Redeposit.sol | 41 +++++++ .../flashloan/MockFlashloan_Repurchase.sol | 30 +++++ .../flashloan/MoneyMarket_Flashloan.t.sol | 113 +++++++++++++++--- 6 files changed, 190 insertions(+), 29 deletions(-) create mode 100644 solidity/tests/money-market/flashloan/MockFlashloan_Redeposit.sol create mode 100644 solidity/tests/money-market/flashloan/MockFlashloan_Repurchase.sol diff --git a/solidity/contracts/money-market/facets/FlashloanFacet.sol b/solidity/contracts/money-market/facets/FlashloanFacet.sol index 62f87610..5e38bba8 100644 --- a/solidity/contracts/money-market/facets/FlashloanFacet.sol +++ b/solidity/contracts/money-market/facets/FlashloanFacet.sol @@ -15,11 +15,6 @@ import { IERC20 } from "../interfaces/IERC20.sol"; contract FlashloanFacet is IFlashloanFacet { using LibSafeToken for IERC20; - // error - error FlashloanFacet_InvalidToken(address _token); - error FlashloanFacet_NotEnoughToken(uint256 _amount); - error FlashloanFacet_NotEnoughRepay(); - modifier nonReentrant() { LibReentrancyGuard.lock(); _; diff --git a/solidity/contracts/money-market/interfaces/IFlashloanFacet.sol b/solidity/contracts/money-market/interfaces/IFlashloanFacet.sol index 11821d77..6692c036 100644 --- a/solidity/contracts/money-market/interfaces/IFlashloanFacet.sol +++ b/solidity/contracts/money-market/interfaces/IFlashloanFacet.sol @@ -2,8 +2,16 @@ pragma solidity 0.8.19; interface IFlashloanFacet { - ///@dev The caller of this method receives a callback in the form of IAlpacaFlashloanCallback#alpacaFlashloanCallback - //@param the confirm yet + // Errors + error FlashloanFacet_InvalidToken(address _token); + error FlashloanFacet_NotEnoughToken(uint256 _amount); + error FlashloanFacet_NotEnoughRepay(); + + /// @notice Receive token0 and/or token1 and pay it back, plus a fee, in the callback + /// @dev The caller of this method receives a callback in the form of IAlpacaFlashloanCallback#alpacaFlashloanCallback + /// @param _token The address of loan token + /// @param _amount The amount of the loan token + /// @param _data Any data to be passed through to the callback function flashloan( address _token, uint256 _amount, diff --git a/solidity/tests/money-market/flashloan/MockFlashloan.sol b/solidity/tests/money-market/flashloan/MockFlashloan.sol index 0bab3961..93542e91 100644 --- a/solidity/tests/money-market/flashloan/MockFlashloan.sol +++ b/solidity/tests/money-market/flashloan/MockFlashloan.sol @@ -25,10 +25,20 @@ contract MockFlashloan is IAlpacaFlashloanCallback { uint256 _repay, bytes calldata _data ) external { - uint256 _extraFee; - if (_data.length > 0) { - _extraFee = abi.decode(_data, (uint256)); + if (_data.length == 0) { + IERC20(_token).transfer(msg.sender, _repay); + } else { + (bool _sign, uint256 _fee) = abi.decode(_data, (bool, uint256)); + + // if sign is true => excess case + if (_sign) { + IERC20(_token).transfer(msg.sender, _repay + _fee); + } + + // if sign is false => lack case + if (!_sign) { + IERC20(_token).transfer(msg.sender, _repay - _fee); + } } - IERC20(_token).transfer(msg.sender, _repay + _extraFee); } } diff --git a/solidity/tests/money-market/flashloan/MockFlashloan_Redeposit.sol b/solidity/tests/money-market/flashloan/MockFlashloan_Redeposit.sol new file mode 100644 index 00000000..c560e760 --- /dev/null +++ b/solidity/tests/money-market/flashloan/MockFlashloan_Redeposit.sol @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import { IAlpacaFlashloanCallback } from "../../../contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol"; +import { IFlashloanFacet } from "../../../contracts/money-market/interfaces/IFlashloanFacet.sol"; +import { IERC20 } from "../../../contracts/money-market/interfaces/IERC20.sol"; +import { IMoneyMarketAccountManager } from "../../../contracts/interfaces/IMoneyMarketAccountManager.sol"; +import { ILendFacet } from "../../../contracts/money-market/interfaces/ILendFacet.sol"; + +contract MockFlashloan_Redeposit is IAlpacaFlashloanCallback { + IFlashloanFacet internal immutable flashloanRouter; + + constructor(address _flashloanRouter) { + flashloanRouter = IFlashloanFacet(_flashloanRouter); + } + + function flash( + address _token, + uint256 _amount, + bytes calldata _data + ) external { + flashloanRouter.flashloan(_token, _amount, _data); + } + + function alpacaFlashloanCallback( + address _token, + uint256 _repay, + bytes calldata _data + ) external { + if (_data.length > 0) { + (address _accountManager, uint256 _amount) = abi.decode(_data, (address, uint256)); + IERC20(_token).approve(_accountManager, type(uint256).max); + IMoneyMarketAccountManager(_accountManager).deposit(_token, _amount); + IERC20(_token).transfer(msg.sender, _repay); + } else { + IERC20(_token).approve(msg.sender, type(uint256).max); + ILendFacet(msg.sender).deposit(address(this), _token, _repay); + IERC20(_token).transfer(msg.sender, _repay); + } + } +} diff --git a/solidity/tests/money-market/flashloan/MockFlashloan_Repurchase.sol b/solidity/tests/money-market/flashloan/MockFlashloan_Repurchase.sol new file mode 100644 index 00000000..e5ae49eb --- /dev/null +++ b/solidity/tests/money-market/flashloan/MockFlashloan_Repurchase.sol @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import { IAlpacaFlashloanCallback } from "../../../contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol"; +import { IFlashloanFacet } from "../../../contracts/money-market/interfaces/IFlashloanFacet.sol"; +import { IERC20 } from "../../../contracts/money-market/interfaces/IERC20.sol"; + +contract MockFlashloan is IAlpacaFlashloanCallback { + IFlashloanFacet internal immutable flashloanRouter; + + constructor(address _flashloanRouter) { + flashloanRouter = IFlashloanFacet(_flashloanRouter); + } + + function flash( + address _token, + uint256 _amount, + bytes calldata _data + ) external { + flashloanRouter.flashloan(_token, _amount, _data); + } + + function alpacaFlashloanCallback( + address _token, + uint256 _repay, + bytes calldata _data + ) external { + IERC20(_token).transfer(msg.sender, _repay); + } +} diff --git a/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol b/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol index 83ec78cc..9e49a14b 100644 --- a/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol +++ b/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol @@ -6,13 +6,15 @@ import { MoneyMarket_BaseTest, console } from "../MoneyMarket_BaseTest.t.sol"; // libs import { LibMoneyMarket01 } from "../../../contracts/money-market/libraries/LibMoneyMarket01.sol"; import { LibConstant } from "../../../contracts/money-market/libraries/LibConstant.sol"; +import { LibReentrancyGuard } from "../../../contracts/money-market/libraries/LibReentrancyGuard.sol"; // interfaces -import { ILendFacet } from "../../../contracts/money-market/interfaces/ILendFacet.sol"; +import { IFlashloanFacet } from "../../../contracts/money-market/interfaces/IFlashloanFacet.sol"; import { IERC20 } from "../../../contracts/money-market/interfaces/IERC20.sol"; // mock import { MockFlashloan } from "./MockFlashloan.sol"; +import { MockFlashloan_Redeposit } from "./MockFlashloan_Redeposit.sol"; contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { MockFlashloan internal mockFlashloan; @@ -30,11 +32,13 @@ contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { accountManager.deposit(address(usdc), _depositAmount); } - // test flashloan work correctly - // - user balance is deducted correctly - // - reserve increase correctly - // - protocol reserve increase correctly + // NOTE: if token is not available in pool. + // It will revert same as "no liquidity" or "ERC20: transfer amount exceeds balance" + function testCorrectness_WhenUserCallFlashloan_ShouldWork() external { + // flashloan 1 usdc + uint256 _flashloanAmount = normalizeEther(1 ether, usdcDecimal); + // Fee calculation: // ============================= // fee = 5% of amount @@ -48,16 +52,13 @@ contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { // ============================= // Market reserve: 10 USDC // After call flashloan, reserve = current reserve + (50% of fee from flashloan's amount) - // reserve = 10 + (1 * 5%/2) = 10 + (0.05/2) = 10.025 USDC + // fee = 0.05 USDC + // reserve = 10 + 0.05 = 10.05 USDC // protocol reserve = 0.025 USDC - - // flashloan 1 usdc - uint256 _flashloanAmount = normalizeEther(1 ether, usdcDecimal); + // total token = 10.05 - 0.025 = 10.025 USDC // call flashloan with 1 usdc - vm.startPrank(address(mockFlashloan)); mockFlashloan.flash(address(usdc), _flashloanAmount, ""); - vm.stopPrank(); // mock flashloan contract should have 5 - (1 * fee) = 4.95 usdc uint256 _mockFlashloanBalanceAfter = usdc.balanceOf(address(mockFlashloan)); @@ -66,22 +67,98 @@ contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { assertEq(_mockFlashloanBalanceAfter, normalizeEther(4.95 ether, usdcDecimal), "mockFlashloan USDC balance"); // - reserve increase correctly - uint256 _reserveAfter = viewFacet.getTotalToken(address(usdc)); - assertEq(_reserveAfter, normalizeEther(10.025 ether, usdcDecimal), "Reserve"); + uint256 _reserve = viewFacet.getFloatingBalance(address(usdc)); + assertEq(_reserve, normalizeEther(10.05 ether, usdcDecimal), "Reserve"); + + // - protocol reserve increase correctly + // 0 -> 0.025 + uint256 _protocolReserve = viewFacet.getProtocolReserve(address(usdc)); + assertEq(_protocolReserve, normalizeEther(0.025 ether, usdcDecimal), "Protocol reserve"); } // test if repay excess the expected fee (should work) - function testCorrectness_WhenContractRepayGreaterThanExpectedFee_ShouldWork() external {} + function testCorrectness_WhenContractRepayGreaterThanExpectedFee_ShouldWork() external { + // define flashloan amount + uint256 _flashloanAmount = normalizeEther(1 ether, usdcDecimal); + + // define data for use as extra fee + bytes memory _data = abi.encode(true, normalizeEther(1 ether, usdcDecimal)); + + // call flashloan with 1 usdc with extra fee (1 usdc) + mockFlashloan.flash(address(usdc), _flashloanAmount, _data); + + // check contract + uint256 _mockFlashloanBalanceAfter = usdc.balanceOf(address(mockFlashloan)); + + // Contract should have 5 - (1 * fee) - 1 (extra fee) = 3.95 usdc + assertEq(_mockFlashloanBalanceAfter, normalizeEther(3.95 ether, usdcDecimal)); + + // check reserve + // Reserve = 10 USDC + // fee = 0.05 USDC + // After flash, reserve = current + fee + extra + // 10 + 0.05 + 1 = 11.05 USDC # + // Extra 1 USDC should go to protocol reserve + // protocol reserve = current + fee + extra = 0 + 0.025 + 1 = 1.025 USDC # + uint256 _reserve = viewFacet.getFloatingBalance(address(usdc)); + assertEq(_reserve, normalizeEther(11.05 ether, usdcDecimal), "Reserve"); + + uint256 _protocolReserve = viewFacet.getProtocolReserve(address(usdc)); + assertEq(_protocolReserve, normalizeEther(1.025 ether, usdcDecimal), "Protocol reserve"); + } // test if repay less than the expected fee (should revert) - function testRevert_WhenContractRepayLessThanExpectedFee_ShouldRevert() external {} + function testRevert_WhenContractRepayLessThanExpectedFee_ShouldRevert() external { + uint256 _flashloanAmount = normalizeEther(1 ether, usdcDecimal); + bytes memory _data = abi.encode(false, normalizeEther(0.01 ether, usdcDecimal)); + + // call flashloan with 1 USDC with -0.01 USDC fee + vm.expectRevert(abi.encodeWithSelector(IFlashloanFacet.FlashloanFacet_NotEnoughRepay.selector)); + mockFlashloan.flash(address(usdc), _flashloanAmount, _data); + } - // test if token is not available for flashloan (should revert) - function testRevert_WhenContractCallFlashloanOnNonExistingToken_ShouldRevert() external {} + // test if loan amount is bigger than reserve + function testRevert_WhenLoanAmountIsBiggerThanReserve_ShouldRevert() external { + // reserve = 10 USDC + // loan = 11 USDC + uint256 _flashloanAmount = normalizeEther(11 ether, usdcDecimal); + + // call flashloan with 11 usdc + // in detail, should revert "ERC20: transfer amount exceeds balance". But we use safeTransfer Lib + vm.expectRevert("!safeTransfer"); + mockFlashloan.flash(address(usdc), _flashloanAmount, ""); + } // Flash and deposit back to mm, should revert with Reentrant error - function testRevert_WhenContractCallFlashloanAndDepositBacktoMM_ShouldRevert() external {} + // deposit direct to mm + // deposit with account manager + function testRevert_WhenContractCallFlashloanAndDepositBacktoMM_ShouldRevert() external { + // mock flashloan have: 5 USDC + // reserve and balanceOf(mm): 10 USDC + + // flashloan all balance + uint256 _flashloanAmount = usdc.balanceOf(moneyMarketDiamond); + + // mock new flashloan that implements redeposit + MockFlashloan_Redeposit _mockRedepositFlashloan = new MockFlashloan_Redeposit(moneyMarketDiamond); + usdc.mint(address(_mockRedepositFlashloan), normalizeEther(5 ether, usdcDecimal)); + + // deposit back to mm + // - direct, should revert LibReentrancyGuard_ReentrantCall before LibMoneyMarket01_UnAuthorized + { + vm.expectRevert(LibReentrancyGuard.LibReentrancyGuard_ReentrantCall.selector); + _mockRedepositFlashloan.flash(address(usdc), _flashloanAmount, ""); + } + // - via account manager, should revert LibReentrancyGuard_ReentrantCall + { + bytes memory _data = abi.encode(address(accountManager), _flashloanAmount); + vm.expectRevert(LibReentrancyGuard.LibReentrancyGuard_ReentrantCall.selector); + _mockRedepositFlashloan.flash(address(usdc), _flashloanAmount, _data); + } + } // Flash and repurchase, should revert with Reentrant error function testRevert_WhenContractCallFlashloanAndRepurchase_ShouldRevert() external {} + + // Flash and withdraw } From deb627af9f4a84bef94c4293d1d6bb28db53b3da Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Wed, 3 May 2023 14:48:48 +0700 Subject: [PATCH 18/87] test: add repurchase case --- .../flashloan/MockFlashloan_Repurchase.sol | 22 ++++++++++++- .../flashloan/MoneyMarket_Flashloan.t.sol | 31 ++++++++++++++++++- 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/solidity/tests/money-market/flashloan/MockFlashloan_Repurchase.sol b/solidity/tests/money-market/flashloan/MockFlashloan_Repurchase.sol index e5ae49eb..faf6ce1c 100644 --- a/solidity/tests/money-market/flashloan/MockFlashloan_Repurchase.sol +++ b/solidity/tests/money-market/flashloan/MockFlashloan_Repurchase.sol @@ -5,9 +5,20 @@ import { IAlpacaFlashloanCallback } from "../../../contracts/money-market/interf import { IFlashloanFacet } from "../../../contracts/money-market/interfaces/IFlashloanFacet.sol"; import { IERC20 } from "../../../contracts/money-market/interfaces/IERC20.sol"; -contract MockFlashloan is IAlpacaFlashloanCallback { +// repurchase +import { ILiquidationFacet } from "../../../contracts/money-market/interfaces/ILiquidationFacet.sol"; + +contract MockFlashloan_Repurchase is IAlpacaFlashloanCallback { IFlashloanFacet internal immutable flashloanRouter; + struct RepurchaseParam { + address _account; + uint256 _subAccountId; + address _repayToken; + address _collatToken; + uint256 _desiredRepayAmount; + } + constructor(address _flashloanRouter) { flashloanRouter = IFlashloanFacet(_flashloanRouter); } @@ -25,6 +36,15 @@ contract MockFlashloan is IAlpacaFlashloanCallback { uint256 _repay, bytes calldata _data ) external { + // repurchaser call repurchase via liquidation + RepurchaseParam memory _param = abi.decode(_data, (RepurchaseParam)); + ILiquidationFacet(msg.sender).repurchase( + _param._account, + _param._subAccountId, + _param._repayToken, + _param._collatToken, + _param._desiredRepayAmount + ); IERC20(_token).transfer(msg.sender, _repay); } } diff --git a/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol b/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol index 9e49a14b..206e813e 100644 --- a/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol +++ b/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol @@ -15,6 +15,7 @@ import { IERC20 } from "../../../contracts/money-market/interfaces/IERC20.sol"; // mock import { MockFlashloan } from "./MockFlashloan.sol"; import { MockFlashloan_Redeposit } from "./MockFlashloan_Redeposit.sol"; +import { MockFlashloan_Repurchase } from "./MockFlashloan_Repurchase.sol"; contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { MockFlashloan internal mockFlashloan; @@ -157,8 +158,36 @@ contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { } } + struct RepurchaseParam { + address _account; + uint256 _subAccountId; + address _repayToken; + address _collatToken; + uint256 _desiredRepayAmount; + } + // Flash and repurchase, should revert with Reentrant error - function testRevert_WhenContractCallFlashloanAndRepurchase_ShouldRevert() external {} + function testRevert_WhenContractCallFlashloanAndRepurchase_ShouldRevert() external { + // mock flashloan have: 5 USDC + // reserve and balanceOf(mm): 10 USDC + + // flashloan all balance + uint256 _flashloanAmount = usdc.balanceOf(moneyMarketDiamond); + + // mock new flashloan that implements redeposit + MockFlashloan_Repurchase _mockRepurchaseFlashloan = new MockFlashloan_Repurchase(moneyMarketDiamond); + usdc.mint(address(_mockRepurchaseFlashloan), normalizeEther(5 ether, usdcDecimal)); + + // repurchase param (Don't need to consider the param, it should revert reentrancy first) + RepurchaseParam memory _param = RepurchaseParam(ALICE, 0, address(cake), address(usdc), 1 ether); + + // repurchase + { + bytes memory _data = abi.encode(_param); + vm.expectRevert(LibReentrancyGuard.LibReentrancyGuard_ReentrantCall.selector); + _mockRepurchaseFlashloan.flash(address(usdc), _flashloanAmount, _data); + } + } // Flash and withdraw } From 3f139f7b726daf9322e1444d53d477f477e9e00d Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Wed, 3 May 2023 14:58:57 +0700 Subject: [PATCH 19/87] chore: adjust code --- .../flashloan/MoneyMarket_Flashloan.t.sol | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol b/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol index 206e813e..c384c7f0 100644 --- a/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol +++ b/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol @@ -20,6 +20,14 @@ import { MockFlashloan_Repurchase } from "./MockFlashloan_Repurchase.sol"; contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { MockFlashloan internal mockFlashloan; + struct RepurchaseParam { + address _account; + uint256 _subAccountId; + address _repayToken; + address _collatToken; + uint256 _desiredRepayAmount; + } + function setUp() public override { super.setUp(); @@ -33,7 +41,7 @@ contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { accountManager.deposit(address(usdc), _depositAmount); } - // NOTE: if token is not available in pool. + // NOTE: if token is not available/existing in pool. // It will revert same as "no liquidity" or "ERC20: transfer amount exceeds balance" function testCorrectness_WhenUserCallFlashloan_ShouldWork() external { @@ -131,8 +139,6 @@ contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { } // Flash and deposit back to mm, should revert with Reentrant error - // deposit direct to mm - // deposit with account manager function testRevert_WhenContractCallFlashloanAndDepositBacktoMM_ShouldRevert() external { // mock flashloan have: 5 USDC // reserve and balanceOf(mm): 10 USDC @@ -158,14 +164,6 @@ contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { } } - struct RepurchaseParam { - address _account; - uint256 _subAccountId; - address _repayToken; - address _collatToken; - uint256 _desiredRepayAmount; - } - // Flash and repurchase, should revert with Reentrant error function testRevert_WhenContractCallFlashloanAndRepurchase_ShouldRevert() external { // mock flashloan have: 5 USDC @@ -188,6 +186,4 @@ contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { _mockRepurchaseFlashloan.flash(address(usdc), _flashloanAmount, _data); } } - - // Flash and withdraw } From e518af2581026ff906120c41b9223bd273b2df11 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Wed, 3 May 2023 15:02:20 +0700 Subject: [PATCH 20/87] chore: adjust folder --- .../{money-market/flashloan => mocks}/MockFlashloan.sol | 0 .../flashloan => mocks}/MockFlashloan_Redeposit.sol | 0 .../flashloan => mocks}/MockFlashloan_Repurchase.sol | 0 .../money-market/flashloan/MoneyMarket_Flashloan.t.sol | 6 +++--- 4 files changed, 3 insertions(+), 3 deletions(-) rename solidity/tests/{money-market/flashloan => mocks}/MockFlashloan.sol (100%) rename solidity/tests/{money-market/flashloan => mocks}/MockFlashloan_Redeposit.sol (100%) rename solidity/tests/{money-market/flashloan => mocks}/MockFlashloan_Repurchase.sol (100%) diff --git a/solidity/tests/money-market/flashloan/MockFlashloan.sol b/solidity/tests/mocks/MockFlashloan.sol similarity index 100% rename from solidity/tests/money-market/flashloan/MockFlashloan.sol rename to solidity/tests/mocks/MockFlashloan.sol diff --git a/solidity/tests/money-market/flashloan/MockFlashloan_Redeposit.sol b/solidity/tests/mocks/MockFlashloan_Redeposit.sol similarity index 100% rename from solidity/tests/money-market/flashloan/MockFlashloan_Redeposit.sol rename to solidity/tests/mocks/MockFlashloan_Redeposit.sol diff --git a/solidity/tests/money-market/flashloan/MockFlashloan_Repurchase.sol b/solidity/tests/mocks/MockFlashloan_Repurchase.sol similarity index 100% rename from solidity/tests/money-market/flashloan/MockFlashloan_Repurchase.sol rename to solidity/tests/mocks/MockFlashloan_Repurchase.sol diff --git a/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol b/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol index c384c7f0..365a0478 100644 --- a/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol +++ b/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol @@ -13,9 +13,9 @@ import { IFlashloanFacet } from "../../../contracts/money-market/interfaces/IFla import { IERC20 } from "../../../contracts/money-market/interfaces/IERC20.sol"; // mock -import { MockFlashloan } from "./MockFlashloan.sol"; -import { MockFlashloan_Redeposit } from "./MockFlashloan_Redeposit.sol"; -import { MockFlashloan_Repurchase } from "./MockFlashloan_Repurchase.sol"; +import { MockFlashloan } from "../../mocks/MockFlashloan.sol"; +import { MockFlashloan_Redeposit } from "../../mocks/MockFlashloan_Redeposit.sol"; +import { MockFlashloan_Repurchase } from "../../mocks/MockFlashloan_Repurchase.sol"; contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { MockFlashloan internal mockFlashloan; From e15dba1fea684cdf336028e9707cbbcaa2f19e89 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Wed, 3 May 2023 15:06:24 +0700 Subject: [PATCH 21/87] fix: fix path --- solidity/tests/mocks/MockFlashloan.sol | 6 +++--- solidity/tests/mocks/MockFlashloan_Redeposit.sol | 10 +++++----- solidity/tests/mocks/MockFlashloan_Repurchase.sol | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/solidity/tests/mocks/MockFlashloan.sol b/solidity/tests/mocks/MockFlashloan.sol index 93542e91..5394fd1d 100644 --- a/solidity/tests/mocks/MockFlashloan.sol +++ b/solidity/tests/mocks/MockFlashloan.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.19; -import { IAlpacaFlashloanCallback } from "../../../contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol"; -import { IFlashloanFacet } from "../../../contracts/money-market/interfaces/IFlashloanFacet.sol"; -import { IERC20 } from "../../../contracts/money-market/interfaces/IERC20.sol"; +import { IAlpacaFlashloanCallback } from "../../contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol"; +import { IFlashloanFacet } from "../../contracts/money-market/interfaces/IFlashloanFacet.sol"; +import { IERC20 } from "../../contracts/money-market/interfaces/IERC20.sol"; contract MockFlashloan is IAlpacaFlashloanCallback { IFlashloanFacet internal immutable flashloanRouter; diff --git a/solidity/tests/mocks/MockFlashloan_Redeposit.sol b/solidity/tests/mocks/MockFlashloan_Redeposit.sol index c560e760..f275f20b 100644 --- a/solidity/tests/mocks/MockFlashloan_Redeposit.sol +++ b/solidity/tests/mocks/MockFlashloan_Redeposit.sol @@ -1,11 +1,11 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.19; -import { IAlpacaFlashloanCallback } from "../../../contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol"; -import { IFlashloanFacet } from "../../../contracts/money-market/interfaces/IFlashloanFacet.sol"; -import { IERC20 } from "../../../contracts/money-market/interfaces/IERC20.sol"; -import { IMoneyMarketAccountManager } from "../../../contracts/interfaces/IMoneyMarketAccountManager.sol"; -import { ILendFacet } from "../../../contracts/money-market/interfaces/ILendFacet.sol"; +import { IAlpacaFlashloanCallback } from "../../contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol"; +import { IFlashloanFacet } from "../../contracts/money-market/interfaces/IFlashloanFacet.sol"; +import { IERC20 } from "../../contracts/money-market/interfaces/IERC20.sol"; +import { IMoneyMarketAccountManager } from "../../contracts/interfaces/IMoneyMarketAccountManager.sol"; +import { ILendFacet } from "../../contracts/money-market/interfaces/ILendFacet.sol"; contract MockFlashloan_Redeposit is IAlpacaFlashloanCallback { IFlashloanFacet internal immutable flashloanRouter; diff --git a/solidity/tests/mocks/MockFlashloan_Repurchase.sol b/solidity/tests/mocks/MockFlashloan_Repurchase.sol index faf6ce1c..98a5fb59 100644 --- a/solidity/tests/mocks/MockFlashloan_Repurchase.sol +++ b/solidity/tests/mocks/MockFlashloan_Repurchase.sol @@ -1,12 +1,12 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.19; -import { IAlpacaFlashloanCallback } from "../../../contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol"; -import { IFlashloanFacet } from "../../../contracts/money-market/interfaces/IFlashloanFacet.sol"; -import { IERC20 } from "../../../contracts/money-market/interfaces/IERC20.sol"; +import { IAlpacaFlashloanCallback } from "../../contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol"; +import { IFlashloanFacet } from "../../contracts/money-market/interfaces/IFlashloanFacet.sol"; +import { IERC20 } from "../../contracts/money-market/interfaces/IERC20.sol"; // repurchase -import { ILiquidationFacet } from "../../../contracts/money-market/interfaces/ILiquidationFacet.sol"; +import { ILiquidationFacet } from "../../contracts/money-market/interfaces/ILiquidationFacet.sol"; contract MockFlashloan_Repurchase is IAlpacaFlashloanCallback { IFlashloanFacet internal immutable flashloanRouter; From 741988ad5e31c4ccfdb97c6389595c1f20453eeb Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Wed, 3 May 2023 16:55:36 +0700 Subject: [PATCH 22/87] fix: replace int256 to uint256 --- solidity/tests/mocks/MockFlashloan.sol | 12 +++--------- .../flashloan/MoneyMarket_Flashloan.t.sol | 4 ++-- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/solidity/tests/mocks/MockFlashloan.sol b/solidity/tests/mocks/MockFlashloan.sol index 5394fd1d..dc6b765e 100644 --- a/solidity/tests/mocks/MockFlashloan.sol +++ b/solidity/tests/mocks/MockFlashloan.sol @@ -28,17 +28,11 @@ contract MockFlashloan is IAlpacaFlashloanCallback { if (_data.length == 0) { IERC20(_token).transfer(msg.sender, _repay); } else { - (bool _sign, uint256 _fee) = abi.decode(_data, (bool, uint256)); + int256 _fee = abi.decode(_data, (int256)); - // if sign is true => excess case - if (_sign) { - IERC20(_token).transfer(msg.sender, _repay + _fee); - } + uint256 _actualRepay = uint256(int256(_repay) + _fee); - // if sign is false => lack case - if (!_sign) { - IERC20(_token).transfer(msg.sender, _repay - _fee); - } + IERC20(_token).transfer(msg.sender, _actualRepay); } } } diff --git a/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol b/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol index 365a0478..41bfb562 100644 --- a/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol +++ b/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol @@ -91,7 +91,7 @@ contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { uint256 _flashloanAmount = normalizeEther(1 ether, usdcDecimal); // define data for use as extra fee - bytes memory _data = abi.encode(true, normalizeEther(1 ether, usdcDecimal)); + bytes memory _data = abi.encode(normalizeEther(1 ether, usdcDecimal)); // call flashloan with 1 usdc with extra fee (1 usdc) mockFlashloan.flash(address(usdc), _flashloanAmount, _data); @@ -119,7 +119,7 @@ contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { // test if repay less than the expected fee (should revert) function testRevert_WhenContractRepayLessThanExpectedFee_ShouldRevert() external { uint256 _flashloanAmount = normalizeEther(1 ether, usdcDecimal); - bytes memory _data = abi.encode(false, normalizeEther(0.01 ether, usdcDecimal)); + bytes memory _data = abi.encode(-int256(normalizeEther(0.01 ether, usdcDecimal))); // call flashloan with 1 USDC with -0.01 USDC fee vm.expectRevert(abi.encodeWithSelector(IFlashloanFacet.FlashloanFacet_NotEnoughRepay.selector)); From 91d6c84d2a4595d407aa21b609bad7d57bfebc3f Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Wed, 3 May 2023 17:29:15 +0700 Subject: [PATCH 23/87] fix: revise comments and add event when flashloan --- solidity/contracts/money-market/facets/AdminFacet.sol | 2 +- .../contracts/money-market/facets/FlashloanFacet.sol | 10 +++++++--- solidity/contracts/money-market/facets/ViewFacet.sol | 2 +- .../money-market/interfaces/IFlashloanFacet.sol | 3 +++ .../money-market/libraries/LibMoneyMarket01.sol | 4 ++-- solidity/tests/money-market/MoneyMarket_BaseTest.t.sol | 2 +- 6 files changed, 15 insertions(+), 8 deletions(-) diff --git a/solidity/contracts/money-market/facets/AdminFacet.sol b/solidity/contracts/money-market/facets/AdminFacet.sol index a4b6b40b..d597eb4b 100644 --- a/solidity/contracts/money-market/facets/AdminFacet.sol +++ b/solidity/contracts/money-market/facets/AdminFacet.sol @@ -388,7 +388,7 @@ contract AdminFacet is IAdminFacet { /// @notice Set lender portion and flashloan fee /// @param _flashloanFeeBps the flashloan fee collected by protocol - /// @param _lenderFlashloanBps the portion that lender will receive when providing liquidity + /// @param _lenderFlashloanBps the portion that lenders will receive from _flashloanFeeBps function setFlashloanFees(uint16 _flashloanFeeBps, uint16 _lenderFlashloanBps) external onlyOwner { if (_flashloanFeeBps > LibConstant.MAX_BPS || _lenderFlashloanBps > LibConstant.MAX_BPS) { revert AdminFacet_InvalidArguments(); diff --git a/solidity/contracts/money-market/facets/FlashloanFacet.sol b/solidity/contracts/money-market/facets/FlashloanFacet.sol index 5e38bba8..bba439ea 100644 --- a/solidity/contracts/money-market/facets/FlashloanFacet.sol +++ b/solidity/contracts/money-market/facets/FlashloanFacet.sol @@ -21,7 +21,7 @@ contract FlashloanFacet is IFlashloanFacet { LibReentrancyGuard.unlock(); } - /// @notice Receive token0 and/or token1 and pay it back, plus a fee, in the callback + /// @notice Loan token and pay it back, plus fee, in the callback /// @dev The caller of this method receives a callback in the form of IAlpacaFlashloanCallback#alpacaFlashloanCallback /// @param _token The address of loan token /// @param _amount The amount of the loan token @@ -49,12 +49,16 @@ contract FlashloanFacet is IFlashloanFacet { revert FlashloanFacet_NotEnoughRepay(); } - // lender fee = x% of expected fee + // lender fee = x% of expected fee. + // in case flashloaner inject a lot of fee, the ib token price should not be inflated + // this is to prevent unforeseeable impact from inflating the ib token price uint256 _lenderFee = (_expectedFee * moneyMarketDs.lenderFlashloanBps) / LibConstant.MAX_BPS; // actual fee will be added to reserve (including excess fee) moneyMarketDs.reserves[_token] += _actualTotalFee; - // procol fee = actual fee - lender fee (x% from expected fee) + // protocol fee = actual fee - lender fee (x% from expected fee) moneyMarketDs.protocolReserves[_token] += _actualTotalFee - _lenderFee; + + emit LogFlashloan(_token, _amount, _actualTotalFee, _lenderFee); } } diff --git a/solidity/contracts/money-market/facets/ViewFacet.sol b/solidity/contracts/money-market/facets/ViewFacet.sol index 701478a4..c187a4ce 100644 --- a/solidity/contracts/money-market/facets/ViewFacet.sol +++ b/solidity/contracts/money-market/facets/ViewFacet.sol @@ -418,7 +418,7 @@ contract ViewFacet is IViewFacet { /// @notice Get flashloan fees /// @return _flashloanFeeBps the flashloan fee collected by protocol - /// @return _lenderFlashloanBps the portion that lender will receive when providing liquidity + /// @return _lenderFlashloanBps the portion that lenders will receive from _flashloanFeeBps function getFlashloanFeeParams() external view returns (uint16 _flashloanFeeBps, uint16 _lenderFlashloanBps) { LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); _flashloanFeeBps = moneyMarketDs.flashloanFeeBps; diff --git a/solidity/contracts/money-market/interfaces/IFlashloanFacet.sol b/solidity/contracts/money-market/interfaces/IFlashloanFacet.sol index 6692c036..74e73caa 100644 --- a/solidity/contracts/money-market/interfaces/IFlashloanFacet.sol +++ b/solidity/contracts/money-market/interfaces/IFlashloanFacet.sol @@ -2,6 +2,9 @@ pragma solidity 0.8.19; interface IFlashloanFacet { + // Event + event LogFlashloan(address token, uint256 amount, uint256 totalFee, uint256 lenderFee); + // Errors error FlashloanFacet_InvalidToken(address _token); error FlashloanFacet_NotEnoughToken(uint256 _amount); diff --git a/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol b/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol index 37c6ee59..d3ea98ed 100644 --- a/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol +++ b/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol @@ -150,8 +150,8 @@ library LibMoneyMarket01 { uint16 lendingFeeBps; // fee that is charged from lending interest by protocol, goes to protocolReserve uint16 repurchaseFeeBps; // fee that is charged during repurchase by protocol, goes to liquidationTreasury uint16 liquidationFeeBps; // fee that is charged during liquidation by protocol, goes to liquidationTreasury - uint16 flashloanFeeBps; // fee that is charged when providing the flashloan, 50% goes to reserve, the rest goes to protocol reserve - uint16 lenderFlashloanBps; // portion that lender will receive when providing the liquidity for flashloan + uint16 flashloanFeeBps; // fee that is charged when providing the flashloan + uint16 lenderFlashloanBps; // portion of flashloan fee that will go to lenders } /// @dev Get money market storage diff --git a/solidity/tests/money-market/MoneyMarket_BaseTest.t.sol b/solidity/tests/money-market/MoneyMarket_BaseTest.t.sol index c0dae256..6e2b7a3d 100644 --- a/solidity/tests/money-market/MoneyMarket_BaseTest.t.sol +++ b/solidity/tests/money-market/MoneyMarket_BaseTest.t.sol @@ -225,7 +225,7 @@ abstract contract MoneyMarket_BaseTest is BaseTest { adminFacet.setLiquidationTreasury(liquidationTreasury); - // adminFacet.setFees(_newLendingFeeBps, _newRepurchaseFeeBps, _newLiquidationFeeBps, _newflashloanFeeBps); + // adminFacet.setFees(_newLendingFeeBps, _newRepurchaseFeeBps, _newLiquidationFeeBps); adminFacet.setFees(0, 100, 100); From e99f5e3d0fdf4f44abc2371ee305e896fe899dbf Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Wed, 3 May 2023 18:33:36 +0700 Subject: [PATCH 24/87] chore: add comments in mock flashloan --- solidity/tests/mocks/MockFlashloan.sol | 2 ++ solidity/tests/mocks/MockFlashloan_Redeposit.sol | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/solidity/tests/mocks/MockFlashloan.sol b/solidity/tests/mocks/MockFlashloan.sol index dc6b765e..ece9cd38 100644 --- a/solidity/tests/mocks/MockFlashloan.sol +++ b/solidity/tests/mocks/MockFlashloan.sol @@ -25,9 +25,11 @@ contract MockFlashloan is IAlpacaFlashloanCallback { uint256 _repay, bytes calldata _data ) external { + // if no data, just repay if (_data.length == 0) { IERC20(_token).transfer(msg.sender, _repay); } else { + // if data exist, repay +- (fee) int256 _fee = abi.decode(_data, (int256)); uint256 _actualRepay = uint256(int256(_repay) + _fee); diff --git a/solidity/tests/mocks/MockFlashloan_Redeposit.sol b/solidity/tests/mocks/MockFlashloan_Redeposit.sol index f275f20b..5acc64a4 100644 --- a/solidity/tests/mocks/MockFlashloan_Redeposit.sol +++ b/solidity/tests/mocks/MockFlashloan_Redeposit.sol @@ -27,12 +27,17 @@ contract MockFlashloan_Redeposit is IAlpacaFlashloanCallback { uint256 _repay, bytes calldata _data ) external { + // data will be included: + ///@param _accountManager address of account manager + ///@param _amount: the borrow amount (not including fee yet) + // if data exists, call deposit via the account manager if (_data.length > 0) { (address _accountManager, uint256 _amount) = abi.decode(_data, (address, uint256)); IERC20(_token).approve(_accountManager, type(uint256).max); IMoneyMarketAccountManager(_accountManager).deposit(_token, _amount); IERC20(_token).transfer(msg.sender, _repay); } else { + // if data not exists, call deposit directly to moneymarket diamond IERC20(_token).approve(msg.sender, type(uint256).max); ILendFacet(msg.sender).deposit(address(this), _token, _repay); IERC20(_token).transfer(msg.sender, _repay); From 977d7db11dec86e9665b1c69e481cdabba61f4e7 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Mon, 8 May 2023 11:23:03 +0700 Subject: [PATCH 25/87] chore: remove todo --- ...ancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation.t.sol | 1 - .../PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol | 1 - 2 files changed, 2 deletions(-) diff --git a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation.t.sol b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation.t.sol index 57eb733a..03106225 100644 --- a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation.t.sol +++ b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation.t.sol @@ -122,7 +122,6 @@ contract PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation is BasePCSV3Li ); } - // TODO: check multi hop function testCorrectness_WhenLiquidationOnMultiHop_ShouldWork() external { address _collatToken = address(ETH); address _debtToken = address(usdt); diff --git a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol index e02be4e6..3d32d47e 100644 --- a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol +++ b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol @@ -61,7 +61,6 @@ contract PancakeswapV3TokenLiquidationStrategy_SetConfigs is BasePCSV3Liquidatio bytes[] memory _paths = new bytes[](1); _paths[0] = abi.encodePacked(address(_randomToken0), poolFee, address(_randomToken1)); - // TODO: Revert with? vm.expectRevert(); liquidationStrat.setPaths(_paths); } From c644985eb833c0720ccaacf62210231acb96f19a Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Mon, 8 May 2023 11:25:21 +0700 Subject: [PATCH 26/87] fix: revise test case name --- .../PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol index 3d32d47e..06c5fac5 100644 --- a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol +++ b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol @@ -65,7 +65,7 @@ contract PancakeswapV3TokenLiquidationStrategy_SetConfigs is BasePCSV3Liquidatio liquidationStrat.setPaths(_paths); } - function testRevert_WhenCallerIsNotOwner_ShouldRevert() external { + function testRevert_WhenNotOwnerSetPaths_ShouldRevert() external { bytes[] memory _paths = new bytes[](1); _paths[0] = abi.encodePacked(address(wbnb), poolFee, address(cake)); From d3b8e11c5ec178ee591232915b33a74ccd449068 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Mon, 8 May 2023 13:10:46 +0700 Subject: [PATCH 27/87] fix: split deployed liqV3 and liqV3 with reader --- ...ancakeswapV3IbTokenLiquidationStrategy.sol | 43 ++- ...okenLiquidationStrategy_WithPathReader.sol | 126 ++++++++ .../PancakeswapV3TokenLiquidationStrategy.sol | 73 +---- .../money-market/libraries/LibBytes.sol | 101 +++++++ .../money-market/libraries/LibPath.sol | 70 +++++ ...apPathV3Reader.sol => PathPCSV3Reader.sol} | 8 +- ...IPathV3Reader.sol => IPathPCSV3Reader.sol} | 2 +- .../BasePCSV3LiquidationForkTest.sol | 12 +- ...quidationStrategy_ExecuteLiquidation.t.sol | 4 +- ...bTokenLiquidationStrategy_SetConfigs.t.sol | 19 +- ...quidationStrategy_ExecuteLiquidation.t.sol | 14 +- ...3TokenLiquidationStrategy_SetConfigs.t.sol | 14 +- ...quidationStrategy_ExecuteLiquidation.t.sol | 285 ++++++++++++++++++ ...bTokenLiquidationStrategy_SetConfigs.t.sol | 101 +++++++ 14 files changed, 752 insertions(+), 120 deletions(-) create mode 100644 solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol create mode 100644 solidity/contracts/money-market/libraries/LibBytes.sol create mode 100644 solidity/contracts/money-market/libraries/LibPath.sol rename solidity/contracts/reader/{PancakeSwapPathV3Reader.sol => PathPCSV3Reader.sol} (89%) rename solidity/contracts/reader/interfaces/{IPathV3Reader.sol => IPathPCSV3Reader.sol} (87%) create mode 100644 solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol create mode 100644 solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol diff --git a/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol b/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol index ebdc66c8..c6fc89f4 100644 --- a/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol +++ b/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol @@ -6,28 +6,36 @@ import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; // ---- Libraries ---- // import { LibSafeToken } from "./libraries/LibSafeToken.sol"; +import { LibPath } from "./libraries/LibPath.sol"; // ---- Interfaces ---- // import { ILiquidationStrategy } from "./interfaces/ILiquidationStrategy.sol"; import { IPancakeSwapRouterV3 } from "./interfaces/IPancakeSwapRouterV3.sol"; import { IERC20 } from "./interfaces/IERC20.sol"; import { IMoneyMarket } from "./interfaces/IMoneyMarket.sol"; -import { IPathV3Reader } from "../reader/interfaces/IPathV3Reader.sol"; +import { IPancakeV3Pool } from "./interfaces/IPancakeV3Pool.sol"; contract PancakeswapV3IbTokenLiquidationStrategy is ILiquidationStrategy, Ownable { using LibSafeToken for IERC20; + using LibPath for bytes; event LogSetCaller(address _caller, bool _isOk); + event LogSetPath(address _token0, address _token1, bytes _path); error PancakeswapV3IbTokenLiquidationStrategy_Unauthorized(); error PancakeswapV3IbTokenLiquidationStrategy_RepayTokenIsSameWithUnderlyingToken(); error PancakeswapV3IbTokenLiquidationStrategy_PathConfigNotFound(address tokenIn, address tokenOut); + error PancakeswapV3IbTokenLiquidationStrategy_NoLiquidity(address tokenA, address tokenB, uint24 fee); IPancakeSwapRouterV3 internal immutable router; IMoneyMarket internal immutable moneyMarket; - IPathV3Reader public pathReader; + + address internal constant PANCAKE_V3_POOL_DEPLOYER = 0x41ff9AA7e16B8B1a8a8dc4f0eFacd93D02d071c9; + bytes32 internal constant POOL_INIT_CODE_HASH = 0x6ce8eb472fa82df5469c6ab6d485f17c3ad13c8cd7af59b3d4a8026c5ce0f7e2; mapping(address => bool) public callersOk; + // tokenIn => tokenOut => path + mapping(address => mapping(address => bytes)) public paths; struct WithdrawParam { address to; @@ -43,14 +51,9 @@ contract PancakeswapV3IbTokenLiquidationStrategy is ILiquidationStrategy, Ownabl _; } - constructor( - address _router, - address _moneyMarket, - address _pathReader - ) { + constructor(address _router, address _moneyMarket) { router = IPancakeSwapRouterV3(_router); moneyMarket = IMoneyMarket(_moneyMarket); - pathReader = IPathV3Reader(_pathReader); } /// @notice Execute liquidate from collatToken to repayToken @@ -73,7 +76,7 @@ contract PancakeswapV3IbTokenLiquidationStrategy is ILiquidationStrategy, Ownabl revert PancakeswapV3IbTokenLiquidationStrategy_RepayTokenIsSameWithUnderlyingToken(); } - bytes memory _path = pathReader.paths(_underlyingToken, _repayToken); + bytes memory _path = paths[_underlyingToken][_repayToken]; // Revert if no swapPath config for _underlyingToken and _repayToken pair if (_path.length == 0) { revert PancakeswapV3IbTokenLiquidationStrategy_PathConfigNotFound(_underlyingToken, _repayToken); @@ -167,4 +170,26 @@ contract PancakeswapV3IbTokenLiquidationStrategy is ILiquidationStrategy, Ownabl } } } + + function _computeAddressV3( + address _tokenA, + address _tokenB, + uint24 _fee + ) internal pure returns (address pool) { + if (_tokenA > _tokenB) (_tokenA, _tokenB) = (_tokenB, _tokenA); + pool = address( + uint160( + uint256( + keccak256( + abi.encodePacked( + hex"ff", + PANCAKE_V3_POOL_DEPLOYER, + keccak256(abi.encode(_tokenA, _tokenB, _fee)), + POOL_INIT_CODE_HASH + ) + ) + ) + ) + ); + } } diff --git a/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol b/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol new file mode 100644 index 00000000..68e33655 --- /dev/null +++ b/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol @@ -0,0 +1,126 @@ +// SPDX-License-Identifier: BUSL +pragma solidity 0.8.19; + +// ---- External Libraries ---- // +import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; + +// ---- Libraries ---- // +import { LibSafeToken } from "./libraries/LibSafeToken.sol"; + +// ---- Interfaces ---- // +import { ILiquidationStrategy } from "./interfaces/ILiquidationStrategy.sol"; +import { IPancakeSwapRouterV3 } from "./interfaces/IPancakeSwapRouterV3.sol"; +import { IERC20 } from "./interfaces/IERC20.sol"; +import { IMoneyMarket } from "./interfaces/IMoneyMarket.sol"; +import { IPathPCSV3Reader } from "../reader/interfaces/IPathPCSV3Reader.sol"; + +contract PancakeswapV3IbTokenLiquidationStrategy_WithPathReader is ILiquidationStrategy, Ownable { + using LibSafeToken for IERC20; + + event LogSetCaller(address _caller, bool _isOk); + + error PancakeswapV3IbTokenLiquidationStrategy_Unauthorized(); + error PancakeswapV3IbTokenLiquidationStrategy_RepayTokenIsSameWithUnderlyingToken(); + error PancakeswapV3IbTokenLiquidationStrategy_PathConfigNotFound(address tokenIn, address tokenOut); + + IPancakeSwapRouterV3 internal immutable router; + IMoneyMarket internal immutable moneyMarket; + IPathPCSV3Reader public pathReader; + + mapping(address => bool) public callersOk; + + struct WithdrawParam { + address to; + address token; + uint256 amount; + } + + /// @notice allow only whitelisted callers + modifier onlyWhitelistedCallers() { + if (!callersOk[msg.sender]) { + revert PancakeswapV3IbTokenLiquidationStrategy_Unauthorized(); + } + _; + } + + constructor( + address _router, + address _moneyMarket, + address _pathReader + ) { + router = IPancakeSwapRouterV3(_router); + moneyMarket = IMoneyMarket(_moneyMarket); + pathReader = IPathPCSV3Reader(_pathReader); + } + + /// @notice Execute liquidate from collatToken to repayToken + /// @param _ibToken The source token + /// @param _repayToken The destination token + /// @param _ibTokenAmountIn Available amount of source token to trade + /// @param _minReceive Min token receive after swap + function executeLiquidation( + address _ibToken, + address _repayToken, + uint256 _ibTokenAmountIn, + uint256, /*_repayAmount*/ + uint256 _minReceive + ) external onlyWhitelistedCallers { + // get underlying tokenAddress from MoneyMarket + address _underlyingToken = moneyMarket.getTokenFromIbToken(_ibToken); + + // Revert if _underlyingToken and _repayToken are the same address + if (_underlyingToken == _repayToken) { + revert PancakeswapV3IbTokenLiquidationStrategy_RepayTokenIsSameWithUnderlyingToken(); + } + + bytes memory _path = pathReader.paths(_underlyingToken, _repayToken); + // Revert if no swapPath config for _underlyingToken and _repayToken pair + if (_path.length == 0) { + revert PancakeswapV3IbTokenLiquidationStrategy_PathConfigNotFound(_underlyingToken, _repayToken); + } + + // withdraw ibToken from Moneymarket for underlyingToken + uint256 _withdrawnUnderlyingAmount = moneyMarket.withdraw(msg.sender, _ibToken, _ibTokenAmountIn); + + // setup params from swap + IPancakeSwapRouterV3.ExactInputParams memory params = IPancakeSwapRouterV3.ExactInputParams({ + path: _path, + recipient: msg.sender, + deadline: block.timestamp, + amountIn: _withdrawnUnderlyingAmount, + amountOutMinimum: _minReceive + }); + + // approve router for swapping + IERC20(_underlyingToken).safeApprove(address(router), _withdrawnUnderlyingAmount); + // swap all ib's underlyingToken to repayToken + router.exactInput(params); + } + + /// @notice Set callers ok + /// @param _callers A list of caller addresses + /// @param _isOk An ok flag + function setCallersOk(address[] calldata _callers, bool _isOk) external onlyOwner { + uint256 _length = _callers.length; + for (uint256 _i; _i < _length; ) { + callersOk[_callers[_i]] = _isOk; + emit LogSetCaller(_callers[_i], _isOk); + unchecked { + ++_i; + } + } + } + + /// @notice Withdraw ERC20 from this contract + /// @param _withdrawParams an array of Withdrawal parameters (to, token, amount) + function withdraw(WithdrawParam[] calldata _withdrawParams) external onlyOwner { + uint256 _length = _withdrawParams.length; + for (uint256 _i; _i < _length; ) { + IERC20(_withdrawParams[_i].token).safeTransfer(_withdrawParams[_i].to, _withdrawParams[_i].amount); + + unchecked { + ++_i; + } + } + } +} diff --git a/solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol b/solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol index 8bd373c8..ec3df68c 100644 --- a/solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol +++ b/solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol @@ -13,6 +13,7 @@ import { ILiquidationStrategy } from "./interfaces/ILiquidationStrategy.sol"; import { IPancakeSwapRouterV3 } from "./interfaces/IPancakeSwapRouterV3.sol"; import { IERC20 } from "./interfaces/IERC20.sol"; import { IPancakeV3Pool } from "./interfaces/IPancakeV3Pool.sol"; +import { IPathPCSV3Reader } from "../reader/interfaces/IPathPCSV3Reader.sol"; contract PancakeswapV3TokenLiquidationStrategy is ILiquidationStrategy, Ownable { using LibSafeToken for IERC20; @@ -27,6 +28,7 @@ contract PancakeswapV3TokenLiquidationStrategy is ILiquidationStrategy, Ownable error PancakeswapV3TokenLiquidationStrategy_NoLiquidity(address tokenA, address tokenB, uint24 fee); IPancakeSwapRouterV3 internal immutable router; + IPathPCSV3Reader public pathReader; address internal constant PANCAKE_V3_POOL_DEPLOYER = 0x41ff9AA7e16B8B1a8a8dc4f0eFacd93D02d071c9; bytes32 internal constant POOL_INIT_CODE_HASH = 0x6ce8eb472fa82df5469c6ab6d485f17c3ad13c8cd7af59b3d4a8026c5ce0f7e2; @@ -49,8 +51,9 @@ contract PancakeswapV3TokenLiquidationStrategy is ILiquidationStrategy, Ownable _; } - constructor(address _router) { + constructor(address _router, address _pathReader) { router = IPancakeSwapRouterV3(_router); + pathReader = IPathPCSV3Reader(_pathReader); } /// @notice Execute liquidate from collatToken to repayToken @@ -70,7 +73,7 @@ contract PancakeswapV3TokenLiquidationStrategy is ILiquidationStrategy, Ownable revert PancakeswapV3TokenLiquidationStrategy_RepayTokenIsSameWithCollatToken(); } - bytes memory _path = paths[_collatToken][_repayToken]; + bytes memory _path = pathReader.paths(_collatToken, _repayToken); // Revert if no swapPath config for _collatToken and _repayToken pair if (_path.length == 0) { revert PancakeswapV3TokenLiquidationStrategy_PathConfigNotFound(_collatToken, _repayToken); @@ -91,50 +94,6 @@ contract PancakeswapV3TokenLiquidationStrategy is ILiquidationStrategy, Ownable router.exactInput(params); } - /// @notice Set paths config to be used during swap step in executeLiquidation - /// @param _paths Array of parameters used to set path - function setPaths(bytes[] calldata _paths) external onlyOwner { - uint256 _len = _paths.length; - for (uint256 _i; _i < _len; ) { - bytes memory _path = _paths[_i]; - - while (true) { - bool hasMultiplePools = LibPath.hasMultiplePools(_path); - - // extract the token from encoded hop - (address _token0, address _token1, uint24 _fee) = _path.decodeFirstPool(); - - // compute pool address from token0, token1 and fee - address _pool = _computeAddressV3(_token0, _token1, _fee); - - // revert EVM error if pool is not existing (cannot call liquidity) - if (IPancakeV3Pool(_pool).liquidity() == 0) { - // revert no liquidity if there's no liquidity - revert PancakeswapV3TokenLiquidationStrategy_NoLiquidity(_token0, _token1, _fee); - } - - // if true, go to the next hop - if (hasMultiplePools) { - _path = _path.skipToken(); - } else { - // if it's last hop - // Get source token address from first hop - (address _source, , ) = _paths[_i].decodeFirstPool(); - // Get destination token from last hop - (, address _destination, ) = _path.decodeFirstPool(); - // Assign to global paths - paths[_source][_destination] = _paths[_i]; - emit LogSetPath(_source, _destination, _paths[_i]); - break; - } - } - - unchecked { - ++_i; - } - } - } - /// @notice Set callers ok /// @param _callers A list of caller addresses /// @param _isOk An ok flag @@ -161,26 +120,4 @@ contract PancakeswapV3TokenLiquidationStrategy is ILiquidationStrategy, Ownable } } } - - function _computeAddressV3( - address _tokenA, - address _tokenB, - uint24 _fee - ) internal pure returns (address pool) { - if (_tokenA > _tokenB) (_tokenA, _tokenB) = (_tokenB, _tokenA); - pool = address( - uint160( - uint256( - keccak256( - abi.encodePacked( - hex"ff", - PANCAKE_V3_POOL_DEPLOYER, - keccak256(abi.encode(_tokenA, _tokenB, _fee)), - POOL_INIT_CODE_HASH - ) - ) - ) - ) - ); - } } diff --git a/solidity/contracts/money-market/libraries/LibBytes.sol b/solidity/contracts/money-market/libraries/LibBytes.sol new file mode 100644 index 00000000..ab5ce598 --- /dev/null +++ b/solidity/contracts/money-market/libraries/LibBytes.sol @@ -0,0 +1,101 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * @title Solidity Bytes Arrays Utils + * @author Gonçalo Sá + * + * @dev Bytes tightly packed arrays utility library for ethereum contracts written in Solidity. + * The library lets you concatenate, slice and type cast bytes arrays both in memory and storage. + */ +pragma solidity 0.8.19; + +library LibBytes { + function slice( + bytes memory _bytes, + uint256 _start, + uint256 _length + ) internal pure returns (bytes memory) { + require(_length + 31 >= _length, "slice_overflow"); + require(_start + _length >= _start, "slice_overflow"); + require(_bytes.length >= _start + _length, "slice_outOfBounds"); + + bytes memory tempBytes; + + assembly { + switch iszero(_length) + case 0 { + // Get a location of some free memory and store it in tempBytes as + // Solidity does for memory variables. + tempBytes := mload(0x40) + + // The first word of the slice result is potentially a partial + // word read from the original array. To read it, we calculate + // the length of that partial word and start copying that many + // bytes into the array. The first word we copy will start with + // data we don't care about, but the last `lengthmod` bytes will + // land at the beginning of the contents of the new array. When + // we're done copying, we overwrite the full first word with + // the actual length of the slice. + let lengthmod := and(_length, 31) + + // The multiplication in the next line is necessary + // because when slicing multiples of 32 bytes (lengthmod == 0) + // the following copy loop was copying the origin's length + // and then ending prematurely not copying everything it should. + let mc := add(add(tempBytes, lengthmod), mul(0x20, iszero(lengthmod))) + let end := add(mc, _length) + + for { + // The multiplication in the next line has the same exact purpose + // as the one above. + let cc := add(add(add(_bytes, lengthmod), mul(0x20, iszero(lengthmod))), _start) + } lt(mc, end) { + mc := add(mc, 0x20) + cc := add(cc, 0x20) + } { + mstore(mc, mload(cc)) + } + + mstore(tempBytes, _length) + + //update free-memory pointer + //allocating the array padded to 32 bytes like the compiler does now + mstore(0x40, and(add(mc, 31), not(31))) + } + //if we want a zero-length slice let's just return a zero-length array + default { + tempBytes := mload(0x40) + //zero out the 32 bytes slice we are about to return + //we need to do it because Solidity does not garbage collect + mstore(tempBytes, 0) + + mstore(0x40, add(tempBytes, 0x20)) + } + } + + return tempBytes; + } + + function toAddress(bytes memory _bytes, uint256 _start) internal pure returns (address) { + require(_start + 20 >= _start, "toAddress_overflow"); + require(_bytes.length >= _start + 20, "toAddress_outOfBounds"); + address tempAddress; + + assembly { + tempAddress := div(mload(add(add(_bytes, 0x20), _start)), 0x1000000000000000000000000) + } + + return tempAddress; + } + + function toUint24(bytes memory _bytes, uint256 _start) internal pure returns (uint24) { + require(_start + 3 >= _start, "toUint24_overflow"); + require(_bytes.length >= _start + 3, "toUint24_outOfBounds"); + uint24 tempUint; + + assembly { + tempUint := mload(add(add(_bytes, 0x3), _start)) + } + + return tempUint; + } +} diff --git a/solidity/contracts/money-market/libraries/LibPath.sol b/solidity/contracts/money-market/libraries/LibPath.sol new file mode 100644 index 00000000..218a179c --- /dev/null +++ b/solidity/contracts/money-market/libraries/LibPath.sol @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +pragma solidity >=0.6.0; + +import "./LibBytes.sol"; + +/// original is Path.sol from https://github.com/Uniswap/v3-periphery/blob/main/contracts/libraries/Path.sol +/// @title Functions for manipulating path data for multihop swaps +library LibPath { + using LibBytes for bytes; + + /// @dev The length of the bytes encoded address + uint256 private constant ADDR_SIZE = 20; + /// @dev The length of the bytes encoded fee + uint256 private constant FEE_SIZE = 3; + + /// @dev The offset of a single token address and pool fee + uint256 private constant NEXT_OFFSET = ADDR_SIZE + FEE_SIZE; + /// @dev The offset of an encoded pool key + uint256 private constant POP_OFFSET = NEXT_OFFSET + ADDR_SIZE; + /// @dev The minimum length of an encoding that contains 2 or more pools + uint256 private constant MULTIPLE_POOLS_MIN_LENGTH = POP_OFFSET + NEXT_OFFSET; + + /// @notice Returns true iff the path contains two or more pools + /// @param path The encoded swap path + /// @return True if path contains two or more pools, otherwise false + function hasMultiplePools(bytes memory path) internal pure returns (bool) { + return path.length >= MULTIPLE_POOLS_MIN_LENGTH; + } + + /// @notice Returns the number of pools in the path + /// @param path The encoded swap path + /// @return The number of pools in the path + function numPools(bytes memory path) internal pure returns (uint256) { + // Ignore the first token address. From then on every fee and token offset indicates a pool. + return ((path.length - ADDR_SIZE) / NEXT_OFFSET); + } + + /// @notice Decodes the first pool in path + /// @param path The bytes encoded swap path + /// @return tokenA The first token of the given pool + /// @return tokenB The second token of the given pool + /// @return fee The fee level of the pool + function decodeFirstPool(bytes memory path) + internal + pure + returns ( + address tokenA, + address tokenB, + uint24 fee + ) + { + tokenA = path.toAddress(0); + fee = path.toUint24(ADDR_SIZE); + tokenB = path.toAddress(NEXT_OFFSET); + } + + /// @notice Gets the segment corresponding to the first pool in the path + /// @param path The bytes encoded swap path + /// @return The segment containing all data necessary to target the first pool in the path + function getFirstPool(bytes memory path) internal pure returns (bytes memory) { + return path.slice(0, POP_OFFSET); + } + + /// @notice Skips a token + fee element from the buffer and returns the remainder + /// @param path The swap path + /// @return The remaining token + fee elements in the path + function skipToken(bytes memory path) internal pure returns (bytes memory) { + return path.slice(NEXT_OFFSET, path.length - NEXT_OFFSET); + } +} diff --git a/solidity/contracts/reader/PancakeSwapPathV3Reader.sol b/solidity/contracts/reader/PathPCSV3Reader.sol similarity index 89% rename from solidity/contracts/reader/PancakeSwapPathV3Reader.sol rename to solidity/contracts/reader/PathPCSV3Reader.sol index 6b95c86c..29973463 100644 --- a/solidity/contracts/reader/PancakeSwapPathV3Reader.sol +++ b/solidity/contracts/reader/PathPCSV3Reader.sol @@ -4,9 +4,9 @@ pragma solidity 0.8.19; import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; import { LibPath } from "./libraries/LibPath.sol"; import { IPancakeV3Pool } from "../money-market/interfaces/IPancakeV3Pool.sol"; -import { IPathV3Reader } from "./interfaces/IPathV3Reader.sol"; +import { IPathPCSV3Reader } from "./interfaces/IPathPCSV3Reader.sol"; -contract PancakeSwapPathV3Reader is IPathV3Reader, Ownable { +contract PathPCSV3Reader is IPathPCSV3Reader, Ownable { using LibPath for bytes; address internal constant PANCAKE_V3_POOL_DEPLOYER = 0x41ff9AA7e16B8B1a8a8dc4f0eFacd93D02d071c9; @@ -15,7 +15,7 @@ contract PancakeSwapPathV3Reader is IPathV3Reader, Ownable { // tokenIn => tokenOut => path mapping(address => mapping(address => bytes)) public override paths; - error PancakeSwapPathV3Reader_NoLiquidity(address tokenA, address tokenB, uint24 fee); + error PathPCSV3Reader_NoLiquidity(address tokenA, address tokenB, uint24 fee); event LogSetPath(address _token0, address _token1, bytes _path); @@ -36,7 +36,7 @@ contract PancakeSwapPathV3Reader is IPathV3Reader, Ownable { // revert EVM error if pool is not existing (cannot call liquidity) if (IPancakeV3Pool(_pool).liquidity() == 0) { // revert no liquidity if there's no liquidity - revert PancakeSwapPathV3Reader_NoLiquidity(_token0, _token1, _fee); + revert PathPCSV3Reader_NoLiquidity(_token0, _token1, _fee); } // if true, go to the next hop diff --git a/solidity/contracts/reader/interfaces/IPathV3Reader.sol b/solidity/contracts/reader/interfaces/IPathPCSV3Reader.sol similarity index 87% rename from solidity/contracts/reader/interfaces/IPathV3Reader.sol rename to solidity/contracts/reader/interfaces/IPathPCSV3Reader.sol index 4b9841fb..58ae2a2a 100644 --- a/solidity/contracts/reader/interfaces/IPathV3Reader.sol +++ b/solidity/contracts/reader/interfaces/IPathPCSV3Reader.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: BUSL pragma solidity 0.8.19; -interface IPathV3Reader { +interface IPathPCSV3Reader { function setPaths(bytes[] calldata _paths) external; function paths(address _source, address _destination) external returns (bytes memory); diff --git a/solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol b/solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol index 6963339c..55a4e53f 100644 --- a/solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol +++ b/solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol @@ -4,8 +4,7 @@ pragma solidity 0.8.19; import { DSTest } from "solidity/tests/base/DSTest.sol"; import "../../utils/Components.sol"; -import { PancakeswapV3IbTokenLiquidationStrategy } from "solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol"; -import { PancakeSwapPathV3Reader } from "../../../contracts/reader/PancakeSwapPathV3Reader.sol"; +import { PathPCSV3Reader } from "solidity/contracts/reader/PathPCSV3Reader.sol"; // interfaces import { IPancakeSwapRouterV3 } from "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol"; @@ -48,7 +47,7 @@ contract BasePCSV3LiquidationForkTest is DSTest, StdUtils, StdAssertions, StdChe IPancakeSwapRouterV3 internal router = IPancakeSwapRouterV3(0x1b81D678ffb9C0263b24A97847620C99d213eB14); IQuoterV2 internal quoterV2 = IQuoterV2(0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997); MockMoneyMarket internal moneyMarket; - PancakeswapV3IbTokenLiquidationStrategy internal liquidationStrat; + PathPCSV3Reader internal pathReader; function setUp() public virtual { vm.selectFork(vm.createFork(BSC_URL_RPC)); @@ -63,12 +62,7 @@ contract BasePCSV3LiquidationForkTest is DSTest, StdUtils, StdAssertions, StdChe ibETHDecimal = ibETH.decimals(); moneyMarket = new MockMoneyMarket(); - - liquidationStrat = new PancakeswapV3IbTokenLiquidationStrategy( - address(router), - address(moneyMarket), - address(pathReader) - ); + pathReader = new PathPCSV3Reader(); vm.label(ALICE, "ALICE"); vm.label(BOB, "BOB"); } diff --git a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol index 7ea23066..395aaae3 100644 --- a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol +++ b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol @@ -27,7 +27,7 @@ contract PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation is BasePCSV3 // Set path paths[0] = abi.encodePacked(address(ETH), uint24(2500), address(btcb)); - pathReader.setPaths(paths); + liquidationStrat.setPaths(paths); vm.startPrank(BSC_TOKEN_OWNER); ETH.mint(normalizeEther(10 ether, ETHDecimal)); // mint to mm @@ -170,7 +170,7 @@ contract PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation is BasePCSV3 // set multi-hop path ETH => btcb => usdt bytes[] memory _paths = new bytes[](1); _paths[0] = abi.encodePacked(address(ETH), uint24(2500), address(btcb), uint24(500), address(usdt)); - pathReader.setPaths(_paths); + liquidationStrat.setPaths(_paths); // transfer ib to strat vm.startPrank(ALICE); diff --git a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol index 856f5ee0..c3092bb3 100644 --- a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol +++ b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol @@ -3,7 +3,6 @@ pragma solidity 0.8.19; import { BasePCSV3LiquidationForkTest } from "./BasePCSV3LiquidationForkTest.sol"; import { PancakeswapV3IbTokenLiquidationStrategy } from "../../../contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol"; -import { PancakeSwapPathV3Reader } from "../../../contracts/reader/PancakeSwapPathV3Reader.sol"; // libs import { LibPCSV3PoolAddress } from "../../libs/LibPCSV3PoolAddress.sol"; @@ -45,16 +44,16 @@ contract PancakeswapV3IbTokenLiquidationStrategy_SetConfigs is BasePCSV3Liquidat bytes[] memory _paths = new bytes[](1); _paths[0] = abi.encodePacked(address(cake), poolFee, address(wbnb)); - pathReader.setPaths(_paths); - assertEq(pathReader.paths(address(cake), address(wbnb)), _paths[0]); + liquidationStrat.setPaths(_paths); + assertEq(liquidationStrat.paths(address(cake), address(wbnb)), _paths[0]); } function testCorrectness_WhenOwnerSetPathMultiHop_ShouldWork() external { bytes[] memory _paths = new bytes[](1); _paths[0] = abi.encodePacked(address(cake), poolFee, address(usdt), poolFee, address(wbnb)); - pathReader.setPaths(_paths); + liquidationStrat.setPaths(_paths); - assertEq(pathReader.paths(address(cake), address(wbnb)), _paths[0]); + assertEq(liquidationStrat.paths(address(cake), address(wbnb)), _paths[0]); } function testRevert_WhenOwnerSetNonExistingPath_ShouldRevert() external { @@ -67,7 +66,7 @@ contract PancakeswapV3IbTokenLiquidationStrategy_SetConfigs is BasePCSV3Liquidat // Expect EVM Error. Since we call pool.liquidity() where pool is not existing vm.expectRevert(); - pathReader.setPaths(_paths); + liquidationStrat.setPaths(_paths); // expect pool address address _poolAddress = LibPCSV3PoolAddress.computeAddress( @@ -75,15 +74,15 @@ contract PancakeswapV3IbTokenLiquidationStrategy_SetConfigs is BasePCSV3Liquidat LibPCSV3PoolAddress.getPoolKey(address(_randomToken0), address(_randomToken1), poolFee) ); - // when mock liquidity => 0, should revert PancakeSwapPathV3Reader_NoLiquidity correctly + // when mock liquidity => 0, should revert PancakeswapV3IbTokenLiquidationStrategy_NoLiquidity correctly vm.mockCall(address(_poolAddress), abi.encodeWithSelector(IPancakeV3PoolState.liquidity.selector), abi.encode(0)); vm.expectRevert( abi.encodeWithSelector( - PancakeSwapPathV3Reader.PancakeSwapPathV3Reader_NoLiquidity.selector, + PancakeswapV3IbTokenLiquidationStrategy.PancakeswapV3IbTokenLiquidationStrategy_NoLiquidity.selector, [address(_randomToken0), address(_randomToken1), address(uint160(poolFee))] ) ); - pathReader.setPaths(_paths); + liquidationStrat.setPaths(_paths); } function testRevert_WhenCallerIsNotOwner_ShouldRevert() external { @@ -92,6 +91,6 @@ contract PancakeswapV3IbTokenLiquidationStrategy_SetConfigs is BasePCSV3Liquidat vm.prank(ALICE); vm.expectRevert("Ownable: caller is not the owner"); - pathReader.setPaths(_paths); + liquidationStrat.setPaths(_paths); } } diff --git a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation.t.sol b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation.t.sol index 03106225..a8b20bff 100644 --- a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation.t.sol +++ b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation.t.sol @@ -13,7 +13,7 @@ contract PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation is BasePCSV3Li function setUp() public override { super.setUp(); - liquidationStrat = new PancakeswapV3TokenLiquidationStrategy(address(router)); + liquidationStrat = new PancakeswapV3TokenLiquidationStrategy(address(router), address(pathReader)); address[] memory _callers = new address[](1); _callers[0] = ALICE; @@ -21,7 +21,7 @@ contract PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation is BasePCSV3Li // Set path paths[0] = abi.encodePacked(address(ETH), uint24(2500), address(btcb)); - liquidationStrat.setPaths(paths); + pathReader.setPaths(paths); // mint ETH to ALICE vm.startPrank(BSC_TOKEN_OWNER); @@ -106,13 +106,7 @@ contract PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation is BasePCSV3Li address _debtToken = address(cake); vm.prank(ALICE); - vm.expectRevert( - abi.encodeWithSelector( - PancakeswapV3TokenLiquidationStrategy.PancakeswapV3TokenLiquidationStrategy_PathConfigNotFound.selector, - _collatToken, - _debtToken - ) - ); + vm.expectRevert(); liquidationStrat.executeLiquidation( _collatToken, _debtToken, @@ -140,7 +134,7 @@ contract PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation is BasePCSV3Li // set multi-hop path ETH => btcb => usdt bytes[] memory _paths = new bytes[](1); _paths[0] = abi.encodePacked(address(ETH), uint24(2500), address(btcb), uint24(500), address(usdt)); - liquidationStrat.setPaths(_paths); + pathReader.setPaths(_paths); // transfer collat to to strat vm.startPrank(ALICE); diff --git a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol index 06c5fac5..e7a64b34 100644 --- a/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol +++ b/solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol @@ -15,7 +15,7 @@ contract PancakeswapV3TokenLiquidationStrategy_SetConfigs is BasePCSV3Liquidatio function setUp() public override { super.setUp(); - liquidationStrat = new PancakeswapV3TokenLiquidationStrategy(address(router)); + liquidationStrat = new PancakeswapV3TokenLiquidationStrategy(address(router), address(pathReader)); } function testCorrectness_WhenOwnerSetCallersOk_ShouldWork() external { @@ -41,16 +41,16 @@ contract PancakeswapV3TokenLiquidationStrategy_SetConfigs is BasePCSV3Liquidatio bytes[] memory _paths = new bytes[](1); _paths[0] = abi.encodePacked(address(cake), poolFee, address(wbnb)); - liquidationStrat.setPaths(_paths); - assertEq(liquidationStrat.paths(address(cake), address(wbnb)), _paths[0]); + pathReader.setPaths(_paths); + assertEq(pathReader.paths(address(cake), address(wbnb)), _paths[0]); } function testCorrectness_WhenOwnerSetPathMultiHop_ShouldWork() external { bytes[] memory _paths = new bytes[](1); _paths[0] = abi.encodePacked(address(cake), poolFee, address(usdt), poolFee, address(wbnb)); - liquidationStrat.setPaths(_paths); + pathReader.setPaths(_paths); - assertEq(liquidationStrat.paths(address(cake), address(wbnb)), _paths[0]); + assertEq(pathReader.paths(address(cake), address(wbnb)), _paths[0]); } function testRevert_WhenOwnerSetNonExistingPath_ShouldRevert() external { @@ -62,7 +62,7 @@ contract PancakeswapV3TokenLiquidationStrategy_SetConfigs is BasePCSV3Liquidatio _paths[0] = abi.encodePacked(address(_randomToken0), poolFee, address(_randomToken1)); vm.expectRevert(); - liquidationStrat.setPaths(_paths); + pathReader.setPaths(_paths); } function testRevert_WhenNotOwnerSetPaths_ShouldRevert() external { @@ -71,6 +71,6 @@ contract PancakeswapV3TokenLiquidationStrategy_SetConfigs is BasePCSV3Liquidatio vm.prank(ALICE); vm.expectRevert("Ownable: caller is not the owner"); - liquidationStrat.setPaths(_paths); + pathReader.setPaths(_paths); } } diff --git a/solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol b/solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol new file mode 100644 index 00000000..8f504fd8 --- /dev/null +++ b/solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol @@ -0,0 +1,285 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import { BasePCSV3LiquidationForkTest } from "./BasePCSV3LiquidationForkTest.sol"; +import { PancakeswapV3IbTokenLiquidationStrategy_WithPathReader } from "../../../contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol"; + +// mocks +import { MockERC20 } from "solidity/tests/mocks/MockERC20.sol"; + +contract WithReader_PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation is BasePCSV3LiquidationForkTest { + bytes[] internal paths = new bytes[](1); + PancakeswapV3IbTokenLiquidationStrategy_WithPathReader internal liquidationStrat; + + function setUp() public override { + super.setUp(); + + liquidationStrat = new PancakeswapV3IbTokenLiquidationStrategy_WithPathReader( + address(router), + address(moneyMarket), + address(pathReader) + ); + + // mint ibETH to alice + ibETH.mint(ALICE, normalizeEther(1 ether, ibETHDecimal)); + + moneyMarket.setIbToken(address(ibETH), address(ETH)); + + address[] memory _callers = new address[](1); + _callers[0] = ALICE; + liquidationStrat.setCallersOk(_callers, true); + + // Set path + paths[0] = abi.encodePacked(address(ETH), uint24(2500), address(btcb)); + pathReader.setPaths(paths); + + vm.startPrank(BSC_TOKEN_OWNER); + ETH.mint(normalizeEther(10 ether, ETHDecimal)); // mint to mm + ETH.transfer(address(moneyMarket), normalizeEther(10 ether, ETHDecimal)); + btcb.mint(normalizeEther(10 ether, btcbDecimal)); // mint to mm + btcb.transfer(address(moneyMarket), normalizeEther(10 ether, btcbDecimal)); + vm.stopPrank(); + } + + function testRevert_WhenThereIsNoConfiguredPath_ShouldRevert() external { + vm.prank(address(ALICE)); + vm.expectRevert( + abi.encodeWithSelector( + PancakeswapV3IbTokenLiquidationStrategy_WithPathReader + .PancakeswapV3IbTokenLiquidationStrategy_PathConfigNotFound + .selector, + [address(ETH), address(usdt)] + ) + ); + liquidationStrat.executeLiquidation( + address(ibETH), + address(usdt), + normalizeEther(1 ether, ibETHDecimal), + normalizeEther(1 ether, usdtDecimal), + 0 + ); + } + + function testRevert_WhenNonOwnerExecuteLiquidationV3_ShouldRevert() external { + // prepare criteria + address _ibToken = address(ibETH); + address _debtToken = address(btcb); + uint256 _ibTokenIn = normalizeEther(1 ether, ibETHDecimal); + uint256 _minReceive = 0; + + ibETH.mint(BOB, normalizeEther(1 ether, ibETHDecimal)); + vm.startPrank(BOB); + ibETH.transfer(address(liquidationStrat), _ibTokenIn); + vm.expectRevert( + abi.encodeWithSelector( + PancakeswapV3IbTokenLiquidationStrategy_WithPathReader + .PancakeswapV3IbTokenLiquidationStrategy_Unauthorized + .selector + ) + ); + liquidationStrat.executeLiquidation(_ibToken, _debtToken, _ibTokenIn, 0, _minReceive); + vm.stopPrank(); + } + + function testCorrectness_WhenExecuteIbTokenLiquiationStratV3_ShouldWork() external { + // prepare criteria + address _ibToken = address(ibETH); + address _debtToken = address(btcb); + uint256 _ibTokenIn = normalizeEther(1 ether, ibETHDecimal); + uint256 _minReceive = 0; + + // state before execution + uint256 _aliceIbTokenBalanceBefore = ibETH.balanceOf(ALICE); + uint256 _aliceETHBalanceBefore = ETH.balanceOf(ALICE); + uint256 _aliceBTCBBalanceBefore = btcb.balanceOf(ALICE); + + // all ib token will be swapped (no ib left in liquidationStrat) + + // mock withdrawal amount + uint256 _expectedIbTokenAmountToWithdraw = normalizeEther(1 ether, ibETHDecimal); + uint256 _expectedWithdrawalAmount = normalizeEther(1 ether, ETHDecimal); + moneyMarket.setWithdrawalAmount(_expectedWithdrawalAmount); + + // expect amount out + (uint256 _expectedAmountOut, , , ) = quoterV2.quoteExactInput(paths[0], _ibTokenIn); + + vm.startPrank(ALICE); + // transfer ib token to strat + ibETH.transfer(address(liquidationStrat), _ibTokenIn); + assertEq(ibETH.balanceOf(address(liquidationStrat)), _ibTokenIn, "ibETH balance of liquidationStrat"); + liquidationStrat.executeLiquidation(_ibToken, _debtToken, _ibTokenIn, 0, _minReceive); + vm.stopPrank(); + + // ALICE's balance after execution + uint256 _aliceBTCBBalanceAfter = btcb.balanceOf(ALICE); + + // nothing left in strat + // to check underlyingToken should swap all + assertEq(ETH.balanceOf(address(liquidationStrat)), 0, "ETH balance of liquidationStrat"); + + // to check swapped token should be here + assertEq(btcb.balanceOf(address(liquidationStrat)), 0, "btcb balance of liquidationStrat"); + + // to check swap work correctly + assertEq(_aliceBTCBBalanceAfter, _aliceBTCBBalanceBefore + _expectedAmountOut, "btcb balance of ALICE"); + + // to check final ibToken should be corrected + assertEq( + ibETH.balanceOf(ALICE), + _aliceIbTokenBalanceBefore - _expectedIbTokenAmountToWithdraw, + "ibETH balance of ALICE" + ); + + // to check final underlying should be not affected + assertEq(ETH.balanceOf(ALICE), _aliceETHBalanceBefore, "ETH balance of ALICE"); + } + + function testRevert_WhenExecuteIbTokenLiquiationStratV3AndUnderlyingTokenAndRepayTokenAreSame() external { + // prepare criteria + address _ibToken = address(ibETH); + address _debtToken = address(ETH); + uint256 _ibTokenIn = normalizeEther(1 ether, ibETHDecimal); + uint256 _minReceive = 0 ether; + + // _ibTokenTotalSupply = 100 ether + // _totalTokenWithInterest = 100 ether + // _requireAmountToWithdraw = repay amount = 1 ether + // to withdraw, amount to withdraw = Min(_requireAmountToWithdraw, _ibTokenIn) = 1 ether + + vm.startPrank(ALICE); + // transfer ib token to strat + ibETH.transfer(address(liquidationStrat), _ibTokenIn); + vm.expectRevert( + abi.encodeWithSelector( + PancakeswapV3IbTokenLiquidationStrategy_WithPathReader + .PancakeswapV3IbTokenLiquidationStrategy_RepayTokenIsSameWithUnderlyingToken + .selector + ) + ); + liquidationStrat.executeLiquidation(_ibToken, _debtToken, _ibTokenIn, 0, _minReceive); + vm.stopPrank(); + } + + function testCorrectness_WhenLiduidateMultiHopIbToken_ShouldWork() external { + address _ibToken = address(ibETH); + address _debtToken = address(usdt); + uint256 _ibTokenAmountIn = normalizeEther(1 ether, ibETHDecimal); + uint256 _minReceive = 0; + + // set withdrawal amount + uint256 _expectedWithdrawalAmount = normalizeEther(1 ether, ETHDecimal); + moneyMarket.setWithdrawalAmount(_expectedWithdrawalAmount); + + // state before execution + uint256 _aliceETHBalanceBefore = ETH.balanceOf(ALICE); + uint256 _aliceBTCBBalanceBefore = btcb.balanceOf(ALICE); + uint256 _aliceUSDTBalanceBefore = usdt.balanceOf(ALICE); + + // set multi-hop path ETH => btcb => usdt + bytes[] memory _paths = new bytes[](1); + _paths[0] = abi.encodePacked(address(ETH), uint24(2500), address(btcb), uint24(500), address(usdt)); + pathReader.setPaths(_paths); + + // transfer ib to strat + vm.startPrank(ALICE); + ibETH.transfer(address(liquidationStrat), _ibTokenAmountIn); + // expect amount out 2 hop expect btcb, expect usdt + bytes memory _ETHToBtcbPath = abi.encodePacked(address(ETH), uint24(2500), address(btcb)); + (uint256 _expectedBTCBOut, , , ) = quoterV2.quoteExactInput(_ETHToBtcbPath, _ibTokenAmountIn); + + bytes memory _BtcbToUsdtPath = abi.encodePacked(address(btcb), uint24(500), address(usdt)); + (uint256 _expectedUSDTOut, , , ) = quoterV2.quoteExactInput(_BtcbToUsdtPath, _expectedBTCBOut); + + liquidationStrat.executeLiquidation(_ibToken, _debtToken, _ibTokenAmountIn, 0, _minReceive); + + uint256 _aliceETHBalanceAfter = ETH.balanceOf(ALICE); + uint256 _aliceBTCBBalanceAfter = btcb.balanceOf(ALICE); + uint256 _aliceUSDTBalanceAfter = usdt.balanceOf(ALICE); + + // nothing left in strat + assertEq(ETH.balanceOf(address(liquidationStrat)), 0, "ETH balance of strat"); + assertEq(btcb.balanceOf(address(liquidationStrat)), 0, "btcb balance of strat"); + assertEq(usdt.balanceOf(address(liquidationStrat)), 0, "usdt balance of strat"); + + // eth of alice must not effect + assertEq(_aliceETHBalanceAfter, _aliceETHBalanceBefore, "ETH balance of ALICE"); + + // btcb of alice (middle hop) must not left + assertEq(_aliceBTCBBalanceAfter, _aliceBTCBBalanceBefore, "BTCB balance of ALICE"); + + // huge amount of collat token will cause the revert, since the tick would be changed + // repay token (usdt) of alice must increase + assertEq(_aliceUSDTBalanceAfter, _aliceUSDTBalanceBefore + _expectedUSDTOut, "USDT balance of ALICE"); + } + + function testCorrect_WhenCallerWithdraw_ShouldWork() external { + // mint erc20 to strat (token0, token1) + MockERC20 _token0 = new MockERC20("token0", "TK0", 18); + MockERC20 _token1 = new MockERC20("token1", "TK1", 18); + uint256 _token0Decimal = _token0.decimals(); + uint256 _token1Decimal = _token1.decimals(); + + uint256 _withdrawToken0Amount = normalizeEther(10, _token0Decimal); + uint256 _withdrawToken1Amount = normalizeEther(10, _token1Decimal); + _token0.mint(address(liquidationStrat), _withdrawToken0Amount); + _token1.mint(address(liquidationStrat), _withdrawToken1Amount); + + // balance before + uint256 _stratToken0BalanceBefore = _token0.balanceOf(address(liquidationStrat)); + uint256 _stratToken1BalanceBefore = _token1.balanceOf(address(liquidationStrat)); + uint256 _aliceToken0BalanceBefore = _token0.balanceOf(address(ALICE)); + uint256 _aliceToken1BalanceBefore = _token1.balanceOf(address(ALICE)); + + // use owner to withdraw + PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.WithdrawParam[] + memory _withdrawParams = new PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.WithdrawParam[](2); + _withdrawParams[0] = PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.WithdrawParam( + ALICE, + address(_token0), + _withdrawToken0Amount + ); + _withdrawParams[1] = PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.WithdrawParam( + ALICE, + address(_token1), + _withdrawToken1Amount + ); + + liquidationStrat.withdraw(_withdrawParams); + + // balance after + uint256 _stratToken0BalanceAfter = _token0.balanceOf(address(liquidationStrat)); + uint256 _stratToken1BalanceAfter = _token1.balanceOf(address(liquidationStrat)); + uint256 _aliceToken0BalanceAfter = _token0.balanceOf(address(ALICE)); + uint256 _aliceToken1BalanceAfter = _token1.balanceOf(address(ALICE)); + + // assert + // strat: after = before - withdraw + assertEq(_stratToken0BalanceAfter, _stratToken0BalanceBefore - _withdrawToken0Amount); + assertEq(_stratToken1BalanceAfter, _stratToken1BalanceBefore - _withdrawToken1Amount); + // ALICE: after = before + withdraw + assertEq(_aliceToken0BalanceAfter, _aliceToken0BalanceBefore + _withdrawToken0Amount); + assertEq(_aliceToken1BalanceAfter, _aliceToken1BalanceBefore + _withdrawToken1Amount); + } + + function testRevert_WhenNonCallerWithdraw_ShouldRevert() external { + // mint erc20 to strat + MockERC20 _token = new MockERC20("token0", "TK0", 18); + uint256 _tokenDecimal = _token.decimals(); + + uint256 _withdrawAmount = normalizeEther(10, _tokenDecimal); + _token.mint(address(liquidationStrat), _withdrawAmount); + + PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.WithdrawParam[] + memory _withdrawParams = new PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.WithdrawParam[](1); + _withdrawParams[0] = PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.WithdrawParam( + ALICE, + address(_token), + _withdrawAmount + ); + + // prank to BOB and call withdraw + vm.startPrank(BOB); + vm.expectRevert("Ownable: caller is not the owner"); + liquidationStrat.withdraw(_withdrawParams); + } +} diff --git a/solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol b/solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol new file mode 100644 index 00000000..f975cb34 --- /dev/null +++ b/solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol @@ -0,0 +1,101 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import { BasePCSV3LiquidationForkTest } from "./BasePCSV3LiquidationForkTest.sol"; +import { PancakeswapV3IbTokenLiquidationStrategy_WithPathReader } from "../../../contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol"; +import { PathPCSV3Reader } from "../../../contracts/reader/PathPCSV3Reader.sol"; + +// libs +import { LibPCSV3PoolAddress } from "../../libs/LibPCSV3PoolAddress.sol"; + +// interfaces +import { IPancakeV3PoolState } from "../../../contracts/money-market/interfaces/IPancakeV3Pool.sol"; + +// mocks +import { MockERC20 } from "solidity/tests/mocks/MockERC20.sol"; + +contract WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs is BasePCSV3LiquidationForkTest { + PancakeswapV3IbTokenLiquidationStrategy_WithPathReader internal liquidationStrat; + + function setUp() public override { + super.setUp(); + liquidationStrat = new PancakeswapV3IbTokenLiquidationStrategy_WithPathReader( + address(router), + address(moneyMarket), + address(pathReader) + ); + } + + function testCorrectness_WhenOwnerSetCallersOk_ShouldWork() external { + address[] memory _callers = new address[](1); + _callers[0] = BOB; + + liquidationStrat.setCallersOk(_callers, true); + + assertTrue(liquidationStrat.callersOk(BOB)); + } + + function testRevert_WhenNonOwnerSetCallersOk_ShouldRevert() external { + address[] memory _callers = new address[](1); + _callers[0] = BOB; + + vm.prank(BOB); + vm.expectRevert("Ownable: caller is not the owner"); + liquidationStrat.setCallersOk(_callers, true); + } + + function testCorrectness_WhenOwnerSetPathSingleHop_ShouldWork() external { + // bytes[] paths + bytes[] memory _paths = new bytes[](1); + _paths[0] = abi.encodePacked(address(cake), poolFee, address(wbnb)); + + pathReader.setPaths(_paths); + assertEq(pathReader.paths(address(cake), address(wbnb)), _paths[0]); + } + + function testCorrectness_WhenOwnerSetPathMultiHop_ShouldWork() external { + bytes[] memory _paths = new bytes[](1); + _paths[0] = abi.encodePacked(address(cake), poolFee, address(usdt), poolFee, address(wbnb)); + pathReader.setPaths(_paths); + + assertEq(pathReader.paths(address(cake), address(wbnb)), _paths[0]); + } + + function testRevert_WhenOwnerSetNonExistingPath_ShouldRevert() external { + // random token + MockERC20 _randomToken0 = new MockERC20("Random0", "RD0", 18); + MockERC20 _randomToken1 = new MockERC20("Random1", "RD1", 18); + + bytes[] memory _paths = new bytes[](1); + _paths[0] = abi.encodePacked(address(_randomToken0), poolFee, address(_randomToken1)); + + // Expect EVM Error. Since we call pool.liquidity() where pool is not existing + vm.expectRevert(); + pathReader.setPaths(_paths); + + // expect pool address + address _poolAddress = LibPCSV3PoolAddress.computeAddress( + PANCAKE_V3_POOL_DEPLOYER, + LibPCSV3PoolAddress.getPoolKey(address(_randomToken0), address(_randomToken1), poolFee) + ); + + // when mock liquidity => 0, should revert PathPCSV3Reader_NoLiquidity correctly + vm.mockCall(address(_poolAddress), abi.encodeWithSelector(IPancakeV3PoolState.liquidity.selector), abi.encode(0)); + vm.expectRevert( + abi.encodeWithSelector( + PathPCSV3Reader.PathPCSV3Reader_NoLiquidity.selector, + [address(_randomToken0), address(_randomToken1), address(uint160(poolFee))] + ) + ); + pathReader.setPaths(_paths); + } + + function testRevert_WhenCallerIsNotOwner_ShouldRevert() external { + bytes[] memory _paths = new bytes[](1); + _paths[0] = abi.encodePacked(address(wbnb), poolFee, address(cake)); + + vm.prank(ALICE); + vm.expectRevert("Ownable: caller is not the owner"); + pathReader.setPaths(_paths); + } +} From 1ee34ed6712acfe9d321504d39160e2558080d33 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Mon, 8 May 2023 13:40:58 +0700 Subject: [PATCH 28/87] feat: init --- .../facets/AdminFacet_Whitelist.sol | 612 ++++++++++++++++++ 1 file changed, 612 insertions(+) create mode 100644 solidity/contracts/money-market/facets/AdminFacet_Whitelist.sol diff --git a/solidity/contracts/money-market/facets/AdminFacet_Whitelist.sol b/solidity/contracts/money-market/facets/AdminFacet_Whitelist.sol new file mode 100644 index 00000000..85538aab --- /dev/null +++ b/solidity/contracts/money-market/facets/AdminFacet_Whitelist.sol @@ -0,0 +1,612 @@ +// SPDX-License-Identifier: BUSL +pragma solidity 0.8.19; + +// ---- External Libraries ---- // +import { SafeCast } from "@openzeppelin/contracts/utils/math/SafeCast.sol"; +import { Clones } from "@openzeppelin/contracts/proxy/Clones.sol"; + +// ---- Libraries ---- // +import { LibMoneyMarket01 } from "../libraries/LibMoneyMarket01.sol"; +import { LibConstant } from "../libraries/LibConstant.sol"; +import { LibDiamond } from "../libraries/LibDiamond.sol"; +import { LibDoublyLinkedList } from "../libraries/LibDoublyLinkedList.sol"; +import { LibSafeToken } from "../libraries/LibSafeToken.sol"; +import { LibReentrancyGuard } from "../libraries/LibReentrancyGuard.sol"; +import { LibShareUtil } from "../libraries/LibShareUtil.sol"; + +// ---- Interfaces ---- // +import { IAdminFacet } from "../interfaces/IAdminFacet.sol"; +import { IInterestRateModel } from "../interfaces/IInterestRateModel.sol"; +import { IFeeModel } from "../interfaces/IFeeModel.sol"; +import { IAlpacaV2Oracle } from "../interfaces/IAlpacaV2Oracle.sol"; +import { IInterestBearingToken } from "../interfaces/IInterestBearingToken.sol"; +import { IDebtToken } from "../interfaces/IDebtToken.sol"; +import { IMiniFL } from "../interfaces/IMiniFL.sol"; +import { IERC20 } from "../interfaces/IERC20.sol"; + +/// @title AdminFacet is dedicated to protocol parameter configuration +contract AdminFacet_Whitelist is IAdminFacet { + using LibSafeToken for IERC20; + using SafeCast for uint256; + using LibDoublyLinkedList for LibDoublyLinkedList.List; + + event LogOpenMarket(address indexed _user, address indexed _token, address _ibToken, address _debtToken); + event LogSetTokenConfig(address indexed _token, LibConstant.TokenConfig _config); + event LogsetNonCollatBorrowerOk(address indexed _account, bool isOk); + event LogSetInterestModel(address indexed _token, address _interestModel); + event LogSetNonCollatInterestModel(address indexed _account, address indexed _token, address _interestModel); + event LogSetOracle(address _oracle); + event LogSetLiquidationStratOk(address indexed _strat, bool isOk); + event LogSetLiquidatorOk(address indexed _account, bool isOk); + event LogSetRiskManagerOk(address indexed _account, bool isOk); + event LogSetAccountManagerOk(address indexed _manager, bool isOk); + event LogSetLiquidationTreasury(address indexed _treasury); + event LogSetFees(uint256 _lendingFeeBps, uint256 _repurchaseFeeBps, uint256 _liquidationFeeBps); + event LogSetFlashloanFees(uint256 _flashloanFeeBps, uint256 _lenderFlashloanBps); + event LogSetRepurchaseRewardModel(IFeeModel indexed _repurchaseRewardModel); + event LogSetIbTokenImplementation(address indexed _newImplementation); + event LogSetDebtTokenImplementation(address indexed _newImplementation); + event LogSetProtocolTokenBorrowLimit(address indexed _account, address indexed _token, uint256 maxTokenBorrow); + event LogSetProtocolConfig(address _account, uint256 _borrowingPowerLimit); + event LogWitdrawReserve(address indexed _token, address indexed _to, uint256 _amount); + event LogSetMaxNumOfToken(uint8 _maxNumOfCollat, uint8 _maxNumOfDebt, uint8 _maxNumOfOverCollatDebt); + event LogSetLiquidationParams(uint16 _newMaxLiquidateBps, uint16 _newLiquidationThreshold); + event LogTopUpTokenReserve(address indexed _token, uint256 _amount); + event LogSetMinDebtSize(uint256 _newValue); + event LogSetEmergencyPaused(address indexed _caller, bool _isPasued); + event LogSetWhitelistedCaller(address indexed _caller, bool _allow); + + mapping(address => bool) public whitelistedCallers; + + /// @dev allow only whitelised callers + modifier onlyWhitelisted() { + if (!whitelistedCallers[msg.sender]) { + revert AdminFacet_Unauthorized(); + } + _; + } + + modifier nonReentrant() { + LibReentrancyGuard.lock(); + _; + LibReentrancyGuard.unlock(); + } + + /// @notice Open a new market for new token + /// @param _token The token for lending/borrowing + /// @param _tokenConfigInput Initial config for underlying token + /// @param _ibTokenConfigInput Initial config for the new ib token + /// @return _newIbToken The address of interest bearing token created for this market + function openMarket( + address _token, + TokenConfigInput calldata _tokenConfigInput, + TokenConfigInput calldata _ibTokenConfigInput + ) external onlyWhitelisted nonReentrant returns (address _newIbToken) { + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + IMiniFL _miniFL = moneyMarketDs.miniFL; + + if (moneyMarketDs.ibTokenImplementation == address(0)) { + revert AdminFacet_InvalidIbTokenImplementation(); + } + if (moneyMarketDs.debtTokenImplementation == address(0)) { + revert AdminFacet_InvalidDebtTokenImplementation(); + } + + address _ibToken = moneyMarketDs.tokenToIbTokens[_token]; + address _debtToken = moneyMarketDs.tokenToDebtTokens[_token]; + + // Revert if market already exist (ibToken or debtToken exist for underlyingToken) + if (_ibToken != address(0)) { + revert AdminFacet_InvalidToken(_token); + } + if (_debtToken != address(0)) { + revert AdminFacet_InvalidToken(_token); + } + + // Deploy new ibToken and debtToken with EIP-1167 minimal proxy to save gas + _newIbToken = Clones.clone(moneyMarketDs.ibTokenImplementation); + IInterestBearingToken(_newIbToken).initialize(_token, address(this)); + + address _newDebtToken = Clones.clone(moneyMarketDs.debtTokenImplementation); + IDebtToken(_newDebtToken).initialize(_token, address(this)); + + // Allow MoneyMarket and MiniFL to hold debt token by adding them as okHolders + // Since we only allow whitelisted address to hold debtToken + address[] memory _okHolders = new address[](2); + _okHolders[0] = address(this); + _okHolders[1] = address(_miniFL); + IDebtToken(_newDebtToken).setOkHolders(_okHolders, true); + + // Set tokenConfig for underlyingToken and the new ibToken + _setTokenConfig(_token, _tokenConfigInput, moneyMarketDs); + _setTokenConfig(_newIbToken, _ibTokenConfigInput, moneyMarketDs); + + // Associate underlyingToken with the newly created ibToken and debtToken + moneyMarketDs.tokenToIbTokens[_token] = _newIbToken; + moneyMarketDs.ibTokenToTokens[_newIbToken] = _token; + moneyMarketDs.tokenToDebtTokens[_token] = _newDebtToken; + + // Create empty MiniFL pool for ibToken and debtToken + // To simplify MoneyMarket operations we make sure that every market has pools associate with it + // If we want to distribute reward we can set rewarder later + // skip `massUpdatePools` to save gas since we didn't modify allocPoint + moneyMarketDs.miniFLPoolIds[_newIbToken] = _miniFL.addPool(0, _newIbToken, false); + moneyMarketDs.miniFLPoolIds[_newDebtToken] = _miniFL.addPool(0, _newDebtToken, false); + + emit LogOpenMarket(msg.sender, _token, _newIbToken, _newDebtToken); + } + + /// @notice Set token-specific configuration + /// @param _tokens Array of token to set config for + /// @param _tokenConfigInputs Array of struct of parameters for the token, ordering should match `_tokens` + function setTokenConfigs(address[] calldata _tokens, TokenConfigInput[] calldata _tokenConfigInputs) + external + onlyWhitelisted + { + // Revert if tokens and inputs length mismatch + if (_tokens.length != _tokenConfigInputs.length) { + revert AdminFacet_InvalidArguments(); + } + + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + uint256 _inputLength = _tokenConfigInputs.length; + for (uint256 _i; _i < _inputLength; ) { + _setTokenConfig(_tokens[_i], _tokenConfigInputs[_i], moneyMarketDs); + + unchecked { + ++_i; + } + } + } + + /// @notice Set the maximum capacities of token + /// @param _token The token to set + /// @param _newMaxCollateral The maximum capacity of this token as collateral + /// @param _newMaxBorrow The maximum capacity to borrow this token + function setTokenMaximumCapacities( + address _token, + uint256 _newMaxCollateral, + uint256 _newMaxBorrow + ) external { + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + + if (!moneyMarketDs.riskManagersOk[msg.sender]) { + revert AdminFacet_Unauthorized(); + } + + if (_newMaxCollateral > 1e40) // Prevent user add collat or borrow too much + { + revert AdminFacet_InvalidArguments(); + } + if (_newMaxBorrow > 1e40) { + revert AdminFacet_InvalidArguments(); + } + LibConstant.TokenConfig storage tokenConfig = moneyMarketDs.tokenConfigs[_token]; + tokenConfig.maxCollateral = _newMaxCollateral; + tokenConfig.maxBorrow = _newMaxBorrow; + + emit LogSetTokenConfig(_token, tokenConfig); + } + + function _setTokenConfig( + address _token, + TokenConfigInput memory _tokenConfigInput, + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs + ) internal { + // Revert if factors exceed MAX_BPS + if ( + _tokenConfigInput.collateralFactor > LibConstant.MAX_BPS || + _tokenConfigInput.borrowingFactor > LibConstant.MAX_BPS + ) { + revert AdminFacet_InvalidArguments(); + } + // borrowingFactor can't be zero otherwise will cause divide by zero error + if (_tokenConfigInput.borrowingFactor == 0) { + revert AdminFacet_InvalidArguments(); + } + // Prevent user add collat or borrow too much + if (_tokenConfigInput.maxCollateral > 1e40) { + revert AdminFacet_InvalidArguments(); + } + if (_tokenConfigInput.maxBorrow > 1e40) { + revert AdminFacet_InvalidArguments(); + } + + LibConstant.TokenConfig memory _tokenConfig = LibConstant.TokenConfig({ + tier: _tokenConfigInput.tier, + collateralFactor: _tokenConfigInput.collateralFactor, + borrowingFactor: _tokenConfigInput.borrowingFactor, + maxCollateral: _tokenConfigInput.maxCollateral, + maxBorrow: _tokenConfigInput.maxBorrow, + to18ConversionFactor: LibMoneyMarket01.to18ConversionFactor(_token) + }); + + moneyMarketDs.tokenConfigs[_token] = _tokenConfig; + + emit LogSetTokenConfig(_token, _tokenConfig); + } + + /// @notice Whitelist/Blacklist the non collateralized borrower + /// @param _borrower The address of contract to put in the list + /// @param _isOk A flag to determine if allowed or not + function setNonCollatBorrowerOk(address _borrower, bool _isOk) external onlyWhitelisted { + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + + if (moneyMarketDs.countNonCollatBorrowers > 5) { + revert AdminFacet_ExceedMaxNonCollatBorrowers(); + } + // if adding the borrower to the whitelist, increase the count + if (_isOk) { + if (!moneyMarketDs.nonCollatBorrowerOk[_borrower]) { + moneyMarketDs.countNonCollatBorrowers++; + } + // else, decrease the count + } else { + if (moneyMarketDs.nonCollatBorrowerOk[_borrower]) { + moneyMarketDs.countNonCollatBorrowers--; + } + } + + moneyMarketDs.nonCollatBorrowerOk[_borrower] = _isOk; + emit LogsetNonCollatBorrowerOk(_borrower, _isOk); + } + + /// @notice Set the interest model for a token specifically to over collateralized borrowing + /// @param _token The token that the interest model will be imposed on + /// @param _model The contract address of the interest model + function setInterestModel(address _token, address _model) external onlyWhitelisted { + // Sanity check + IInterestRateModel(_model).getInterestRate(0, 0); + + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + moneyMarketDs.interestModels[_token] = IInterestRateModel(_model); + emit LogSetInterestModel(_token, _model); + } + + /// @notice Set the interest model for a token specifically on a non collateralized borrower + /// @param _account The address of borrower + /// @param _token The token that the interest model will be impsoed on + /// @param _model The contract address of the interest model + function setNonCollatInterestModel( + address _account, + address _token, + address _model + ) external onlyWhitelisted { + // sanity call to IInterestRateModel + // should revert if the address doesn't implement IInterestRateModel + // neglect the fact if the _model implement fallback and did not revert + IInterestRateModel(_model).getInterestRate(0, 0); + + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + + moneyMarketDs.nonCollatInterestModels[_account][_token] = IInterestRateModel(_model); + emit LogSetNonCollatInterestModel(_account, _token, _model); + } + + /// @notice Set the oracle used in token pricing + /// @param _oracle The address of oracle + function setOracle(address _oracle) external onlyWhitelisted { + // Sanity check + IAlpacaV2Oracle(_oracle).dollarToLp(0, address(0)); + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + moneyMarketDs.oracle = IAlpacaV2Oracle(_oracle); + emit LogSetOracle(_oracle); + } + + /// @notice Whitelist/Blacklist the strategy contract used in liquidation + /// @param _strats an array of liquidation strategy contract + /// @param _isOk a flag to allow or disallow + function setLiquidationStratsOk(address[] calldata _strats, bool _isOk) external onlyWhitelisted { + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + uint256 _length = _strats.length; + for (uint256 _i; _i < _length; ) { + moneyMarketDs.liquidationStratOk[_strats[_i]] = _isOk; + emit LogSetLiquidationStratOk(_strats[_i], _isOk); + unchecked { + ++_i; + } + } + } + + /// @notice Whitelist/Blacklist the address allowed for setting risk parameters + /// @param _riskManagers an array of address of risk managers + /// @param _isOk a flag to allow or disallow + function setRiskManagersOk(address[] calldata _riskManagers, bool _isOk) external onlyWhitelisted { + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + uint256 _length = _riskManagers.length; + for (uint256 _i; _i < _length; ) { + moneyMarketDs.riskManagersOk[_riskManagers[_i]] = _isOk; + emit LogSetRiskManagerOk(_riskManagers[_i], _isOk); + unchecked { + ++_i; + } + } + } + + /// @notice Whitelist/Blacklist the address allowed for liquidation + /// @param _liquidators an array of address of liquidators + /// @param _isOk a flag to allow or disallow + function setLiquidatorsOk(address[] calldata _liquidators, bool _isOk) external onlyWhitelisted { + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + uint256 _length = _liquidators.length; + for (uint256 _i; _i < _length; ) { + moneyMarketDs.liquidatorsOk[_liquidators[_i]] = _isOk; + emit LogSetLiquidatorOk(_liquidators[_i], _isOk); + unchecked { + ++_i; + } + } + } + + /// @notice Whitelist/Blacklist the address allowed for interacting with money market on users' behalf + /// @param _accountManagers an array of address of account managers + /// @param _isOk a flag to allow or disallow + function setAccountManagersOk(address[] calldata _accountManagers, bool _isOk) external onlyWhitelisted { + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + uint256 _length = _accountManagers.length; + for (uint256 _i; _i < _length; ) { + moneyMarketDs.accountManagersOk[_accountManagers[_i]] = _isOk; + emit LogSetAccountManagerOk(_accountManagers[_i], _isOk); + unchecked { + ++_i; + } + } + } + + /// @notice Set the treasury address + /// @param _treasury The new treasury address + function setLiquidationTreasury(address _treasury) external onlyWhitelisted { + if (_treasury == address(0)) { + revert AdminFacet_InvalidAddress(); + } + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + moneyMarketDs.liquidationTreasury = _treasury; + emit LogSetLiquidationTreasury(_treasury); + } + + /// @notice Set protocol's fees + /// @param _newLendingFeeBps The lending fee imposed on interest collected + /// @param _newRepurchaseFeeBps The repurchase fee collected by the protocol + /// @param _newLiquidationFeeBps The total fee from liquidation + function setFees( + uint16 _newLendingFeeBps, + uint16 _newRepurchaseFeeBps, + uint16 _newLiquidationFeeBps + ) external onlyWhitelisted { + // Revert if fees exceed max bps + if ( + _newLendingFeeBps > LibConstant.MAX_BPS || + _newRepurchaseFeeBps > LibConstant.MAX_BPS || + _newLiquidationFeeBps > LibConstant.MAX_BPS + ) { + revert AdminFacet_InvalidArguments(); + } + + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + + // Replace existing fees + moneyMarketDs.lendingFeeBps = _newLendingFeeBps; + moneyMarketDs.repurchaseFeeBps = _newRepurchaseFeeBps; + moneyMarketDs.liquidationFeeBps = _newLiquidationFeeBps; + + emit LogSetFees(_newLendingFeeBps, _newRepurchaseFeeBps, _newLiquidationFeeBps); + } + + /// @notice Set lender portion and flashloan fee + /// @param _flashloanFeeBps the flashloan fee collected by protocol + /// @param _lenderFlashloanBps the portion that lenders will receive from _flashloanFeeBps + function setFlashloanFees(uint16 _flashloanFeeBps, uint16 _lenderFlashloanBps) external onlyWhitelisted { + if (_flashloanFeeBps > LibConstant.MAX_BPS || _lenderFlashloanBps > LibConstant.MAX_BPS) { + revert AdminFacet_InvalidArguments(); + } + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + // Replace existing fees + moneyMarketDs.flashloanFeeBps = _flashloanFeeBps; + moneyMarketDs.lenderFlashloanBps = _lenderFlashloanBps; + + emit LogSetFlashloanFees(_flashloanFeeBps, _lenderFlashloanBps); + } + + /// @notice Set the repurchase reward model for a token specifically to over collateralized borrowing + /// @param _newRepurchaseRewardModel The contract address of the repurchase reward model + function setRepurchaseRewardModel(IFeeModel _newRepurchaseRewardModel) external onlyWhitelisted { + // Sanity check + if (LibMoneyMarket01.MAX_REPURCHASE_FEE_BPS < _newRepurchaseRewardModel.getFeeBps(1, 1000)) { + revert AdminFacet_ExceedMaxRepurchaseReward(); + } + + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + moneyMarketDs.repurchaseRewardModel = _newRepurchaseRewardModel; + + emit LogSetRepurchaseRewardModel(_newRepurchaseRewardModel); + } + + /// @notice Set the implementation address of interest bearing token + /// @param _newImplementation The address of interest bearing contract + function setIbTokenImplementation(address _newImplementation) external onlyWhitelisted { + // sanity check + IInterestBearingToken(_newImplementation).decimals(); + + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + moneyMarketDs.ibTokenImplementation = _newImplementation; + emit LogSetIbTokenImplementation(_newImplementation); + } + + /// @notice Set the implementation address of debt token + /// @param _newImplementation The address of debt token contract + function setDebtTokenImplementation(address _newImplementation) external onlyWhitelisted { + // sanity check + IDebtToken(_newImplementation).decimals(); + + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + moneyMarketDs.debtTokenImplementation = _newImplementation; + emit LogSetDebtTokenImplementation(_newImplementation); + } + + /// @notice Set the non collteral's borrower configuration + /// @param _protocolConfigInputs An array of configrations for borrowers + function setProtocolConfigs(ProtocolConfigInput[] calldata _protocolConfigInputs) external onlyWhitelisted { + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + uint256 _length = _protocolConfigInputs.length; + ProtocolConfigInput memory _protocolConfigInput; + TokenBorrowLimitInput memory _tokenBorrowLimit; + LibMoneyMarket01.ProtocolConfig storage protocolConfig; + uint256 _tokenBorrowLimitLength; + + for (uint256 _i; _i < _length; ) { + _protocolConfigInput = _protocolConfigInputs[_i]; + + protocolConfig = moneyMarketDs.protocolConfigs[_protocolConfigInput.account]; + // set total borrow limit in usd for a protocol + protocolConfig.borrowingPowerLimit = _protocolConfigInput.borrowingPowerLimit; + + // set per token borrow limit + _tokenBorrowLimitLength = _protocolConfigInput.tokenBorrowLimit.length; + for (uint256 _j; _j < _tokenBorrowLimitLength; ) { + _tokenBorrowLimit = _protocolConfigInput.tokenBorrowLimit[_j]; + protocolConfig.maxTokenBorrow[_tokenBorrowLimit.token] = _tokenBorrowLimit.maxTokenBorrow; + + emit LogSetProtocolTokenBorrowLimit( + _protocolConfigInput.account, + _tokenBorrowLimit.token, + _tokenBorrowLimit.maxTokenBorrow + ); + unchecked { + ++_j; + } + } + emit LogSetProtocolConfig(_protocolConfigInput.account, _protocolConfigInput.borrowingPowerLimit); + unchecked { + ++_i; + } + } + } + + /// @notice Set the liquidation configuration + /// @param _newMaxLiquidateBps The maximum percentage allowed in a single repurchase/liquidation call + /// @param _newLiquidationThreshold The threshold that need to reach to allow liquidation + function setLiquidationParams(uint16 _newMaxLiquidateBps, uint16 _newLiquidationThreshold) external onlyWhitelisted { + // Revert if `_newMaxLiquidateBps` exceed max bps because can't liquidate more than full position (100%) + // Revert if `_newLiquidationThreshold` is less than max bps because if it is less than max bps would allow to liquidation to happen before repurchase + if (_newMaxLiquidateBps > LibConstant.MAX_BPS || _newLiquidationThreshold < LibConstant.MAX_BPS) { + revert AdminFacet_InvalidArguments(); + } + + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + moneyMarketDs.maxLiquidateBps = _newMaxLiquidateBps; + moneyMarketDs.liquidationThresholdBps = _newLiquidationThreshold; + + emit LogSetLiquidationParams(_newMaxLiquidateBps, _newLiquidationThreshold); + } + + /// @notice Set the maximum number of collateral/borrowed + /// @param _numOfCollat The maximum number of collateral per subaccount + /// @param _numOfDebt The maximum number of borrowed per subaccount + /// @param _numOfNonCollatDebt The maximum number of borrowed per non collateralized borrower + function setMaxNumOfToken( + uint8 _numOfCollat, + uint8 _numOfDebt, + uint8 _numOfNonCollatDebt + ) external onlyWhitelisted { + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + moneyMarketDs.maxNumOfCollatPerSubAccount = _numOfCollat; + moneyMarketDs.maxNumOfDebtPerSubAccount = _numOfDebt; + moneyMarketDs.maxNumOfDebtPerNonCollatAccount = _numOfNonCollatDebt; + + emit LogSetMaxNumOfToken(_numOfCollat, _numOfDebt, _numOfNonCollatDebt); + } + + /// @notice Set the minimum debt size (USD) that subaccount must maintain during borrow and repay + /// @param _newValue New minDebtSize value (USD) to be set + function setMinDebtSize(uint256 _newValue) external onlyWhitelisted { + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + moneyMarketDs.minDebtSize = _newValue; + + emit LogSetMinDebtSize(_newValue); + } + + /// @notice Transfer token to diamond to increase token reserves + /// @param _token token to increase reserve for + /// @param _amount amount to transfer to diamond and increase reserve + function topUpTokenReserve(address _token, uint256 _amount) external onlyWhitelisted { + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + + // Prevent topup token that didn't have market + if (moneyMarketDs.tokenToIbTokens[_token] == address(0)) revert AdminFacet_InvalidToken(_token); + + // Allow topup for token that has fee on transfer + uint256 _actualAmountReceived = LibMoneyMarket01.unsafePullTokens(_token, msg.sender, _amount); + moneyMarketDs.reserves[_token] += _actualAmountReceived; + + emit LogTopUpTokenReserve(_token, _actualAmountReceived); + } + + /// @notice Set emerygency flag for pausing deposit and borrow + /// @param _isPaused Flag to pause or resume + function setEmergencyPaused(bool _isPaused) external onlyWhitelisted { + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + + moneyMarketDs.emergencyPaused = _isPaused; + + emit LogSetEmergencyPaused(msg.sender, _isPaused); + } + + /// @notice Set whitelisted callers + /// @param _callers The addresses of the callers that are going to be whitelisted. + /// @param _allow Whether to allow or disallow callers. + function setWhitelistedCallers(address[] calldata _callers, bool _allow) external onlyWhitelisted { + uint256 _length = _callers.length; + for (uint256 _i; _i < _length; ) { + whitelistedCallers[_callers[_i]] = _allow; + emit LogSetWhitelistedCaller(_callers[_i], _allow); + + unchecked { + ++_i; + } + } + } + + /// @notice Withdraw the protocol reserves + /// @param _withdrawProtocolReserveParam An array of protocol's reserve to withdraw + function withdrawProtocolReserves(WithdrawProtocolReserveParam[] calldata _withdrawProtocolReserveParam) + external + onlyWhitelisted + { + uint256 _length = _withdrawProtocolReserveParam.length; + for (uint256 _i; _i < _length; ) { + _withdrawProtocolReserve( + _withdrawProtocolReserveParam[_i].token, + _withdrawProtocolReserveParam[_i].to, + _withdrawProtocolReserveParam[_i].amount + ); + + unchecked { + ++_i; + } + } + } + + function _withdrawProtocolReserve( + address _token, + address _to, + uint256 _amount + ) internal { + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + // Revert if trying to withdraw more than protocolReserves + if (_amount > moneyMarketDs.protocolReserves[_token]) { + revert AdminFacet_ReserveTooLow(); + } + // Revert if trying to withdraw more than actual token available even protocolReserves is enough + if (_amount > moneyMarketDs.reserves[_token]) { + revert LibMoneyMarket01.LibMoneyMarket01_NotEnoughToken(); + } + + // Reduce protocolReserves and reserves by amount withdrawn + moneyMarketDs.protocolReserves[_token] -= _amount; + moneyMarketDs.reserves[_token] -= _amount; + + IERC20(_token).safeTransfer(_to, _amount); + + emit LogWitdrawReserve(_token, _to, _amount); + } +} From cca6c4e1732d52ca99286d922681d187f41719f3 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Mon, 8 May 2023 13:54:05 +0700 Subject: [PATCH 29/87] fix: adjust errors,events and revise file name --- ...keswapV3IbTokenLiquidationStrategy_WithPathReader.sol | 6 +++--- .../PancakeswapV3TokenLiquidationStrategy.sol | 6 +++--- .../reader/{PathPCSV3Reader.sol => PCSV3PathReader.sol} | 9 ++++----- .../{IPathPCSV3Reader.sol => IUniSwapV3PathReader.sol} | 5 ++++- .../BasePCSV3LiquidationForkTest.sol | 6 +++--- ...cakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol | 6 +++--- 6 files changed, 20 insertions(+), 18 deletions(-) rename solidity/contracts/reader/{PathPCSV3Reader.sol => PCSV3PathReader.sol} (90%) rename solidity/contracts/reader/interfaces/{IPathPCSV3Reader.sol => IUniSwapV3PathReader.sol} (61%) diff --git a/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol b/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol index 68e33655..2eae9a89 100644 --- a/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol +++ b/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol @@ -12,7 +12,7 @@ import { ILiquidationStrategy } from "./interfaces/ILiquidationStrategy.sol"; import { IPancakeSwapRouterV3 } from "./interfaces/IPancakeSwapRouterV3.sol"; import { IERC20 } from "./interfaces/IERC20.sol"; import { IMoneyMarket } from "./interfaces/IMoneyMarket.sol"; -import { IPathPCSV3Reader } from "../reader/interfaces/IPathPCSV3Reader.sol"; +import { IUniSwapV3PathReader } from "../reader/interfaces/IUniSwapV3PathReader.sol"; contract PancakeswapV3IbTokenLiquidationStrategy_WithPathReader is ILiquidationStrategy, Ownable { using LibSafeToken for IERC20; @@ -25,7 +25,7 @@ contract PancakeswapV3IbTokenLiquidationStrategy_WithPathReader is ILiquidationS IPancakeSwapRouterV3 internal immutable router; IMoneyMarket internal immutable moneyMarket; - IPathPCSV3Reader public pathReader; + IUniSwapV3PathReader public pathReader; mapping(address => bool) public callersOk; @@ -50,7 +50,7 @@ contract PancakeswapV3IbTokenLiquidationStrategy_WithPathReader is ILiquidationS ) { router = IPancakeSwapRouterV3(_router); moneyMarket = IMoneyMarket(_moneyMarket); - pathReader = IPathPCSV3Reader(_pathReader); + pathReader = IUniSwapV3PathReader(_pathReader); } /// @notice Execute liquidate from collatToken to repayToken diff --git a/solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol b/solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol index ec3df68c..44fb7969 100644 --- a/solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol +++ b/solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol @@ -13,7 +13,7 @@ import { ILiquidationStrategy } from "./interfaces/ILiquidationStrategy.sol"; import { IPancakeSwapRouterV3 } from "./interfaces/IPancakeSwapRouterV3.sol"; import { IERC20 } from "./interfaces/IERC20.sol"; import { IPancakeV3Pool } from "./interfaces/IPancakeV3Pool.sol"; -import { IPathPCSV3Reader } from "../reader/interfaces/IPathPCSV3Reader.sol"; +import { IUniSwapV3PathReader } from "../reader/interfaces/IUniSwapV3PathReader.sol"; contract PancakeswapV3TokenLiquidationStrategy is ILiquidationStrategy, Ownable { using LibSafeToken for IERC20; @@ -28,7 +28,7 @@ contract PancakeswapV3TokenLiquidationStrategy is ILiquidationStrategy, Ownable error PancakeswapV3TokenLiquidationStrategy_NoLiquidity(address tokenA, address tokenB, uint24 fee); IPancakeSwapRouterV3 internal immutable router; - IPathPCSV3Reader public pathReader; + IUniSwapV3PathReader public pathReader; address internal constant PANCAKE_V3_POOL_DEPLOYER = 0x41ff9AA7e16B8B1a8a8dc4f0eFacd93D02d071c9; bytes32 internal constant POOL_INIT_CODE_HASH = 0x6ce8eb472fa82df5469c6ab6d485f17c3ad13c8cd7af59b3d4a8026c5ce0f7e2; @@ -53,7 +53,7 @@ contract PancakeswapV3TokenLiquidationStrategy is ILiquidationStrategy, Ownable constructor(address _router, address _pathReader) { router = IPancakeSwapRouterV3(_router); - pathReader = IPathPCSV3Reader(_pathReader); + pathReader = IUniSwapV3PathReader(_pathReader); } /// @notice Execute liquidate from collatToken to repayToken diff --git a/solidity/contracts/reader/PathPCSV3Reader.sol b/solidity/contracts/reader/PCSV3PathReader.sol similarity index 90% rename from solidity/contracts/reader/PathPCSV3Reader.sol rename to solidity/contracts/reader/PCSV3PathReader.sol index 29973463..f3faeb1d 100644 --- a/solidity/contracts/reader/PathPCSV3Reader.sol +++ b/solidity/contracts/reader/PCSV3PathReader.sol @@ -4,9 +4,9 @@ pragma solidity 0.8.19; import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; import { LibPath } from "./libraries/LibPath.sol"; import { IPancakeV3Pool } from "../money-market/interfaces/IPancakeV3Pool.sol"; -import { IPathPCSV3Reader } from "./interfaces/IPathPCSV3Reader.sol"; +import { IUniSwapV3PathReader } from "./interfaces/IUniSwapV3PathReader.sol"; -contract PathPCSV3Reader is IPathPCSV3Reader, Ownable { +contract PCSV3PathReader is IUniSwapV3PathReader, Ownable { using LibPath for bytes; address internal constant PANCAKE_V3_POOL_DEPLOYER = 0x41ff9AA7e16B8B1a8a8dc4f0eFacd93D02d071c9; @@ -15,8 +15,7 @@ contract PathPCSV3Reader is IPathPCSV3Reader, Ownable { // tokenIn => tokenOut => path mapping(address => mapping(address => bytes)) public override paths; - error PathPCSV3Reader_NoLiquidity(address tokenA, address tokenB, uint24 fee); - + // Events event LogSetPath(address _token0, address _token1, bytes _path); function setPaths(bytes[] calldata _paths) external onlyOwner { @@ -36,7 +35,7 @@ contract PathPCSV3Reader is IPathPCSV3Reader, Ownable { // revert EVM error if pool is not existing (cannot call liquidity) if (IPancakeV3Pool(_pool).liquidity() == 0) { // revert no liquidity if there's no liquidity - revert PathPCSV3Reader_NoLiquidity(_token0, _token1, _fee); + revert PCSV3PathReader_NoLiquidity(_token0, _token1, _fee); } // if true, go to the next hop diff --git a/solidity/contracts/reader/interfaces/IPathPCSV3Reader.sol b/solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol similarity index 61% rename from solidity/contracts/reader/interfaces/IPathPCSV3Reader.sol rename to solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol index 58ae2a2a..860d213a 100644 --- a/solidity/contracts/reader/interfaces/IPathPCSV3Reader.sol +++ b/solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol @@ -1,7 +1,10 @@ // SPDX-License-Identifier: BUSL pragma solidity 0.8.19; -interface IPathPCSV3Reader { +interface IUniSwapV3PathReader { + // Errors + error PCSV3PathReader_NoLiquidity(address tokenA, address tokenB, uint24 fee); + function setPaths(bytes[] calldata _paths) external; function paths(address _source, address _destination) external returns (bytes memory); diff --git a/solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol b/solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol index 55a4e53f..4467377b 100644 --- a/solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol +++ b/solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol @@ -4,7 +4,7 @@ pragma solidity 0.8.19; import { DSTest } from "solidity/tests/base/DSTest.sol"; import "../../utils/Components.sol"; -import { PathPCSV3Reader } from "solidity/contracts/reader/PathPCSV3Reader.sol"; +import { PCSV3PathReader } from "solidity/contracts/reader/PCSV3PathReader.sol"; // interfaces import { IPancakeSwapRouterV3 } from "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol"; @@ -47,7 +47,7 @@ contract BasePCSV3LiquidationForkTest is DSTest, StdUtils, StdAssertions, StdChe IPancakeSwapRouterV3 internal router = IPancakeSwapRouterV3(0x1b81D678ffb9C0263b24A97847620C99d213eB14); IQuoterV2 internal quoterV2 = IQuoterV2(0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997); MockMoneyMarket internal moneyMarket; - PathPCSV3Reader internal pathReader; + PCSV3PathReader internal pathReader; function setUp() public virtual { vm.selectFork(vm.createFork(BSC_URL_RPC)); @@ -62,7 +62,7 @@ contract BasePCSV3LiquidationForkTest is DSTest, StdUtils, StdAssertions, StdChe ibETHDecimal = ibETH.decimals(); moneyMarket = new MockMoneyMarket(); - pathReader = new PathPCSV3Reader(); + pathReader = new PCSV3PathReader(); vm.label(ALICE, "ALICE"); vm.label(BOB, "BOB"); } diff --git a/solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol b/solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol index f975cb34..6bb77d8d 100644 --- a/solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol +++ b/solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol @@ -3,7 +3,7 @@ pragma solidity 0.8.19; import { BasePCSV3LiquidationForkTest } from "./BasePCSV3LiquidationForkTest.sol"; import { PancakeswapV3IbTokenLiquidationStrategy_WithPathReader } from "../../../contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol"; -import { PathPCSV3Reader } from "../../../contracts/reader/PathPCSV3Reader.sol"; +import { IUniSwapV3PathReader } from "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol"; // libs import { LibPCSV3PoolAddress } from "../../libs/LibPCSV3PoolAddress.sol"; @@ -79,11 +79,11 @@ contract WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs is BasePC LibPCSV3PoolAddress.getPoolKey(address(_randomToken0), address(_randomToken1), poolFee) ); - // when mock liquidity => 0, should revert PathPCSV3Reader_NoLiquidity correctly + // when mock liquidity => 0, should revert PCSV3PathReader_NoLiquidity correctly vm.mockCall(address(_poolAddress), abi.encodeWithSelector(IPancakeV3PoolState.liquidity.selector), abi.encode(0)); vm.expectRevert( abi.encodeWithSelector( - PathPCSV3Reader.PathPCSV3Reader_NoLiquidity.selector, + IUniSwapV3PathReader.PCSV3PathReader_NoLiquidity.selector, [address(_randomToken0), address(_randomToken1), address(uint160(poolFee))] ) ); From 5ea0610ef487cb46e2760ec315b22c142279e46a Mon Sep 17 00:00:00 2001 From: jr-alpaca Date: Mon, 8 May 2023 13:59:29 +0700 Subject: [PATCH 30/87] chore: mm reader include rewarders --- package.json | 3 +- .../interfaces/IMoneyMarketReader.sol | 25 ++++-- solidity/contracts/miniFL/Rewarder.sol | 10 ++- .../contracts/miniFL/interfaces/IRewarder.sol | 14 +++ .../money-market/interfaces/IMiniFL.sol | 4 + .../interfaces/IChainLinkPriceOracle.sol | 2 +- .../contracts/reader/MoneyMarketReader.sol | 86 +++++++++++++++---- 7 files changed, 118 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index 61d56e90..681daf26 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,8 @@ "exec:bsc_mainnet:triple-slope-model0:deploy": "forge script script/deployments/InterestModels/deploy/TripleSlopeModel0.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:double-slope-model1:deploy": "forge script script/deployments/InterestModels/deploy/MMDoubleSlopeModel1.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:double-slope-model2:deploy": "forge script script/deployments/InterestModels/deploy/MMDoubleSlopeModel2.s.sol --rpc-url bsc_mainnet --broadcast --slow", - "exec:bsc_mainnet:double-slope-model3:deploy": "forge script script/deployments/InterestModels/deploy/MMDoubleSlopeModel3.s.sol --rpc-url bsc_mainnet --broadcast --slow" + "exec:bsc_mainnet:double-slope-model3:deploy": "forge script script/deployments/InterestModels/deploy/MMDoubleSlopeModel3.s.sol --rpc-url bsc_mainnet --broadcast --slow", + "exec:bsc_mainnet:rewarder:deploy": "forge script script/deployments/Rewarder/deploy/Rewarder.s.sol --rpc-url bsc_mainnet --broadcast --slow" }, "dependencies": { "@nomiclabs/hardhat-ethers": "^2.0.5", diff --git a/solidity/contracts/interfaces/IMoneyMarketReader.sol b/solidity/contracts/interfaces/IMoneyMarketReader.sol index 2277a83b..0e719a95 100644 --- a/solidity/contracts/interfaces/IMoneyMarketReader.sol +++ b/solidity/contracts/interfaces/IMoneyMarketReader.sol @@ -44,13 +44,14 @@ interface IMoneyMarketReader { } struct RewardSummary { - uint256 ibPoolId; - uint256 debtPoolId; - uint256 lendingPendingReward; - uint256 borrowingPendingReward; + address rewardToken; + uint256 pId; + uint256 pendingReward; } - function getRewardSummary(address _underlyingToken, address _account) external view returns (RewardSummary memory); + // function getRewardSummary(address _underlyingToken, address _account) external view returns (RewardSummary memory); + + function getRewardSummary(uint256 _pId, address _account) external view returns (RewardSummary[] memory); function getSubAccountSummary(address _account, uint256 _subAccountId) external @@ -91,7 +92,7 @@ interface IMoneyMarketReader { uint256 globalDebtValue; uint256 reserve; uint256 totalToken; - uint256 pendingIntetest; + uint256 pendingInterest; uint256 interestRate; uint256 lastAccruedAt; uint256 blockTimestamp; @@ -102,10 +103,20 @@ interface IMoneyMarketReader { struct MarketRewardInfo { uint256 debtTokenAllocPoint; uint256 ibTokenAllocPoint; - uint256 totalAllocPoint; uint256 rewardPerSec; + uint256 totalAllocPoint; uint256 totalDebtTokenInPool; uint256 totalUnderlyingTokenInPool; + RewarderInfo[] ibRewarderInfos; + RewarderInfo[] debtRewarderInfos; + } + + struct RewarderInfo { + address rewardToken; + uint256 pId; + uint256 rewardPerSec; + uint256 totalAllocPoint; + uint256 allocPoint; } function getMarketRewardInfo(address _underlyingToken) external view returns (MarketRewardInfo memory); diff --git a/solidity/contracts/miniFL/Rewarder.sol b/solidity/contracts/miniFL/Rewarder.sol index 35d4b04d..2e85472b 100644 --- a/solidity/contracts/miniFL/Rewarder.sol +++ b/solidity/contracts/miniFL/Rewarder.sol @@ -251,7 +251,9 @@ contract Rewarder is IRewarder, OwnableUpgradeable, ReentrancyGuardUpgradeable { unchecked { _timePast = block.timestamp - _poolInfo.lastRewardTime; } - uint256 _rewards = (_timePast * rewardPerSecond * _poolInfo.allocPoint) / totalAllocPoint; + uint256 _rewards = totalAllocPoint != 0 + ? (_timePast * rewardPerSecond * _poolInfo.allocPoint) / totalAllocPoint + : 0; _accRewardPerShare = _accRewardPerShare + ((_rewards * ACC_REWARD_PRECISION) / _stakedBalance); } return @@ -352,4 +354,10 @@ contract Rewarder is IRewarder, OwnableUpgradeable, ReentrancyGuardUpgradeable { function lastRewardTime(uint256 _pid) external view returns (uint256) { return poolInfo[_pid].lastRewardTime; } + + /// @notice Returns the allocation point of a pool. + /// @param _pid The index of the pool. See `poolInfo`. + function getPoolAllocPoint(uint256 _pid) external view returns (uint256 _allocPoint) { + _allocPoint = poolInfo[_pid].allocPoint; + } } diff --git a/solidity/contracts/miniFL/interfaces/IRewarder.sol b/solidity/contracts/miniFL/interfaces/IRewarder.sol index 0eebd04c..71119e27 100644 --- a/solidity/contracts/miniFL/interfaces/IRewarder.sol +++ b/solidity/contracts/miniFL/interfaces/IRewarder.sol @@ -28,4 +28,18 @@ interface IRewarder { function pendingToken(uint256 pid, address user) external view returns (uint256); function lastRewardTime(uint256 _pid) external view returns (uint256); + + function setPool( + uint256 _pid, + uint256 _newAllocPoint, + bool _withUpdate + ) external; + + function rewardToken() external view returns (address); + + function rewardPerSecond() external view returns (uint256); + + function totalAllocPoint() external view returns (uint256); + + function getPoolAllocPoint(uint256 _pid) external view returns (uint256 _allocPoint); } diff --git a/solidity/contracts/money-market/interfaces/IMiniFL.sol b/solidity/contracts/money-market/interfaces/IMiniFL.sol index eb09bbc1..1ec359b9 100644 --- a/solidity/contracts/money-market/interfaces/IMiniFL.sol +++ b/solidity/contracts/money-market/interfaces/IMiniFL.sol @@ -43,4 +43,8 @@ interface IMiniFL { function harvest(uint256 _pid) external; function harvestMany(uint256[] calldata _pids) external; + + function rewarders(uint256 _pid) external view returns (address[] memory _rewarders); + + function ALPACA() external view returns (address); } diff --git a/solidity/contracts/oracle/interfaces/IChainLinkPriceOracle.sol b/solidity/contracts/oracle/interfaces/IChainLinkPriceOracle.sol index 092adca3..97325002 100644 --- a/solidity/contracts/oracle/interfaces/IChainLinkPriceOracle.sol +++ b/solidity/contracts/oracle/interfaces/IChainLinkPriceOracle.sol @@ -10,5 +10,5 @@ interface IChainLinkPriceOracle { IAggregatorV3[] calldata allSources ) external; - function getPrice(address token0, address token1) external returns (uint256, uint256); + function getPrice(address token0, address token1) external view returns (uint256, uint256); } diff --git a/solidity/contracts/reader/MoneyMarketReader.sol b/solidity/contracts/reader/MoneyMarketReader.sol index 1e1f3f53..fa7c47e3 100644 --- a/solidity/contracts/reader/MoneyMarketReader.sol +++ b/solidity/contracts/reader/MoneyMarketReader.sol @@ -14,6 +14,7 @@ import { IOracleMedianizer } from "../oracle/interfaces/IOracleMedianizer.sol"; import { IAlpacaV2Oracle } from "../oracle/interfaces/IAlpacaV2Oracle.sol"; import { IMiniFL } from "../money-market/interfaces/IMiniFL.sol"; import { IInterestRateModel } from "../money-market/interfaces/IInterestRateModel.sol"; +import { IRewarder } from "../miniFL/interfaces/IRewarder.sol"; contract MoneyMarketReader is IMoneyMarketReader { IMoneyMarket private immutable _moneyMarket; @@ -27,23 +28,53 @@ contract MoneyMarketReader is IMoneyMarketReader { _moneyMarketAccountManager = moneyMarketAccountManager_; } - /// @dev Get the reward summary - /// @param _underlyingToken The underlying token address - /// @param _account The account address - function getRewardSummary(address _underlyingToken, address _account) external view returns (RewardSummary memory) { - address _ibAddress = _moneyMarket.getIbTokenFromToken(_underlyingToken); - address _debtAddress = _moneyMarket.getDebtTokenFromToken(_underlyingToken); + // /// @dev Get the reward summary + // /// @param _underlyingToken The underlying token address + // /// @param _account The account address + // function getRewardSummary(address _underlyingToken, address _account) external view returns (RewardSummary memory) { + // address _ibAddress = _moneyMarket.getIbTokenFromToken(_underlyingToken); + // address _debtAddress = _moneyMarket.getDebtTokenFromToken(_underlyingToken); + + // uint256 _ibPoolId = _moneyMarket.getMiniFLPoolIdOfToken(_ibAddress); + // uint256 _debtPoolId = _moneyMarket.getMiniFLPoolIdOfToken(_debtAddress); + + // return + // RewardSummary({ + // ibPoolId: _ibPoolId, + // debtPoolId: _debtPoolId, + // lendingPendingReward: _miniFL.pendingAlpaca(_ibPoolId, _account), + // borrowingPendingReward: _miniFL.pendingAlpaca(_debtPoolId, _account) + // }); + // } - uint256 _ibPoolId = _moneyMarket.getMiniFLPoolIdOfToken(_ibAddress); - uint256 _debtPoolId = _moneyMarket.getMiniFLPoolIdOfToken(_debtAddress); + function getRewardSummary(uint256 _pId, address account) + external + view + returns (RewardSummary[] memory _rewardSummary) + { + address[] memory _rewarders = _miniFL.rewarders(_pId); + // include miniFL reward + uint256 _rewarderLength = _rewarders.length + 1; + _rewardSummary = new RewardSummary[](_rewarderLength); + + _rewardSummary[0] = RewardSummary({ + rewardToken: _miniFL.ALPACA(), + pId: _pId, + pendingReward: _miniFL.pendingAlpaca(_pId, account) + }); - return - RewardSummary({ - ibPoolId: _ibPoolId, - debtPoolId: _debtPoolId, - lendingPendingReward: _miniFL.pendingAlpaca(_ibPoolId, _account), - borrowingPendingReward: _miniFL.pendingAlpaca(_debtPoolId, _account) + for (uint256 i = 1; i < _rewarderLength; ) { + IRewarder _rewarder = IRewarder(_rewarders[i]); + + _rewardSummary[i] = RewardSummary({ + rewardToken: _rewarder.rewardToken(), + pId: _pId, + pendingReward: _rewarder.pendingToken(_pId, account) }); + unchecked { + ++i; + } + } } /// @dev Get subaccount summary of collaterals and debts @@ -317,7 +348,7 @@ contract MoneyMarketReader is IMoneyMarketReader { marketStats.globalDebtValue = _moneyMarket.getGlobalDebtValue(_underlyingToken); marketStats.reserve = _moneyMarket.getFloatingBalance(_underlyingToken); marketStats.totalToken = _moneyMarket.getTotalToken(_underlyingToken); - marketStats.pendingIntetest = _moneyMarket.getGlobalPendingInterest(_underlyingToken); + marketStats.pendingInterest = _moneyMarket.getGlobalPendingInterest(_underlyingToken); marketStats.interestRate = _moneyMarket.getOverCollatInterestRate(_underlyingToken); marketStats.lastAccruedAt = _moneyMarket.getDebtLastAccruedAt(_underlyingToken); marketStats.blockTimestamp = block.timestamp; @@ -345,8 +376,31 @@ contract MoneyMarketReader is IMoneyMarketReader { totalAllocPoint: _miniFL.totalAllocPoint(), rewardPerSec: _miniFL.alpacaPerSecond(), totalUnderlyingTokenInPool: IInterestBearingToken(_ibAddress).convertToAssets(_ibReserveAmount), - totalDebtTokenInPool: _totalDebtToken + totalDebtTokenInPool: _totalDebtToken, + ibRewarderInfos: _getRewardersInfo(_ibPoolId), + debtRewarderInfos: _getRewardersInfo(_debtPoolId) + }); + } + + function _getRewardersInfo(uint256 _pId) internal view returns (RewarderInfo[] memory _rewarderInfos) { + address[] memory _rewarders = _miniFL.rewarders(_pId); + uint256 rewarderLength = _rewarders.length; + _rewarderInfos = new RewarderInfo[](rewarderLength); + for (uint256 i; i < rewarderLength; ) { + IRewarder _rewarder = IRewarder(_rewarders[i]); + + _rewarderInfos[i] = RewarderInfo({ + rewardToken: _rewarder.rewardToken(), + pId: _pId, + rewardPerSec: _rewarder.rewardPerSecond(), + allocPoint: _rewarder.getPoolAllocPoint(_pId), + totalAllocPoint: _rewarder.totalAllocPoint() }); + + unchecked { + ++i; + } + } } function getMarketPriceInfo(address _underlyingToken) external view returns (MarketPriceInfo memory) { From ddf768440c6f4bac5a7993de35460fdf1ffe468d Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Mon, 8 May 2023 14:37:25 +0700 Subject: [PATCH 31/87] fix: error to implementation file --- solidity/contracts/reader/PCSV3PathReader.sol | 3 +++ solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol | 3 --- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/solidity/contracts/reader/PCSV3PathReader.sol b/solidity/contracts/reader/PCSV3PathReader.sol index f3faeb1d..2a60bf49 100644 --- a/solidity/contracts/reader/PCSV3PathReader.sol +++ b/solidity/contracts/reader/PCSV3PathReader.sol @@ -15,6 +15,9 @@ contract PCSV3PathReader is IUniSwapV3PathReader, Ownable { // tokenIn => tokenOut => path mapping(address => mapping(address => bytes)) public override paths; + // Errors + error PCSV3PathReader_NoLiquidity(address tokenA, address tokenB, uint24 fee); + // Events event LogSetPath(address _token0, address _token1, bytes _path); diff --git a/solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol b/solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol index 860d213a..12a8d164 100644 --- a/solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol +++ b/solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol @@ -2,9 +2,6 @@ pragma solidity 0.8.19; interface IUniSwapV3PathReader { - // Errors - error PCSV3PathReader_NoLiquidity(address tokenA, address tokenB, uint24 fee); - function setPaths(bytes[] calldata _paths) external; function paths(address _source, address _destination) external returns (bytes memory); From f7ffe9a5e0ac3d72881b81af0a6eeae18530c391 Mon Sep 17 00:00:00 2001 From: alpanaca Date: Mon, 8 May 2023 14:38:30 +0700 Subject: [PATCH 32/87] chore: improve comment --- .../contracts/money-market/facets/FlashloanFacet.sol | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/solidity/contracts/money-market/facets/FlashloanFacet.sol b/solidity/contracts/money-market/facets/FlashloanFacet.sol index bba439ea..addb613d 100644 --- a/solidity/contracts/money-market/facets/FlashloanFacet.sol +++ b/solidity/contracts/money-market/facets/FlashloanFacet.sol @@ -36,27 +36,27 @@ contract FlashloanFacet is IFlashloanFacet { // expected fee = (_amount * flashloan fee (bps)) / max bps uint256 _expectedFee = (_amount * moneyMarketDs.flashloanFeeBps) / LibConstant.MAX_BPS; - // balance before + // cache balance before sending token to flashloaner uint256 _balanceBefore = IERC20(_token).balanceOf(address(this)); IERC20(_token).safeTransfer(msg.sender, _amount); - // call alpacaFlashloanCallback from msg.sender + // initiate callback at sender's contract IAlpacaFlashloanCallback(msg.sender).alpacaFlashloanCallback(_token, _amount + _expectedFee, _data); - // revert if actual fee < fee + // revert if the returned amount did not cover fee uint256 _actualTotalFee = IERC20(_token).balanceOf(address(this)) - _balanceBefore; if (_actualTotalFee < _expectedFee) { revert FlashloanFacet_NotEnoughRepay(); } - // lender fee = x% of expected fee. + // calculate the actual lender fee by taking x% of expected fee // in case flashloaner inject a lot of fee, the ib token price should not be inflated // this is to prevent unforeseeable impact from inflating the ib token price uint256 _lenderFee = (_expectedFee * moneyMarketDs.lenderFlashloanBps) / LibConstant.MAX_BPS; - // actual fee will be added to reserve (including excess fee) + // total actual fee will be added to reserve (including excess fee) moneyMarketDs.reserves[_token] += _actualTotalFee; - // protocol fee = actual fee - lender fee (x% from expected fee) + // the rest of the fee will go to protocol moneyMarketDs.protocolReserves[_token] += _actualTotalFee - _lenderFee; emit LogFlashloan(_token, _amount, _actualTotalFee, _lenderFee); From 481f70219d94b8f590201d26a07d00f10af18646 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Mon, 8 May 2023 14:49:42 +0700 Subject: [PATCH 33/87] fix: immutable reader and fix import path --- ...ancakeswapV3IbTokenLiquidationStrategy.sol | 2 +- ...okenLiquidationStrategy_WithPathReader.sol | 2 +- .../PancakeswapV3TokenLiquidationStrategy.sol | 4 +- .../money-market/libraries/LibPath.sol | 70 ------------------- ...bTokenLiquidationStrategy_SetConfigs.t.sol | 5 +- 5 files changed, 7 insertions(+), 76 deletions(-) delete mode 100644 solidity/contracts/money-market/libraries/LibPath.sol diff --git a/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol b/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol index c6fc89f4..efc50baf 100644 --- a/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol +++ b/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol @@ -6,7 +6,7 @@ import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; // ---- Libraries ---- // import { LibSafeToken } from "./libraries/LibSafeToken.sol"; -import { LibPath } from "./libraries/LibPath.sol"; +import { LibPath } from "../reader/libraries/LibPath.sol"; // ---- Interfaces ---- // import { ILiquidationStrategy } from "./interfaces/ILiquidationStrategy.sol"; diff --git a/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol b/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol index 2eae9a89..43d9f537 100644 --- a/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol +++ b/solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol @@ -25,7 +25,7 @@ contract PancakeswapV3IbTokenLiquidationStrategy_WithPathReader is ILiquidationS IPancakeSwapRouterV3 internal immutable router; IMoneyMarket internal immutable moneyMarket; - IUniSwapV3PathReader public pathReader; + IUniSwapV3PathReader internal immutable pathReader; mapping(address => bool) public callersOk; diff --git a/solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol b/solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol index 44fb7969..c57790d2 100644 --- a/solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol +++ b/solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol @@ -6,7 +6,7 @@ import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; // ---- Libraries ---- // import { LibSafeToken } from "./libraries/LibSafeToken.sol"; -import { LibPath } from "./libraries/LibPath.sol"; +import { LibPath } from "../reader/libraries/LibPath.sol"; // ---- Interfaces ---- // import { ILiquidationStrategy } from "./interfaces/ILiquidationStrategy.sol"; @@ -28,7 +28,7 @@ contract PancakeswapV3TokenLiquidationStrategy is ILiquidationStrategy, Ownable error PancakeswapV3TokenLiquidationStrategy_NoLiquidity(address tokenA, address tokenB, uint24 fee); IPancakeSwapRouterV3 internal immutable router; - IUniSwapV3PathReader public pathReader; + IUniSwapV3PathReader internal immutable pathReader; address internal constant PANCAKE_V3_POOL_DEPLOYER = 0x41ff9AA7e16B8B1a8a8dc4f0eFacd93D02d071c9; bytes32 internal constant POOL_INIT_CODE_HASH = 0x6ce8eb472fa82df5469c6ab6d485f17c3ad13c8cd7af59b3d4a8026c5ce0f7e2; diff --git a/solidity/contracts/money-market/libraries/LibPath.sol b/solidity/contracts/money-market/libraries/LibPath.sol deleted file mode 100644 index 218a179c..00000000 --- a/solidity/contracts/money-market/libraries/LibPath.sol +++ /dev/null @@ -1,70 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -pragma solidity >=0.6.0; - -import "./LibBytes.sol"; - -/// original is Path.sol from https://github.com/Uniswap/v3-periphery/blob/main/contracts/libraries/Path.sol -/// @title Functions for manipulating path data for multihop swaps -library LibPath { - using LibBytes for bytes; - - /// @dev The length of the bytes encoded address - uint256 private constant ADDR_SIZE = 20; - /// @dev The length of the bytes encoded fee - uint256 private constant FEE_SIZE = 3; - - /// @dev The offset of a single token address and pool fee - uint256 private constant NEXT_OFFSET = ADDR_SIZE + FEE_SIZE; - /// @dev The offset of an encoded pool key - uint256 private constant POP_OFFSET = NEXT_OFFSET + ADDR_SIZE; - /// @dev The minimum length of an encoding that contains 2 or more pools - uint256 private constant MULTIPLE_POOLS_MIN_LENGTH = POP_OFFSET + NEXT_OFFSET; - - /// @notice Returns true iff the path contains two or more pools - /// @param path The encoded swap path - /// @return True if path contains two or more pools, otherwise false - function hasMultiplePools(bytes memory path) internal pure returns (bool) { - return path.length >= MULTIPLE_POOLS_MIN_LENGTH; - } - - /// @notice Returns the number of pools in the path - /// @param path The encoded swap path - /// @return The number of pools in the path - function numPools(bytes memory path) internal pure returns (uint256) { - // Ignore the first token address. From then on every fee and token offset indicates a pool. - return ((path.length - ADDR_SIZE) / NEXT_OFFSET); - } - - /// @notice Decodes the first pool in path - /// @param path The bytes encoded swap path - /// @return tokenA The first token of the given pool - /// @return tokenB The second token of the given pool - /// @return fee The fee level of the pool - function decodeFirstPool(bytes memory path) - internal - pure - returns ( - address tokenA, - address tokenB, - uint24 fee - ) - { - tokenA = path.toAddress(0); - fee = path.toUint24(ADDR_SIZE); - tokenB = path.toAddress(NEXT_OFFSET); - } - - /// @notice Gets the segment corresponding to the first pool in the path - /// @param path The bytes encoded swap path - /// @return The segment containing all data necessary to target the first pool in the path - function getFirstPool(bytes memory path) internal pure returns (bytes memory) { - return path.slice(0, POP_OFFSET); - } - - /// @notice Skips a token + fee element from the buffer and returns the remainder - /// @param path The swap path - /// @return The remaining token + fee elements in the path - function skipToken(bytes memory path) internal pure returns (bytes memory) { - return path.slice(NEXT_OFFSET, path.length - NEXT_OFFSET); - } -} diff --git a/solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol b/solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol index 6bb77d8d..1ab9ad23 100644 --- a/solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol +++ b/solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol @@ -3,13 +3,14 @@ pragma solidity 0.8.19; import { BasePCSV3LiquidationForkTest } from "./BasePCSV3LiquidationForkTest.sol"; import { PancakeswapV3IbTokenLiquidationStrategy_WithPathReader } from "../../../contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol"; -import { IUniSwapV3PathReader } from "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol"; +import { PCSV3PathReader } from "solidity/contracts/reader/PCSV3PathReader.sol"; // libs import { LibPCSV3PoolAddress } from "../../libs/LibPCSV3PoolAddress.sol"; // interfaces import { IPancakeV3PoolState } from "../../../contracts/money-market/interfaces/IPancakeV3Pool.sol"; +import { IUniSwapV3PathReader } from "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol"; // mocks import { MockERC20 } from "solidity/tests/mocks/MockERC20.sol"; @@ -83,7 +84,7 @@ contract WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs is BasePC vm.mockCall(address(_poolAddress), abi.encodeWithSelector(IPancakeV3PoolState.liquidity.selector), abi.encode(0)); vm.expectRevert( abi.encodeWithSelector( - IUniSwapV3PathReader.PCSV3PathReader_NoLiquidity.selector, + PCSV3PathReader.PCSV3PathReader_NoLiquidity.selector, [address(_randomToken0), address(_randomToken1), address(uint160(poolFee))] ) ); From f989264c7be82eb8887552c338542c803e8ac98a Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Mon, 8 May 2023 15:22:35 +0700 Subject: [PATCH 34/87] feat: add whitelist to withdraw, revise test file --- .../libraries/LibMoneyMarketDeployment.sol | 3 +- .../money-market/facets/AdminFacet.sol | 28 +- .../facets/AdminFacet_Whitelist.sol | 612 ------------------ .../money-market/interfaces/IAdminFacet.sol | 2 + .../MoneyMarket_AccrueInterest_Borrow.t.sol | 17 +- 5 files changed, 46 insertions(+), 616 deletions(-) delete mode 100644 solidity/contracts/money-market/facets/AdminFacet_Whitelist.sol diff --git a/script/deployments/libraries/LibMoneyMarketDeployment.sol b/script/deployments/libraries/LibMoneyMarketDeployment.sol index 029c9f4e..9f2a1fe0 100644 --- a/script/deployments/libraries/LibMoneyMarketDeployment.sol +++ b/script/deployments/libraries/LibMoneyMarketDeployment.sol @@ -240,7 +240,7 @@ library LibMoneyMarketDeployment { } function getAdminFacetSelectors() internal pure returns (bytes4[] memory _selectors) { - _selectors = new bytes4[](24); + _selectors = new bytes4[](25); _selectors[0] = IAdminFacet.openMarket.selector; _selectors[1] = IAdminFacet.setTokenConfigs.selector; _selectors[2] = IAdminFacet.setNonCollatBorrowerOk.selector; @@ -265,6 +265,7 @@ library LibMoneyMarketDeployment { _selectors[21] = IAdminFacet.setTokenMaximumCapacities.selector; _selectors[22] = IAdminFacet.setRiskManagersOk.selector; _selectors[23] = IAdminFacet.setFlashloanFees.selector; + _selectors[24] = IAdminFacet.setWhitelistedCallers.selector; } function getLiquidationFacetSelectors() internal pure returns (bytes4[] memory _selectors) { diff --git a/solidity/contracts/money-market/facets/AdminFacet.sol b/solidity/contracts/money-market/facets/AdminFacet.sol index d597eb4b..ee0c0991 100644 --- a/solidity/contracts/money-market/facets/AdminFacet.sol +++ b/solidity/contracts/money-market/facets/AdminFacet.sol @@ -30,6 +30,8 @@ contract AdminFacet is IAdminFacet { using SafeCast for uint256; using LibDoublyLinkedList for LibDoublyLinkedList.List; + mapping(address => bool) public whitelistedCallers; + event LogOpenMarket(address indexed _user, address indexed _token, address _ibToken, address _debtToken); event LogSetTokenConfig(address indexed _token, LibConstant.TokenConfig _config); event LogsetNonCollatBorrowerOk(address indexed _account, bool isOk); @@ -54,12 +56,21 @@ contract AdminFacet is IAdminFacet { event LogTopUpTokenReserve(address indexed _token, uint256 _amount); event LogSetMinDebtSize(uint256 _newValue); event LogSetEmergencyPaused(address indexed _caller, bool _isPasued); + event LogSetWhitelistedCaller(address indexed _caller, bool _allow); modifier onlyOwner() { LibDiamond.enforceIsContractOwner(); _; } + /// @dev allow only whitelised callers + modifier onlyWhitelisted() { + if (!whitelistedCallers[msg.sender]) { + revert AdminFacet_Unauthorized(); + } + _; + } + modifier nonReentrant() { LibReentrancyGuard.lock(); _; @@ -545,11 +556,26 @@ contract AdminFacet is IAdminFacet { emit LogSetEmergencyPaused(msg.sender, _isPaused); } + /// @notice Set whitelisted callers + /// @param _callers The addresses of the callers that are going to be whitelisted. + /// @param _allow Whether to allow or disallow callers. + function setWhitelistedCallers(address[] calldata _callers, bool _allow) external onlyOwner { + uint256 _length = _callers.length; + for (uint256 _i; _i < _length; ) { + whitelistedCallers[_callers[_i]] = _allow; + emit LogSetWhitelistedCaller(_callers[_i], _allow); + + unchecked { + ++_i; + } + } + } + /// @notice Withdraw the protocol reserves /// @param _withdrawProtocolReserveParam An array of protocol's reserve to withdraw function withdrawProtocolReserves(WithdrawProtocolReserveParam[] calldata _withdrawProtocolReserveParam) external - onlyOwner + onlyWhitelisted { uint256 _length = _withdrawProtocolReserveParam.length; for (uint256 _i; _i < _length; ) { diff --git a/solidity/contracts/money-market/facets/AdminFacet_Whitelist.sol b/solidity/contracts/money-market/facets/AdminFacet_Whitelist.sol deleted file mode 100644 index 85538aab..00000000 --- a/solidity/contracts/money-market/facets/AdminFacet_Whitelist.sol +++ /dev/null @@ -1,612 +0,0 @@ -// SPDX-License-Identifier: BUSL -pragma solidity 0.8.19; - -// ---- External Libraries ---- // -import { SafeCast } from "@openzeppelin/contracts/utils/math/SafeCast.sol"; -import { Clones } from "@openzeppelin/contracts/proxy/Clones.sol"; - -// ---- Libraries ---- // -import { LibMoneyMarket01 } from "../libraries/LibMoneyMarket01.sol"; -import { LibConstant } from "../libraries/LibConstant.sol"; -import { LibDiamond } from "../libraries/LibDiamond.sol"; -import { LibDoublyLinkedList } from "../libraries/LibDoublyLinkedList.sol"; -import { LibSafeToken } from "../libraries/LibSafeToken.sol"; -import { LibReentrancyGuard } from "../libraries/LibReentrancyGuard.sol"; -import { LibShareUtil } from "../libraries/LibShareUtil.sol"; - -// ---- Interfaces ---- // -import { IAdminFacet } from "../interfaces/IAdminFacet.sol"; -import { IInterestRateModel } from "../interfaces/IInterestRateModel.sol"; -import { IFeeModel } from "../interfaces/IFeeModel.sol"; -import { IAlpacaV2Oracle } from "../interfaces/IAlpacaV2Oracle.sol"; -import { IInterestBearingToken } from "../interfaces/IInterestBearingToken.sol"; -import { IDebtToken } from "../interfaces/IDebtToken.sol"; -import { IMiniFL } from "../interfaces/IMiniFL.sol"; -import { IERC20 } from "../interfaces/IERC20.sol"; - -/// @title AdminFacet is dedicated to protocol parameter configuration -contract AdminFacet_Whitelist is IAdminFacet { - using LibSafeToken for IERC20; - using SafeCast for uint256; - using LibDoublyLinkedList for LibDoublyLinkedList.List; - - event LogOpenMarket(address indexed _user, address indexed _token, address _ibToken, address _debtToken); - event LogSetTokenConfig(address indexed _token, LibConstant.TokenConfig _config); - event LogsetNonCollatBorrowerOk(address indexed _account, bool isOk); - event LogSetInterestModel(address indexed _token, address _interestModel); - event LogSetNonCollatInterestModel(address indexed _account, address indexed _token, address _interestModel); - event LogSetOracle(address _oracle); - event LogSetLiquidationStratOk(address indexed _strat, bool isOk); - event LogSetLiquidatorOk(address indexed _account, bool isOk); - event LogSetRiskManagerOk(address indexed _account, bool isOk); - event LogSetAccountManagerOk(address indexed _manager, bool isOk); - event LogSetLiquidationTreasury(address indexed _treasury); - event LogSetFees(uint256 _lendingFeeBps, uint256 _repurchaseFeeBps, uint256 _liquidationFeeBps); - event LogSetFlashloanFees(uint256 _flashloanFeeBps, uint256 _lenderFlashloanBps); - event LogSetRepurchaseRewardModel(IFeeModel indexed _repurchaseRewardModel); - event LogSetIbTokenImplementation(address indexed _newImplementation); - event LogSetDebtTokenImplementation(address indexed _newImplementation); - event LogSetProtocolTokenBorrowLimit(address indexed _account, address indexed _token, uint256 maxTokenBorrow); - event LogSetProtocolConfig(address _account, uint256 _borrowingPowerLimit); - event LogWitdrawReserve(address indexed _token, address indexed _to, uint256 _amount); - event LogSetMaxNumOfToken(uint8 _maxNumOfCollat, uint8 _maxNumOfDebt, uint8 _maxNumOfOverCollatDebt); - event LogSetLiquidationParams(uint16 _newMaxLiquidateBps, uint16 _newLiquidationThreshold); - event LogTopUpTokenReserve(address indexed _token, uint256 _amount); - event LogSetMinDebtSize(uint256 _newValue); - event LogSetEmergencyPaused(address indexed _caller, bool _isPasued); - event LogSetWhitelistedCaller(address indexed _caller, bool _allow); - - mapping(address => bool) public whitelistedCallers; - - /// @dev allow only whitelised callers - modifier onlyWhitelisted() { - if (!whitelistedCallers[msg.sender]) { - revert AdminFacet_Unauthorized(); - } - _; - } - - modifier nonReentrant() { - LibReentrancyGuard.lock(); - _; - LibReentrancyGuard.unlock(); - } - - /// @notice Open a new market for new token - /// @param _token The token for lending/borrowing - /// @param _tokenConfigInput Initial config for underlying token - /// @param _ibTokenConfigInput Initial config for the new ib token - /// @return _newIbToken The address of interest bearing token created for this market - function openMarket( - address _token, - TokenConfigInput calldata _tokenConfigInput, - TokenConfigInput calldata _ibTokenConfigInput - ) external onlyWhitelisted nonReentrant returns (address _newIbToken) { - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - IMiniFL _miniFL = moneyMarketDs.miniFL; - - if (moneyMarketDs.ibTokenImplementation == address(0)) { - revert AdminFacet_InvalidIbTokenImplementation(); - } - if (moneyMarketDs.debtTokenImplementation == address(0)) { - revert AdminFacet_InvalidDebtTokenImplementation(); - } - - address _ibToken = moneyMarketDs.tokenToIbTokens[_token]; - address _debtToken = moneyMarketDs.tokenToDebtTokens[_token]; - - // Revert if market already exist (ibToken or debtToken exist for underlyingToken) - if (_ibToken != address(0)) { - revert AdminFacet_InvalidToken(_token); - } - if (_debtToken != address(0)) { - revert AdminFacet_InvalidToken(_token); - } - - // Deploy new ibToken and debtToken with EIP-1167 minimal proxy to save gas - _newIbToken = Clones.clone(moneyMarketDs.ibTokenImplementation); - IInterestBearingToken(_newIbToken).initialize(_token, address(this)); - - address _newDebtToken = Clones.clone(moneyMarketDs.debtTokenImplementation); - IDebtToken(_newDebtToken).initialize(_token, address(this)); - - // Allow MoneyMarket and MiniFL to hold debt token by adding them as okHolders - // Since we only allow whitelisted address to hold debtToken - address[] memory _okHolders = new address[](2); - _okHolders[0] = address(this); - _okHolders[1] = address(_miniFL); - IDebtToken(_newDebtToken).setOkHolders(_okHolders, true); - - // Set tokenConfig for underlyingToken and the new ibToken - _setTokenConfig(_token, _tokenConfigInput, moneyMarketDs); - _setTokenConfig(_newIbToken, _ibTokenConfigInput, moneyMarketDs); - - // Associate underlyingToken with the newly created ibToken and debtToken - moneyMarketDs.tokenToIbTokens[_token] = _newIbToken; - moneyMarketDs.ibTokenToTokens[_newIbToken] = _token; - moneyMarketDs.tokenToDebtTokens[_token] = _newDebtToken; - - // Create empty MiniFL pool for ibToken and debtToken - // To simplify MoneyMarket operations we make sure that every market has pools associate with it - // If we want to distribute reward we can set rewarder later - // skip `massUpdatePools` to save gas since we didn't modify allocPoint - moneyMarketDs.miniFLPoolIds[_newIbToken] = _miniFL.addPool(0, _newIbToken, false); - moneyMarketDs.miniFLPoolIds[_newDebtToken] = _miniFL.addPool(0, _newDebtToken, false); - - emit LogOpenMarket(msg.sender, _token, _newIbToken, _newDebtToken); - } - - /// @notice Set token-specific configuration - /// @param _tokens Array of token to set config for - /// @param _tokenConfigInputs Array of struct of parameters for the token, ordering should match `_tokens` - function setTokenConfigs(address[] calldata _tokens, TokenConfigInput[] calldata _tokenConfigInputs) - external - onlyWhitelisted - { - // Revert if tokens and inputs length mismatch - if (_tokens.length != _tokenConfigInputs.length) { - revert AdminFacet_InvalidArguments(); - } - - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - uint256 _inputLength = _tokenConfigInputs.length; - for (uint256 _i; _i < _inputLength; ) { - _setTokenConfig(_tokens[_i], _tokenConfigInputs[_i], moneyMarketDs); - - unchecked { - ++_i; - } - } - } - - /// @notice Set the maximum capacities of token - /// @param _token The token to set - /// @param _newMaxCollateral The maximum capacity of this token as collateral - /// @param _newMaxBorrow The maximum capacity to borrow this token - function setTokenMaximumCapacities( - address _token, - uint256 _newMaxCollateral, - uint256 _newMaxBorrow - ) external { - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - - if (!moneyMarketDs.riskManagersOk[msg.sender]) { - revert AdminFacet_Unauthorized(); - } - - if (_newMaxCollateral > 1e40) // Prevent user add collat or borrow too much - { - revert AdminFacet_InvalidArguments(); - } - if (_newMaxBorrow > 1e40) { - revert AdminFacet_InvalidArguments(); - } - LibConstant.TokenConfig storage tokenConfig = moneyMarketDs.tokenConfigs[_token]; - tokenConfig.maxCollateral = _newMaxCollateral; - tokenConfig.maxBorrow = _newMaxBorrow; - - emit LogSetTokenConfig(_token, tokenConfig); - } - - function _setTokenConfig( - address _token, - TokenConfigInput memory _tokenConfigInput, - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs - ) internal { - // Revert if factors exceed MAX_BPS - if ( - _tokenConfigInput.collateralFactor > LibConstant.MAX_BPS || - _tokenConfigInput.borrowingFactor > LibConstant.MAX_BPS - ) { - revert AdminFacet_InvalidArguments(); - } - // borrowingFactor can't be zero otherwise will cause divide by zero error - if (_tokenConfigInput.borrowingFactor == 0) { - revert AdminFacet_InvalidArguments(); - } - // Prevent user add collat or borrow too much - if (_tokenConfigInput.maxCollateral > 1e40) { - revert AdminFacet_InvalidArguments(); - } - if (_tokenConfigInput.maxBorrow > 1e40) { - revert AdminFacet_InvalidArguments(); - } - - LibConstant.TokenConfig memory _tokenConfig = LibConstant.TokenConfig({ - tier: _tokenConfigInput.tier, - collateralFactor: _tokenConfigInput.collateralFactor, - borrowingFactor: _tokenConfigInput.borrowingFactor, - maxCollateral: _tokenConfigInput.maxCollateral, - maxBorrow: _tokenConfigInput.maxBorrow, - to18ConversionFactor: LibMoneyMarket01.to18ConversionFactor(_token) - }); - - moneyMarketDs.tokenConfigs[_token] = _tokenConfig; - - emit LogSetTokenConfig(_token, _tokenConfig); - } - - /// @notice Whitelist/Blacklist the non collateralized borrower - /// @param _borrower The address of contract to put in the list - /// @param _isOk A flag to determine if allowed or not - function setNonCollatBorrowerOk(address _borrower, bool _isOk) external onlyWhitelisted { - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - - if (moneyMarketDs.countNonCollatBorrowers > 5) { - revert AdminFacet_ExceedMaxNonCollatBorrowers(); - } - // if adding the borrower to the whitelist, increase the count - if (_isOk) { - if (!moneyMarketDs.nonCollatBorrowerOk[_borrower]) { - moneyMarketDs.countNonCollatBorrowers++; - } - // else, decrease the count - } else { - if (moneyMarketDs.nonCollatBorrowerOk[_borrower]) { - moneyMarketDs.countNonCollatBorrowers--; - } - } - - moneyMarketDs.nonCollatBorrowerOk[_borrower] = _isOk; - emit LogsetNonCollatBorrowerOk(_borrower, _isOk); - } - - /// @notice Set the interest model for a token specifically to over collateralized borrowing - /// @param _token The token that the interest model will be imposed on - /// @param _model The contract address of the interest model - function setInterestModel(address _token, address _model) external onlyWhitelisted { - // Sanity check - IInterestRateModel(_model).getInterestRate(0, 0); - - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - moneyMarketDs.interestModels[_token] = IInterestRateModel(_model); - emit LogSetInterestModel(_token, _model); - } - - /// @notice Set the interest model for a token specifically on a non collateralized borrower - /// @param _account The address of borrower - /// @param _token The token that the interest model will be impsoed on - /// @param _model The contract address of the interest model - function setNonCollatInterestModel( - address _account, - address _token, - address _model - ) external onlyWhitelisted { - // sanity call to IInterestRateModel - // should revert if the address doesn't implement IInterestRateModel - // neglect the fact if the _model implement fallback and did not revert - IInterestRateModel(_model).getInterestRate(0, 0); - - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - - moneyMarketDs.nonCollatInterestModels[_account][_token] = IInterestRateModel(_model); - emit LogSetNonCollatInterestModel(_account, _token, _model); - } - - /// @notice Set the oracle used in token pricing - /// @param _oracle The address of oracle - function setOracle(address _oracle) external onlyWhitelisted { - // Sanity check - IAlpacaV2Oracle(_oracle).dollarToLp(0, address(0)); - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - moneyMarketDs.oracle = IAlpacaV2Oracle(_oracle); - emit LogSetOracle(_oracle); - } - - /// @notice Whitelist/Blacklist the strategy contract used in liquidation - /// @param _strats an array of liquidation strategy contract - /// @param _isOk a flag to allow or disallow - function setLiquidationStratsOk(address[] calldata _strats, bool _isOk) external onlyWhitelisted { - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - uint256 _length = _strats.length; - for (uint256 _i; _i < _length; ) { - moneyMarketDs.liquidationStratOk[_strats[_i]] = _isOk; - emit LogSetLiquidationStratOk(_strats[_i], _isOk); - unchecked { - ++_i; - } - } - } - - /// @notice Whitelist/Blacklist the address allowed for setting risk parameters - /// @param _riskManagers an array of address of risk managers - /// @param _isOk a flag to allow or disallow - function setRiskManagersOk(address[] calldata _riskManagers, bool _isOk) external onlyWhitelisted { - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - uint256 _length = _riskManagers.length; - for (uint256 _i; _i < _length; ) { - moneyMarketDs.riskManagersOk[_riskManagers[_i]] = _isOk; - emit LogSetRiskManagerOk(_riskManagers[_i], _isOk); - unchecked { - ++_i; - } - } - } - - /// @notice Whitelist/Blacklist the address allowed for liquidation - /// @param _liquidators an array of address of liquidators - /// @param _isOk a flag to allow or disallow - function setLiquidatorsOk(address[] calldata _liquidators, bool _isOk) external onlyWhitelisted { - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - uint256 _length = _liquidators.length; - for (uint256 _i; _i < _length; ) { - moneyMarketDs.liquidatorsOk[_liquidators[_i]] = _isOk; - emit LogSetLiquidatorOk(_liquidators[_i], _isOk); - unchecked { - ++_i; - } - } - } - - /// @notice Whitelist/Blacklist the address allowed for interacting with money market on users' behalf - /// @param _accountManagers an array of address of account managers - /// @param _isOk a flag to allow or disallow - function setAccountManagersOk(address[] calldata _accountManagers, bool _isOk) external onlyWhitelisted { - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - uint256 _length = _accountManagers.length; - for (uint256 _i; _i < _length; ) { - moneyMarketDs.accountManagersOk[_accountManagers[_i]] = _isOk; - emit LogSetAccountManagerOk(_accountManagers[_i], _isOk); - unchecked { - ++_i; - } - } - } - - /// @notice Set the treasury address - /// @param _treasury The new treasury address - function setLiquidationTreasury(address _treasury) external onlyWhitelisted { - if (_treasury == address(0)) { - revert AdminFacet_InvalidAddress(); - } - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - moneyMarketDs.liquidationTreasury = _treasury; - emit LogSetLiquidationTreasury(_treasury); - } - - /// @notice Set protocol's fees - /// @param _newLendingFeeBps The lending fee imposed on interest collected - /// @param _newRepurchaseFeeBps The repurchase fee collected by the protocol - /// @param _newLiquidationFeeBps The total fee from liquidation - function setFees( - uint16 _newLendingFeeBps, - uint16 _newRepurchaseFeeBps, - uint16 _newLiquidationFeeBps - ) external onlyWhitelisted { - // Revert if fees exceed max bps - if ( - _newLendingFeeBps > LibConstant.MAX_BPS || - _newRepurchaseFeeBps > LibConstant.MAX_BPS || - _newLiquidationFeeBps > LibConstant.MAX_BPS - ) { - revert AdminFacet_InvalidArguments(); - } - - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - - // Replace existing fees - moneyMarketDs.lendingFeeBps = _newLendingFeeBps; - moneyMarketDs.repurchaseFeeBps = _newRepurchaseFeeBps; - moneyMarketDs.liquidationFeeBps = _newLiquidationFeeBps; - - emit LogSetFees(_newLendingFeeBps, _newRepurchaseFeeBps, _newLiquidationFeeBps); - } - - /// @notice Set lender portion and flashloan fee - /// @param _flashloanFeeBps the flashloan fee collected by protocol - /// @param _lenderFlashloanBps the portion that lenders will receive from _flashloanFeeBps - function setFlashloanFees(uint16 _flashloanFeeBps, uint16 _lenderFlashloanBps) external onlyWhitelisted { - if (_flashloanFeeBps > LibConstant.MAX_BPS || _lenderFlashloanBps > LibConstant.MAX_BPS) { - revert AdminFacet_InvalidArguments(); - } - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - // Replace existing fees - moneyMarketDs.flashloanFeeBps = _flashloanFeeBps; - moneyMarketDs.lenderFlashloanBps = _lenderFlashloanBps; - - emit LogSetFlashloanFees(_flashloanFeeBps, _lenderFlashloanBps); - } - - /// @notice Set the repurchase reward model for a token specifically to over collateralized borrowing - /// @param _newRepurchaseRewardModel The contract address of the repurchase reward model - function setRepurchaseRewardModel(IFeeModel _newRepurchaseRewardModel) external onlyWhitelisted { - // Sanity check - if (LibMoneyMarket01.MAX_REPURCHASE_FEE_BPS < _newRepurchaseRewardModel.getFeeBps(1, 1000)) { - revert AdminFacet_ExceedMaxRepurchaseReward(); - } - - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - moneyMarketDs.repurchaseRewardModel = _newRepurchaseRewardModel; - - emit LogSetRepurchaseRewardModel(_newRepurchaseRewardModel); - } - - /// @notice Set the implementation address of interest bearing token - /// @param _newImplementation The address of interest bearing contract - function setIbTokenImplementation(address _newImplementation) external onlyWhitelisted { - // sanity check - IInterestBearingToken(_newImplementation).decimals(); - - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - moneyMarketDs.ibTokenImplementation = _newImplementation; - emit LogSetIbTokenImplementation(_newImplementation); - } - - /// @notice Set the implementation address of debt token - /// @param _newImplementation The address of debt token contract - function setDebtTokenImplementation(address _newImplementation) external onlyWhitelisted { - // sanity check - IDebtToken(_newImplementation).decimals(); - - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - moneyMarketDs.debtTokenImplementation = _newImplementation; - emit LogSetDebtTokenImplementation(_newImplementation); - } - - /// @notice Set the non collteral's borrower configuration - /// @param _protocolConfigInputs An array of configrations for borrowers - function setProtocolConfigs(ProtocolConfigInput[] calldata _protocolConfigInputs) external onlyWhitelisted { - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - uint256 _length = _protocolConfigInputs.length; - ProtocolConfigInput memory _protocolConfigInput; - TokenBorrowLimitInput memory _tokenBorrowLimit; - LibMoneyMarket01.ProtocolConfig storage protocolConfig; - uint256 _tokenBorrowLimitLength; - - for (uint256 _i; _i < _length; ) { - _protocolConfigInput = _protocolConfigInputs[_i]; - - protocolConfig = moneyMarketDs.protocolConfigs[_protocolConfigInput.account]; - // set total borrow limit in usd for a protocol - protocolConfig.borrowingPowerLimit = _protocolConfigInput.borrowingPowerLimit; - - // set per token borrow limit - _tokenBorrowLimitLength = _protocolConfigInput.tokenBorrowLimit.length; - for (uint256 _j; _j < _tokenBorrowLimitLength; ) { - _tokenBorrowLimit = _protocolConfigInput.tokenBorrowLimit[_j]; - protocolConfig.maxTokenBorrow[_tokenBorrowLimit.token] = _tokenBorrowLimit.maxTokenBorrow; - - emit LogSetProtocolTokenBorrowLimit( - _protocolConfigInput.account, - _tokenBorrowLimit.token, - _tokenBorrowLimit.maxTokenBorrow - ); - unchecked { - ++_j; - } - } - emit LogSetProtocolConfig(_protocolConfigInput.account, _protocolConfigInput.borrowingPowerLimit); - unchecked { - ++_i; - } - } - } - - /// @notice Set the liquidation configuration - /// @param _newMaxLiquidateBps The maximum percentage allowed in a single repurchase/liquidation call - /// @param _newLiquidationThreshold The threshold that need to reach to allow liquidation - function setLiquidationParams(uint16 _newMaxLiquidateBps, uint16 _newLiquidationThreshold) external onlyWhitelisted { - // Revert if `_newMaxLiquidateBps` exceed max bps because can't liquidate more than full position (100%) - // Revert if `_newLiquidationThreshold` is less than max bps because if it is less than max bps would allow to liquidation to happen before repurchase - if (_newMaxLiquidateBps > LibConstant.MAX_BPS || _newLiquidationThreshold < LibConstant.MAX_BPS) { - revert AdminFacet_InvalidArguments(); - } - - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - moneyMarketDs.maxLiquidateBps = _newMaxLiquidateBps; - moneyMarketDs.liquidationThresholdBps = _newLiquidationThreshold; - - emit LogSetLiquidationParams(_newMaxLiquidateBps, _newLiquidationThreshold); - } - - /// @notice Set the maximum number of collateral/borrowed - /// @param _numOfCollat The maximum number of collateral per subaccount - /// @param _numOfDebt The maximum number of borrowed per subaccount - /// @param _numOfNonCollatDebt The maximum number of borrowed per non collateralized borrower - function setMaxNumOfToken( - uint8 _numOfCollat, - uint8 _numOfDebt, - uint8 _numOfNonCollatDebt - ) external onlyWhitelisted { - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - moneyMarketDs.maxNumOfCollatPerSubAccount = _numOfCollat; - moneyMarketDs.maxNumOfDebtPerSubAccount = _numOfDebt; - moneyMarketDs.maxNumOfDebtPerNonCollatAccount = _numOfNonCollatDebt; - - emit LogSetMaxNumOfToken(_numOfCollat, _numOfDebt, _numOfNonCollatDebt); - } - - /// @notice Set the minimum debt size (USD) that subaccount must maintain during borrow and repay - /// @param _newValue New minDebtSize value (USD) to be set - function setMinDebtSize(uint256 _newValue) external onlyWhitelisted { - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - moneyMarketDs.minDebtSize = _newValue; - - emit LogSetMinDebtSize(_newValue); - } - - /// @notice Transfer token to diamond to increase token reserves - /// @param _token token to increase reserve for - /// @param _amount amount to transfer to diamond and increase reserve - function topUpTokenReserve(address _token, uint256 _amount) external onlyWhitelisted { - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - - // Prevent topup token that didn't have market - if (moneyMarketDs.tokenToIbTokens[_token] == address(0)) revert AdminFacet_InvalidToken(_token); - - // Allow topup for token that has fee on transfer - uint256 _actualAmountReceived = LibMoneyMarket01.unsafePullTokens(_token, msg.sender, _amount); - moneyMarketDs.reserves[_token] += _actualAmountReceived; - - emit LogTopUpTokenReserve(_token, _actualAmountReceived); - } - - /// @notice Set emerygency flag for pausing deposit and borrow - /// @param _isPaused Flag to pause or resume - function setEmergencyPaused(bool _isPaused) external onlyWhitelisted { - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - - moneyMarketDs.emergencyPaused = _isPaused; - - emit LogSetEmergencyPaused(msg.sender, _isPaused); - } - - /// @notice Set whitelisted callers - /// @param _callers The addresses of the callers that are going to be whitelisted. - /// @param _allow Whether to allow or disallow callers. - function setWhitelistedCallers(address[] calldata _callers, bool _allow) external onlyWhitelisted { - uint256 _length = _callers.length; - for (uint256 _i; _i < _length; ) { - whitelistedCallers[_callers[_i]] = _allow; - emit LogSetWhitelistedCaller(_callers[_i], _allow); - - unchecked { - ++_i; - } - } - } - - /// @notice Withdraw the protocol reserves - /// @param _withdrawProtocolReserveParam An array of protocol's reserve to withdraw - function withdrawProtocolReserves(WithdrawProtocolReserveParam[] calldata _withdrawProtocolReserveParam) - external - onlyWhitelisted - { - uint256 _length = _withdrawProtocolReserveParam.length; - for (uint256 _i; _i < _length; ) { - _withdrawProtocolReserve( - _withdrawProtocolReserveParam[_i].token, - _withdrawProtocolReserveParam[_i].to, - _withdrawProtocolReserveParam[_i].amount - ); - - unchecked { - ++_i; - } - } - } - - function _withdrawProtocolReserve( - address _token, - address _to, - uint256 _amount - ) internal { - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - // Revert if trying to withdraw more than protocolReserves - if (_amount > moneyMarketDs.protocolReserves[_token]) { - revert AdminFacet_ReserveTooLow(); - } - // Revert if trying to withdraw more than actual token available even protocolReserves is enough - if (_amount > moneyMarketDs.reserves[_token]) { - revert LibMoneyMarket01.LibMoneyMarket01_NotEnoughToken(); - } - - // Reduce protocolReserves and reserves by amount withdrawn - moneyMarketDs.protocolReserves[_token] -= _amount; - moneyMarketDs.reserves[_token] -= _amount; - - IERC20(_token).safeTransfer(_to, _amount); - - emit LogWitdrawReserve(_token, _to, _amount); - } -} diff --git a/solidity/contracts/money-market/interfaces/IAdminFacet.sol b/solidity/contracts/money-market/interfaces/IAdminFacet.sol index 27ded863..c7c47edb 100644 --- a/solidity/contracts/money-market/interfaces/IAdminFacet.sol +++ b/solidity/contracts/money-market/interfaces/IAdminFacet.sol @@ -115,5 +115,7 @@ interface IAdminFacet { uint256 _newMaxBorrow ) external; + function setWhitelistedCallers(address[] calldata _callers, bool _allow) external; + function withdrawProtocolReserves(WithdrawProtocolReserveParam[] calldata _withdrawProtocolReserveParam) external; } diff --git a/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol b/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol index e061b585..af955887 100644 --- a/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol +++ b/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol @@ -17,6 +17,10 @@ contract MoneyMarket_AccrueInterest_Borrow is MoneyMarket_BaseTest { function setUp() public override { super.setUp(); + // set whitelist + address[] memory _whitelistedCallers = new address[](1); + _whitelistedCallers[0] = ALICE; + adminFacet.setWhitelistedCallers(_whitelistedCallers, true); mockToken = deployMockErc20("Mock token", "MOCK", 18); mockToken.mint(ALICE, 1000 ether); @@ -430,18 +434,27 @@ contract MoneyMarket_AccrueInterest_Borrow is MoneyMarket_BaseTest { _withdrawInput[0] = IAdminFacet.WithdrawProtocolReserveParam(address(weth), address(this), 5e16); // test withdrawing reserve + vm.startPrank(ALICE); vm.expectRevert(IAdminFacet.AdminFacet_ReserveTooLow.selector); adminFacet.withdrawProtocolReserves(_withdrawInput); + vm.stopPrank(); _withdrawInput[0] = IAdminFacet.WithdrawProtocolReserveParam(address(weth), address(this), 4e16); - vm.prank(ALICE); - vm.expectRevert("LibDiamond: Must be contract owner"); + // call withdraw with deployer + vm.expectRevert(abi.encodeWithSelector(IAdminFacet.AdminFacet_Unauthorized.selector)); + adminFacet.withdrawProtocolReserves(_withdrawInput); + + // call withdraw with unauthorized person + vm.prank(BOB); + vm.expectRevert(abi.encodeWithSelector(IAdminFacet.AdminFacet_Unauthorized.selector)); adminFacet.withdrawProtocolReserves(_withdrawInput); + vm.startPrank(ALICE); adminFacet.withdrawProtocolReserves(_withdrawInput); assertEq(viewFacet.getProtocolReserve(address(weth)), 0); assertEq(viewFacet.getTotalToken(address(weth)), 5396e16); + vm.stopPrank(); } function testCorrectness_WhenUsersBorrowSameTokenButDifferentInterestModel_ShouldaccrueInterestCorrectly() external { From 18fa47c68955300f32e4ff8947114c2e5283c92b Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Mon, 8 May 2023 15:57:04 +0700 Subject: [PATCH 35/87] fix: move state to lib --- .../money-market/facets/AdminFacet.sol | 23 +++++++------------ .../libraries/LibMoneyMarket01.sol | 1 + .../MoneyMarket_AccrueInterest_Borrow.t.sol | 4 ++-- 3 files changed, 11 insertions(+), 17 deletions(-) diff --git a/solidity/contracts/money-market/facets/AdminFacet.sol b/solidity/contracts/money-market/facets/AdminFacet.sol index ee0c0991..62ba4c64 100644 --- a/solidity/contracts/money-market/facets/AdminFacet.sol +++ b/solidity/contracts/money-market/facets/AdminFacet.sol @@ -30,8 +30,6 @@ contract AdminFacet is IAdminFacet { using SafeCast for uint256; using LibDoublyLinkedList for LibDoublyLinkedList.List; - mapping(address => bool) public whitelistedCallers; - event LogOpenMarket(address indexed _user, address indexed _token, address _ibToken, address _debtToken); event LogSetTokenConfig(address indexed _token, LibConstant.TokenConfig _config); event LogsetNonCollatBorrowerOk(address indexed _account, bool isOk); @@ -63,14 +61,6 @@ contract AdminFacet is IAdminFacet { _; } - /// @dev allow only whitelised callers - modifier onlyWhitelisted() { - if (!whitelistedCallers[msg.sender]) { - revert AdminFacet_Unauthorized(); - } - _; - } - modifier nonReentrant() { LibReentrancyGuard.lock(); _; @@ -560,9 +550,11 @@ contract AdminFacet is IAdminFacet { /// @param _callers The addresses of the callers that are going to be whitelisted. /// @param _allow Whether to allow or disallow callers. function setWhitelistedCallers(address[] calldata _callers, bool _allow) external onlyOwner { + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + uint256 _length = _callers.length; for (uint256 _i; _i < _length; ) { - whitelistedCallers[_callers[_i]] = _allow; + moneyMarketDs.reserveWithdrawerOk[_callers[_i]] = _allow; emit LogSetWhitelistedCaller(_callers[_i], _allow); unchecked { @@ -573,10 +565,11 @@ contract AdminFacet is IAdminFacet { /// @notice Withdraw the protocol reserves /// @param _withdrawProtocolReserveParam An array of protocol's reserve to withdraw - function withdrawProtocolReserves(WithdrawProtocolReserveParam[] calldata _withdrawProtocolReserveParam) - external - onlyWhitelisted - { + function withdrawProtocolReserves(WithdrawProtocolReserveParam[] calldata _withdrawProtocolReserveParam) external { + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + + if (!moneyMarketDs.reserveWithdrawerOk[msg.sender]) revert AdminFacet_Unauthorized(); + uint256 _length = _withdrawProtocolReserveParam.length; for (uint256 _i; _i < _length; ) { _withdrawProtocolReserve( diff --git a/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol b/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol index d3ea98ed..53433870 100644 --- a/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol +++ b/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol @@ -132,6 +132,7 @@ library LibMoneyMarket01 { mapping(address => bool) liquidatorsOk; // allowed to initiate liquidation process mapping(address => bool) accountManagersOk; // allowed to manipulate account/subaccount on behalf of end users mapping(address => bool) riskManagersOk; // allowed to set risk control parameters + mapping(address => bool) reserveWithdrawerOk; // allowed to withdraw the protocol reserve // ---- reserves ---- // mapping(address => uint256) protocolReserves; // token address => amount that is reserved for protocol mapping(address => uint256) reserves; // token address => amount that is available in protocol diff --git a/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol b/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol index af955887..9e7e51b8 100644 --- a/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol +++ b/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol @@ -441,11 +441,11 @@ contract MoneyMarket_AccrueInterest_Borrow is MoneyMarket_BaseTest { _withdrawInput[0] = IAdminFacet.WithdrawProtocolReserveParam(address(weth), address(this), 4e16); - // call withdraw with deployer + // call withdraw by deployer vm.expectRevert(abi.encodeWithSelector(IAdminFacet.AdminFacet_Unauthorized.selector)); adminFacet.withdrawProtocolReserves(_withdrawInput); - // call withdraw with unauthorized person + // call withdraw by unauthorized person vm.prank(BOB); vm.expectRevert(abi.encodeWithSelector(IAdminFacet.AdminFacet_Unauthorized.selector)); adminFacet.withdrawProtocolReserves(_withdrawInput); From bfa5e11a59c1780d5a9bde8d76c0dcfd7f8d3f36 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Mon, 8 May 2023 15:58:30 +0700 Subject: [PATCH 36/87] fix: revise name --- solidity/contracts/money-market/facets/AdminFacet.sol | 4 ++-- .../contracts/money-market/libraries/LibMoneyMarket01.sol | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/solidity/contracts/money-market/facets/AdminFacet.sol b/solidity/contracts/money-market/facets/AdminFacet.sol index 62ba4c64..5178b7aa 100644 --- a/solidity/contracts/money-market/facets/AdminFacet.sol +++ b/solidity/contracts/money-market/facets/AdminFacet.sol @@ -554,7 +554,7 @@ contract AdminFacet is IAdminFacet { uint256 _length = _callers.length; for (uint256 _i; _i < _length; ) { - moneyMarketDs.reserveWithdrawerOk[_callers[_i]] = _allow; + moneyMarketDs.operatorsOk[_callers[_i]] = _allow; emit LogSetWhitelistedCaller(_callers[_i], _allow); unchecked { @@ -568,7 +568,7 @@ contract AdminFacet is IAdminFacet { function withdrawProtocolReserves(WithdrawProtocolReserveParam[] calldata _withdrawProtocolReserveParam) external { LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - if (!moneyMarketDs.reserveWithdrawerOk[msg.sender]) revert AdminFacet_Unauthorized(); + if (!moneyMarketDs.operatorsOk[msg.sender]) revert AdminFacet_Unauthorized(); uint256 _length = _withdrawProtocolReserveParam.length; for (uint256 _i; _i < _length; ) { diff --git a/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol b/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol index 53433870..d960d4cc 100644 --- a/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol +++ b/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol @@ -132,7 +132,7 @@ library LibMoneyMarket01 { mapping(address => bool) liquidatorsOk; // allowed to initiate liquidation process mapping(address => bool) accountManagersOk; // allowed to manipulate account/subaccount on behalf of end users mapping(address => bool) riskManagersOk; // allowed to set risk control parameters - mapping(address => bool) reserveWithdrawerOk; // allowed to withdraw the protocol reserve + mapping(address => bool) operatorsOk; // allowed to withdraw the protocol reserve // ---- reserves ---- // mapping(address => uint256) protocolReserves; // token address => amount that is reserved for protocol mapping(address => uint256) reserves; // token address => amount that is available in protocol From aa248469e13b9671f5cf43bbadec11d99a7275cb Mon Sep 17 00:00:00 2001 From: alpanaca Date: Mon, 8 May 2023 16:01:19 +0700 Subject: [PATCH 37/87] fix: only allow borrowable asset --- solidity/contracts/money-market/facets/FlashloanFacet.sol | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/solidity/contracts/money-market/facets/FlashloanFacet.sol b/solidity/contracts/money-market/facets/FlashloanFacet.sol index addb613d..93ff9cf8 100644 --- a/solidity/contracts/money-market/facets/FlashloanFacet.sol +++ b/solidity/contracts/money-market/facets/FlashloanFacet.sol @@ -33,6 +33,11 @@ contract FlashloanFacet is IFlashloanFacet { ) external nonReentrant { LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + // only allow flashloan on opened market + if (moneyMarketDs.tokenToIbTokens[_token] == address(0)) { + revert FlashloanFacet_InvalidToken(_token); + } + // expected fee = (_amount * flashloan fee (bps)) / max bps uint256 _expectedFee = (_amount * moneyMarketDs.flashloanFeeBps) / LibConstant.MAX_BPS; From cb00035d98f13ad6742471fd13e9822d9eee6a8f Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Mon, 8 May 2023 16:23:33 +0700 Subject: [PATCH 38/87] fix: move addtional state to end of struct --- solidity/contracts/money-market/libraries/LibMoneyMarket01.sol | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol b/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol index d960d4cc..a2812c51 100644 --- a/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol +++ b/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol @@ -132,7 +132,6 @@ library LibMoneyMarket01 { mapping(address => bool) liquidatorsOk; // allowed to initiate liquidation process mapping(address => bool) accountManagersOk; // allowed to manipulate account/subaccount on behalf of end users mapping(address => bool) riskManagersOk; // allowed to set risk control parameters - mapping(address => bool) operatorsOk; // allowed to withdraw the protocol reserve // ---- reserves ---- // mapping(address => uint256) protocolReserves; // token address => amount that is reserved for protocol mapping(address => uint256) reserves; // token address => amount that is available in protocol @@ -153,6 +152,8 @@ library LibMoneyMarket01 { uint16 liquidationFeeBps; // fee that is charged during liquidation by protocol, goes to liquidationTreasury uint16 flashloanFeeBps; // fee that is charged when providing the flashloan uint16 lenderFlashloanBps; // portion of flashloan fee that will go to lenders + // Additional state + mapping(address => bool) operatorsOk; // allowed to withdraw the protocol reserve } /// @dev Get money market storage From 580a60532273cb25c0421063729c29de19bff2ca Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Mon, 8 May 2023 16:25:08 +0700 Subject: [PATCH 39/87] fix: revise name whitelist to operators --- solidity/contracts/money-market/facets/AdminFacet.sol | 6 +++--- solidity/contracts/money-market/interfaces/IAdminFacet.sol | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/solidity/contracts/money-market/facets/AdminFacet.sol b/solidity/contracts/money-market/facets/AdminFacet.sol index 5178b7aa..9585238b 100644 --- a/solidity/contracts/money-market/facets/AdminFacet.sol +++ b/solidity/contracts/money-market/facets/AdminFacet.sol @@ -54,7 +54,7 @@ contract AdminFacet is IAdminFacet { event LogTopUpTokenReserve(address indexed _token, uint256 _amount); event LogSetMinDebtSize(uint256 _newValue); event LogSetEmergencyPaused(address indexed _caller, bool _isPasued); - event LogSetWhitelistedCaller(address indexed _caller, bool _allow); + event LogSetOperatorsOk(address indexed _caller, bool _allow); modifier onlyOwner() { LibDiamond.enforceIsContractOwner(); @@ -549,13 +549,13 @@ contract AdminFacet is IAdminFacet { /// @notice Set whitelisted callers /// @param _callers The addresses of the callers that are going to be whitelisted. /// @param _allow Whether to allow or disallow callers. - function setWhitelistedCallers(address[] calldata _callers, bool _allow) external onlyOwner { + function setOperatorsOk(address[] calldata _callers, bool _allow) external onlyOwner { LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); uint256 _length = _callers.length; for (uint256 _i; _i < _length; ) { moneyMarketDs.operatorsOk[_callers[_i]] = _allow; - emit LogSetWhitelistedCaller(_callers[_i], _allow); + emit LogSetOperatorsOk(_callers[_i], _allow); unchecked { ++_i; diff --git a/solidity/contracts/money-market/interfaces/IAdminFacet.sol b/solidity/contracts/money-market/interfaces/IAdminFacet.sol index c7c47edb..82d0d2f2 100644 --- a/solidity/contracts/money-market/interfaces/IAdminFacet.sol +++ b/solidity/contracts/money-market/interfaces/IAdminFacet.sol @@ -115,7 +115,7 @@ interface IAdminFacet { uint256 _newMaxBorrow ) external; - function setWhitelistedCallers(address[] calldata _callers, bool _allow) external; + function setOperatorsOk(address[] calldata _callers, bool _allow) external; function withdrawProtocolReserves(WithdrawProtocolReserveParam[] calldata _withdrawProtocolReserveParam) external; } From 1e13cb1356aaa8f4f9568f9ef9eb3fbb0fa0b677 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Mon, 8 May 2023 16:27:52 +0700 Subject: [PATCH 40/87] fix: fix test file --- script/deployments/libraries/LibMoneyMarketDeployment.sol | 2 +- .../accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/script/deployments/libraries/LibMoneyMarketDeployment.sol b/script/deployments/libraries/LibMoneyMarketDeployment.sol index 9f2a1fe0..56b9c6cf 100644 --- a/script/deployments/libraries/LibMoneyMarketDeployment.sol +++ b/script/deployments/libraries/LibMoneyMarketDeployment.sol @@ -265,7 +265,7 @@ library LibMoneyMarketDeployment { _selectors[21] = IAdminFacet.setTokenMaximumCapacities.selector; _selectors[22] = IAdminFacet.setRiskManagersOk.selector; _selectors[23] = IAdminFacet.setFlashloanFees.selector; - _selectors[24] = IAdminFacet.setWhitelistedCallers.selector; + _selectors[24] = IAdminFacet.setOperatorsOk.selector; } function getLiquidationFacetSelectors() internal pure returns (bytes4[] memory _selectors) { diff --git a/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol b/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol index 9e7e51b8..674c456d 100644 --- a/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol +++ b/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol @@ -20,7 +20,7 @@ contract MoneyMarket_AccrueInterest_Borrow is MoneyMarket_BaseTest { // set whitelist address[] memory _whitelistedCallers = new address[](1); _whitelistedCallers[0] = ALICE; - adminFacet.setWhitelistedCallers(_whitelistedCallers, true); + adminFacet.setOperatorsOk(_whitelistedCallers, true); mockToken = deployMockErc20("Mock token", "MOCK", 18); mockToken.mint(ALICE, 1000 ether); From 785a6a97277d66bc41f55df2e9a4862c4357b49c Mon Sep 17 00:00:00 2001 From: alpanaca Date: Mon, 8 May 2023 16:54:14 +0700 Subject: [PATCH 41/87] fix: flashloan validation --- .../libraries/LibMoneyMarketDeployment.sol | 2 +- .../money-market/facets/AdminFacet.sol | 16 +++++--- .../money-market/facets/FlashloanFacet.sol | 41 +++++++++++++++---- .../money-market/interfaces/IAdminFacet.sol | 6 ++- .../interfaces/IFlashloanFacet.sol | 6 +-- .../libraries/LibMoneyMarket01.sol | 1 + .../money-market/MoneyMarket_BaseTest.t.sol | 4 -- .../flashloan/MoneyMarket_Flashloan.t.sol | 25 +++++++++-- 8 files changed, 75 insertions(+), 26 deletions(-) diff --git a/script/deployments/libraries/LibMoneyMarketDeployment.sol b/script/deployments/libraries/LibMoneyMarketDeployment.sol index 029c9f4e..c6eae61c 100644 --- a/script/deployments/libraries/LibMoneyMarketDeployment.sol +++ b/script/deployments/libraries/LibMoneyMarketDeployment.sol @@ -264,7 +264,7 @@ library LibMoneyMarketDeployment { _selectors[20] = IAdminFacet.setAccountManagersOk.selector; _selectors[21] = IAdminFacet.setTokenMaximumCapacities.selector; _selectors[22] = IAdminFacet.setRiskManagersOk.selector; - _selectors[23] = IAdminFacet.setFlashloanFees.selector; + _selectors[23] = IAdminFacet.setFlashloanParams.selector; } function getLiquidationFacetSelectors() internal pure returns (bytes4[] memory _selectors) { diff --git a/solidity/contracts/money-market/facets/AdminFacet.sol b/solidity/contracts/money-market/facets/AdminFacet.sol index d597eb4b..60d4a486 100644 --- a/solidity/contracts/money-market/facets/AdminFacet.sol +++ b/solidity/contracts/money-market/facets/AdminFacet.sol @@ -42,7 +42,7 @@ contract AdminFacet is IAdminFacet { event LogSetAccountManagerOk(address indexed _manager, bool isOk); event LogSetLiquidationTreasury(address indexed _treasury); event LogSetFees(uint256 _lendingFeeBps, uint256 _repurchaseFeeBps, uint256 _liquidationFeeBps); - event LogSetFlashloanFees(uint256 _flashloanFeeBps, uint256 _lenderFlashloanBps); + event LogSetFlashloanParams(uint256 _flashloanFeeBps, uint256 _lenderFlashloanBps, address _flashloanTreasury); event LogSetRepurchaseRewardModel(IFeeModel indexed _repurchaseRewardModel); event LogSetIbTokenImplementation(address indexed _newImplementation); event LogSetDebtTokenImplementation(address indexed _newImplementation); @@ -386,19 +386,25 @@ contract AdminFacet is IAdminFacet { emit LogSetFees(_newLendingFeeBps, _newRepurchaseFeeBps, _newLiquidationFeeBps); } - /// @notice Set lender portion and flashloan fee + /// @notice Set parameters for flashloan /// @param _flashloanFeeBps the flashloan fee collected by protocol /// @param _lenderFlashloanBps the portion that lenders will receive from _flashloanFeeBps - function setFlashloanFees(uint16 _flashloanFeeBps, uint16 _lenderFlashloanBps) external onlyOwner { + /// @param _flashloanTreasury the address that hold excess flashloan fee + function setFlashloanParams( + uint16 _flashloanFeeBps, + uint16 _lenderFlashloanBps, + address _flashloanTreasury + ) external onlyOwner { if (_flashloanFeeBps > LibConstant.MAX_BPS || _lenderFlashloanBps > LibConstant.MAX_BPS) { revert AdminFacet_InvalidArguments(); } LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - // Replace existing fees + // Replace existing params moneyMarketDs.flashloanFeeBps = _flashloanFeeBps; moneyMarketDs.lenderFlashloanBps = _lenderFlashloanBps; + moneyMarketDs.flashloanTreasury = _flashloanTreasury; - emit LogSetFlashloanFees(_flashloanFeeBps, _lenderFlashloanBps); + emit LogSetFlashloanParams(_flashloanFeeBps, _lenderFlashloanBps, _flashloanTreasury); } /// @notice Set the repurchase reward model for a token specifically to over collateralized borrowing diff --git a/solidity/contracts/money-market/facets/FlashloanFacet.sol b/solidity/contracts/money-market/facets/FlashloanFacet.sol index 93ff9cf8..d2b247b9 100644 --- a/solidity/contracts/money-market/facets/FlashloanFacet.sol +++ b/solidity/contracts/money-market/facets/FlashloanFacet.sol @@ -21,6 +21,15 @@ contract FlashloanFacet is IFlashloanFacet { LibReentrancyGuard.unlock(); } + // Event + event LogFlashloan( + address _token, + uint256 _amount, + uint256 _feeToLenders, + uint256 _feeToProtocol, + uint256 _excessFee + ); + /// @notice Loan token and pay it back, plus fee, in the callback /// @dev The caller of this method receives a callback in the form of IAlpacaFlashloanCallback#alpacaFlashloanCallback /// @param _token The address of loan token @@ -35,12 +44,16 @@ contract FlashloanFacet is IFlashloanFacet { // only allow flashloan on opened market if (moneyMarketDs.tokenToIbTokens[_token] == address(0)) { - revert FlashloanFacet_InvalidToken(_token); + revert FlashloanFacet_InvalidToken(); } // expected fee = (_amount * flashloan fee (bps)) / max bps uint256 _expectedFee = (_amount * moneyMarketDs.flashloanFeeBps) / LibConstant.MAX_BPS; + if (_expectedFee == 0) { + revert FlashloanFacet_NoFee(); + } + // cache balance before sending token to flashloaner uint256 _balanceBefore = IERC20(_token).balanceOf(address(this)); IERC20(_token).safeTransfer(msg.sender, _amount); @@ -54,16 +67,30 @@ contract FlashloanFacet is IFlashloanFacet { revert FlashloanFacet_NotEnoughRepay(); } - // calculate the actual lender fee by taking x% of expected fee + // transfer excess fee to treasury // in case flashloaner inject a lot of fee, the ib token price should not be inflated // this is to prevent unforeseeable impact from inflating the ib token price - uint256 _lenderFee = (_expectedFee * moneyMarketDs.lenderFlashloanBps) / LibConstant.MAX_BPS; + uint256 _excessFee; + if (_actualTotalFee > _expectedFee) { + unchecked { + _excessFee = _actualTotalFee - _expectedFee; + } - // total actual fee will be added to reserve (including excess fee) - moneyMarketDs.reserves[_token] += _actualTotalFee; + IERC20(_token).safeTransfer(moneyMarketDs.flashloanTreasury, _excessFee); + } + + // calculate the actual lender fee by taking x% of expected fee + uint256 _feeToLenders = (_expectedFee * moneyMarketDs.lenderFlashloanBps) / LibConstant.MAX_BPS; + + // expected fee will be added to reserve + moneyMarketDs.reserves[_token] += _expectedFee; // the rest of the fee will go to protocol - moneyMarketDs.protocolReserves[_token] += _actualTotalFee - _lenderFee; + uint256 _feeToProtocol; + unchecked { + _feeToProtocol = _expectedFee - _feeToLenders; + } + moneyMarketDs.protocolReserves[_token] += _feeToProtocol; - emit LogFlashloan(_token, _amount, _actualTotalFee, _lenderFee); + emit LogFlashloan(_token, _amount, _feeToLenders, _feeToProtocol, _excessFee); } } diff --git a/solidity/contracts/money-market/interfaces/IAdminFacet.sol b/solidity/contracts/money-market/interfaces/IAdminFacet.sol index 27ded863..54d8d7df 100644 --- a/solidity/contracts/money-market/interfaces/IAdminFacet.sol +++ b/solidity/contracts/money-market/interfaces/IAdminFacet.sol @@ -85,7 +85,11 @@ interface IAdminFacet { uint16 _newLiquidationFeeBps ) external; - function setFlashloanFees(uint16 _flashloanFeeBps, uint16 _lenderFlashloanBps) external; + function setFlashloanParams( + uint16 _flashloanFeeBps, + uint16 _lenderFlashloanBps, + address _flashloanTreasury + ) external; function setRepurchaseRewardModel(IFeeModel _newRepurchaseRewardModel) external; diff --git a/solidity/contracts/money-market/interfaces/IFlashloanFacet.sol b/solidity/contracts/money-market/interfaces/IFlashloanFacet.sol index 74e73caa..672e72f5 100644 --- a/solidity/contracts/money-market/interfaces/IFlashloanFacet.sol +++ b/solidity/contracts/money-market/interfaces/IFlashloanFacet.sol @@ -2,13 +2,11 @@ pragma solidity 0.8.19; interface IFlashloanFacet { - // Event - event LogFlashloan(address token, uint256 amount, uint256 totalFee, uint256 lenderFee); - // Errors - error FlashloanFacet_InvalidToken(address _token); + error FlashloanFacet_InvalidToken(); error FlashloanFacet_NotEnoughToken(uint256 _amount); error FlashloanFacet_NotEnoughRepay(); + error FlashloanFacet_NoFee(); /// @notice Receive token0 and/or token1 and pay it back, plus a fee, in the callback /// @dev The caller of this method receives a callback in the form of IAlpacaFlashloanCallback#alpacaFlashloanCallback diff --git a/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol b/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol index d3ea98ed..fd53e4e2 100644 --- a/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol +++ b/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol @@ -152,6 +152,7 @@ library LibMoneyMarket01 { uint16 liquidationFeeBps; // fee that is charged during liquidation by protocol, goes to liquidationTreasury uint16 flashloanFeeBps; // fee that is charged when providing the flashloan uint16 lenderFlashloanBps; // portion of flashloan fee that will go to lenders + address flashloanTreasury; // a treasury to hold excess flashloan fee } /// @dev Get money market storage diff --git a/solidity/tests/money-market/MoneyMarket_BaseTest.t.sol b/solidity/tests/money-market/MoneyMarket_BaseTest.t.sol index 6e2b7a3d..eee4f475 100644 --- a/solidity/tests/money-market/MoneyMarket_BaseTest.t.sol +++ b/solidity/tests/money-market/MoneyMarket_BaseTest.t.sol @@ -226,12 +226,8 @@ abstract contract MoneyMarket_BaseTest is BaseTest { adminFacet.setLiquidationTreasury(liquidationTreasury); // adminFacet.setFees(_newLendingFeeBps, _newRepurchaseFeeBps, _newLiquidationFeeBps); - adminFacet.setFees(0, 100, 100); - // adminFacet.setFlashloanFees(_flashloanFeeBps, _lenderFlashloanBps); - adminFacet.setFlashloanFees(500, 5000); - // set liquidation params: maxLiquidate 50%, liquidationThreshold 111.11% adminFacet.setLiquidationParams(5000, 11111); diff --git a/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol b/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol index 41bfb562..b872515e 100644 --- a/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol +++ b/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol @@ -19,6 +19,7 @@ import { MockFlashloan_Repurchase } from "../../mocks/MockFlashloan_Repurchase.s contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { MockFlashloan internal mockFlashloan; + address internal flashloanTreasury; struct RepurchaseParam { address _account; @@ -30,6 +31,8 @@ contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { function setUp() public override { super.setUp(); + flashloanTreasury = address(111); + adminFacet.setFlashloanParams(500, 5000, flashloanTreasury); mockFlashloan = new MockFlashloan(moneyMarketDiamond); // add 5 usdc to mock flashloan contract @@ -107,13 +110,15 @@ contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { // fee = 0.05 USDC // After flash, reserve = current + fee + extra // 10 + 0.05 + 1 = 11.05 USDC # - // Extra 1 USDC should go to protocol reserve - // protocol reserve = current + fee + extra = 0 + 0.025 + 1 = 1.025 USDC # + // Extra 1 USDC should go to flashloan treasury + // protocol reserve = current + fee = 0 + 0.025 = 0.025 USDC # uint256 _reserve = viewFacet.getFloatingBalance(address(usdc)); - assertEq(_reserve, normalizeEther(11.05 ether, usdcDecimal), "Reserve"); + assertEq(_reserve, normalizeEther(10.05 ether, usdcDecimal), "Reserve"); uint256 _protocolReserve = viewFacet.getProtocolReserve(address(usdc)); - assertEq(_protocolReserve, normalizeEther(1.025 ether, usdcDecimal), "Protocol reserve"); + assertEq(_protocolReserve, normalizeEther(0.025 ether, usdcDecimal), "Protocol reserve"); + + assertEq(usdc.balanceOf(flashloanTreasury), normalizeEther(1 ether, usdcDecimal), "Flashloan Treasury"); } // test if repay less than the expected fee (should revert) @@ -186,4 +191,16 @@ contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { _mockRepurchaseFlashloan.flash(address(usdc), _flashloanAmount, _data); } } + + function testRevert_IfExpectedFeeIsZero_ShouldRevert() external { + // this should cause precision loss on expected fee + vm.expectRevert(IFlashloanFacet.FlashloanFacet_NoFee.selector); + mockFlashloan.flash(address(usdc), 10, ""); + } + + function testRevert_WhenTryToFlashloanNonExistingMarket_ShouldRevert() external { + // this should cause precision loss on expected fee + vm.expectRevert(IFlashloanFacet.FlashloanFacet_InvalidToken.selector); + mockFlashloan.flash(address(888), 10, ""); + } } From 530b3b9833e8210f991020afca978229ca467a87 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Mon, 8 May 2023 16:54:19 +0700 Subject: [PATCH 42/87] chore: revise params name --- .../contracts/money-market/facets/AdminFacet.sol | 12 ++++++------ .../money-market/interfaces/IAdminFacet.sol | 2 +- .../MoneyMarket_AccrueInterest_Borrow.t.sol | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/solidity/contracts/money-market/facets/AdminFacet.sol b/solidity/contracts/money-market/facets/AdminFacet.sol index 9585238b..bfa120b0 100644 --- a/solidity/contracts/money-market/facets/AdminFacet.sol +++ b/solidity/contracts/money-market/facets/AdminFacet.sol @@ -546,16 +546,16 @@ contract AdminFacet is IAdminFacet { emit LogSetEmergencyPaused(msg.sender, _isPaused); } - /// @notice Set whitelisted callers - /// @param _callers The addresses of the callers that are going to be whitelisted. + /// @notice Set operators + /// @param _operators The addresses of the operator that are going to be whitelisted. /// @param _allow Whether to allow or disallow callers. - function setOperatorsOk(address[] calldata _callers, bool _allow) external onlyOwner { + function setOperatorsOk(address[] calldata _operators, bool _allow) external onlyOwner { LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - uint256 _length = _callers.length; + uint256 _length = _operators.length; for (uint256 _i; _i < _length; ) { - moneyMarketDs.operatorsOk[_callers[_i]] = _allow; - emit LogSetOperatorsOk(_callers[_i], _allow); + moneyMarketDs.operatorsOk[_operators[_i]] = _allow; + emit LogSetOperatorsOk(_operators[_i], _allow); unchecked { ++_i; diff --git a/solidity/contracts/money-market/interfaces/IAdminFacet.sol b/solidity/contracts/money-market/interfaces/IAdminFacet.sol index 82d0d2f2..636077a9 100644 --- a/solidity/contracts/money-market/interfaces/IAdminFacet.sol +++ b/solidity/contracts/money-market/interfaces/IAdminFacet.sol @@ -115,7 +115,7 @@ interface IAdminFacet { uint256 _newMaxBorrow ) external; - function setOperatorsOk(address[] calldata _callers, bool _allow) external; + function setOperatorsOk(address[] calldata _operators, bool _allow) external; function withdrawProtocolReserves(WithdrawProtocolReserveParam[] calldata _withdrawProtocolReserveParam) external; } diff --git a/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol b/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol index 674c456d..e3cb969f 100644 --- a/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol +++ b/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol @@ -18,9 +18,9 @@ contract MoneyMarket_AccrueInterest_Borrow is MoneyMarket_BaseTest { function setUp() public override { super.setUp(); // set whitelist - address[] memory _whitelistedCallers = new address[](1); - _whitelistedCallers[0] = ALICE; - adminFacet.setOperatorsOk(_whitelistedCallers, true); + address[] memory _operators = new address[](1); + _operators[0] = ALICE; + adminFacet.setOperatorsOk(_operators, true); mockToken = deployMockErc20("Mock token", "MOCK", 18); mockToken.mint(ALICE, 1000 ether); From be7a1938cf8e66f0762e0ab14bdf1df01903946e Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Mon, 8 May 2023 17:23:22 +0700 Subject: [PATCH 43/87] fix: revise to _isOk --- .../money-market/facets/AdminFacet.sol | 34 +++++++++---------- .../money-market/interfaces/IAdminFacet.sol | 2 +- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/solidity/contracts/money-market/facets/AdminFacet.sol b/solidity/contracts/money-market/facets/AdminFacet.sol index bfa120b0..59ae105b 100644 --- a/solidity/contracts/money-market/facets/AdminFacet.sol +++ b/solidity/contracts/money-market/facets/AdminFacet.sol @@ -348,6 +348,23 @@ contract AdminFacet is IAdminFacet { } } + /// @notice Set operators + /// @param _operators The addresses of the operator that are going to be whitelisted. + /// @param _isOk Whether to allow or disallow callers. + function setOperatorsOk(address[] calldata _operators, bool _isOk) external onlyOwner { + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + + uint256 _length = _operators.length; + for (uint256 _i; _i < _length; ) { + moneyMarketDs.operatorsOk[_operators[_i]] = _isOk; + emit LogSetOperatorsOk(_operators[_i], _isOk); + + unchecked { + ++_i; + } + } + } + /// @notice Set the treasury address /// @param _treasury The new treasury address function setLiquidationTreasury(address _treasury) external onlyOwner { @@ -546,23 +563,6 @@ contract AdminFacet is IAdminFacet { emit LogSetEmergencyPaused(msg.sender, _isPaused); } - /// @notice Set operators - /// @param _operators The addresses of the operator that are going to be whitelisted. - /// @param _allow Whether to allow or disallow callers. - function setOperatorsOk(address[] calldata _operators, bool _allow) external onlyOwner { - LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - - uint256 _length = _operators.length; - for (uint256 _i; _i < _length; ) { - moneyMarketDs.operatorsOk[_operators[_i]] = _allow; - emit LogSetOperatorsOk(_operators[_i], _allow); - - unchecked { - ++_i; - } - } - } - /// @notice Withdraw the protocol reserves /// @param _withdrawProtocolReserveParam An array of protocol's reserve to withdraw function withdrawProtocolReserves(WithdrawProtocolReserveParam[] calldata _withdrawProtocolReserveParam) external { diff --git a/solidity/contracts/money-market/interfaces/IAdminFacet.sol b/solidity/contracts/money-market/interfaces/IAdminFacet.sol index 636077a9..1790907b 100644 --- a/solidity/contracts/money-market/interfaces/IAdminFacet.sol +++ b/solidity/contracts/money-market/interfaces/IAdminFacet.sol @@ -115,7 +115,7 @@ interface IAdminFacet { uint256 _newMaxBorrow ) external; - function setOperatorsOk(address[] calldata _operators, bool _allow) external; + function setOperatorsOk(address[] calldata _operators, bool _isOk) external; function withdrawProtocolReserves(WithdrawProtocolReserveParam[] calldata _withdrawProtocolReserveParam) external; } From 26c853626f90f6deeb6c6cd6a3465d3065cf91c1 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Mon, 8 May 2023 17:24:41 +0700 Subject: [PATCH 44/87] chore: remove space --- solidity/contracts/money-market/facets/AdminFacet.sol | 2 -- 1 file changed, 2 deletions(-) diff --git a/solidity/contracts/money-market/facets/AdminFacet.sol b/solidity/contracts/money-market/facets/AdminFacet.sol index 59ae105b..6f17c404 100644 --- a/solidity/contracts/money-market/facets/AdminFacet.sol +++ b/solidity/contracts/money-market/facets/AdminFacet.sol @@ -353,12 +353,10 @@ contract AdminFacet is IAdminFacet { /// @param _isOk Whether to allow or disallow callers. function setOperatorsOk(address[] calldata _operators, bool _isOk) external onlyOwner { LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); - uint256 _length = _operators.length; for (uint256 _i; _i < _length; ) { moneyMarketDs.operatorsOk[_operators[_i]] = _isOk; emit LogSetOperatorsOk(_operators[_i], _isOk); - unchecked { ++_i; } From c9264e69a89b93ec69780610a2c49219ebd9675f Mon Sep 17 00:00:00 2001 From: alpanaca <89061102+alpanaca@users.noreply.github.com> Date: Mon, 8 May 2023 17:30:37 +0700 Subject: [PATCH 45/87] chore: update comment --- .../tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol | 1 - 1 file changed, 1 deletion(-) diff --git a/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol b/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol index b872515e..93fe5dd2 100644 --- a/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol +++ b/solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol @@ -199,7 +199,6 @@ contract MoneyMarket_Flashloan is MoneyMarket_BaseTest { } function testRevert_WhenTryToFlashloanNonExistingMarket_ShouldRevert() external { - // this should cause precision loss on expected fee vm.expectRevert(IFlashloanFacet.FlashloanFacet_InvalidToken.selector); mockFlashloan.flash(address(888), 10, ""); } From b737b96b8433fe09136852612304c9dc938fdc69 Mon Sep 17 00:00:00 2001 From: alpanaca Date: Mon, 8 May 2023 18:04:28 +0700 Subject: [PATCH 46/87] feat: add native token support for staking --- .../MoneyMarketAccountManager.sol | 39 +++++++++++++++++++ .../interfaces/IMoneyMarketAccountManager.sol | 4 ++ 2 files changed, 43 insertions(+) diff --git a/solidity/contracts/account-manager/MoneyMarketAccountManager.sol b/solidity/contracts/account-manager/MoneyMarketAccountManager.sol index 2dd9eb4b..2b1d55f8 100644 --- a/solidity/contracts/account-manager/MoneyMarketAccountManager.sol +++ b/solidity/contracts/account-manager/MoneyMarketAccountManager.sol @@ -287,6 +287,45 @@ contract MoneyMarketAccountManager is IMoneyMarketAccountManager, OwnableUpgrade miniFL.deposit(msg.sender, moneyMarket.getMiniFLPoolIdOfToken(_ibToken), _amountReceived); } + /// @notice Deposit native token to Money Market and stake the ibToken to miniFL + function depositETHAndStake() external payable { + // revert if trying to deposit 0 + if (msg.value == 0) { + revert MoneyMarketAccountManager_InvalidAmount(); + } + // Wrap the native token as MoneyMarket only accepts ERC20 + IWNative(wNativeToken).deposit{ value: msg.value }(); + + // deposit wrapped native token to MoneyMarket + (address _ibToken, uint256 _amountReceived) = _deposit(wNativeToken, msg.value); + + // Use the received ibToken and stake it at miniFL on bahalf of the caller + IERC20(_ibToken).safeApprove(address(miniFL), _amountReceived); + + miniFL.deposit(msg.sender, moneyMarket.getMiniFLPoolIdOfToken(_ibToken), _amountReceived); + } + + /// @notice Unstake ibToken from miniFL and withdraw as native token from MoneyMarket + /// @param _ibTokenAmount The amount to withdraw + function unstakeAndWithdrawETH(uint256 _ibTokenAmount) external { + // revert if trying to remove 0 + + if (_ibTokenAmount == 0) { + revert MoneyMarketAccountManager_InvalidAmount(); + } + // unstake from miniFL with given amount + // If the transaction went through, the amount received will always equals to the _amount + miniFL.withdraw(msg.sender, moneyMarket.getMiniFLPoolIdOfToken(ibWNativeToken), _ibTokenAmount); + + // withdraw all of the ibToken received from unstaking from miniFL + (, uint256 _underlyingAmountReceived) = _withdraw(ibWNativeToken, _ibTokenAmount); + + // The _underlyingAmountReceived is expected to be greater than 0 + // making the ERC20.transfer impossible to revert on transfer 0 amount + // unwrap the wNativeToken and send back to the msg.sender + _safeUnwrap(msg.sender, _underlyingAmountReceived); + } + /// @notice Unstake ibToken from miniFL and withdraw from MoneyMarket /// @param _ibToken The ibToken token to withdraw /// @param _ibTokenAmount The amount to withdraw diff --git a/solidity/contracts/interfaces/IMoneyMarketAccountManager.sol b/solidity/contracts/interfaces/IMoneyMarketAccountManager.sol index e6720bab..51656345 100644 --- a/solidity/contracts/interfaces/IMoneyMarketAccountManager.sol +++ b/solidity/contracts/interfaces/IMoneyMarketAccountManager.sol @@ -51,6 +51,10 @@ interface IMoneyMarketAccountManager { function depositAndStake(address _token, uint256 _amount) external; + function depositETHAndStake() external payable; + + function unstakeAndWithdrawETH(uint256 _amount) external; + function unstakeAndWithdraw(address _ibToken, uint256 _amount) external; function borrow( From 2d6806f5423626d526d4e13bcf881e5a1aae4fe8 Mon Sep 17 00:00:00 2001 From: alpanaca Date: Mon, 8 May 2023 18:47:25 +0700 Subject: [PATCH 47/87] chore: update comment --- solidity/contracts/money-market/facets/FlashloanFacet.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solidity/contracts/money-market/facets/FlashloanFacet.sol b/solidity/contracts/money-market/facets/FlashloanFacet.sol index d2b247b9..44fad56d 100644 --- a/solidity/contracts/money-market/facets/FlashloanFacet.sol +++ b/solidity/contracts/money-market/facets/FlashloanFacet.sol @@ -84,7 +84,7 @@ contract FlashloanFacet is IFlashloanFacet { // expected fee will be added to reserve moneyMarketDs.reserves[_token] += _expectedFee; - // the rest of the fee will go to protocol + // protocol portion will be booked to protocol reserve uint256 _feeToProtocol; unchecked { _feeToProtocol = _expectedFee - _feeToLenders; From 066252e764778dce28fd366d1a21fceecc0c76af Mon Sep 17 00:00:00 2001 From: alpanaca Date: Tue, 9 May 2023 11:51:02 +0700 Subject: [PATCH 48/87] test: add test --- .../account-manager/MoneyMarket_AccountManager.t.sol | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/solidity/tests/money-market/account-manager/MoneyMarket_AccountManager.t.sol b/solidity/tests/money-market/account-manager/MoneyMarket_AccountManager.t.sol index 536bd6f1..8ecb0565 100644 --- a/solidity/tests/money-market/account-manager/MoneyMarket_AccountManager.t.sol +++ b/solidity/tests/money-market/account-manager/MoneyMarket_AccountManager.t.sol @@ -51,4 +51,14 @@ contract MoneyMarket_AccountManagerTest is MoneyMarket_BaseTest { assertEq(weth.balanceOf(ALICE), _wethBalanceBefore); } + + function testCorrectness_UnstakeAndWithdrawETH_ShouldWork() external { + uint256 _nativeTokenBalance = ALICE.balance; + vm.startPrank(ALICE); + accountManager.depositETHAndStake{ value: 10 ether }(); + accountManager.unstakeAndWithdrawETH(10 ether); + vm.stopPrank(); + + assertEq(weth.balanceOf(ALICE), _nativeTokenBalance); + } } From e71a0b5aca95569ef471118464dd5069f360ee24 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Tue, 9 May 2023 11:56:11 +0700 Subject: [PATCH 49/87] chore: revise comments --- .../accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol b/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol index e3cb969f..005eecf4 100644 --- a/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol +++ b/solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol @@ -441,11 +441,11 @@ contract MoneyMarket_AccrueInterest_Borrow is MoneyMarket_BaseTest { _withdrawInput[0] = IAdminFacet.WithdrawProtocolReserveParam(address(weth), address(this), 4e16); - // call withdraw by deployer + // call withdraw by deployer, should revert unauthorized vm.expectRevert(abi.encodeWithSelector(IAdminFacet.AdminFacet_Unauthorized.selector)); adminFacet.withdrawProtocolReserves(_withdrawInput); - // call withdraw by unauthorized person + // call withdraw by unauthorized person, should revert unauthorized vm.prank(BOB); vm.expectRevert(abi.encodeWithSelector(IAdminFacet.AdminFacet_Unauthorized.selector)); adminFacet.withdrawProtocolReserves(_withdrawInput); From 2110c318430ad4bc994dd0d0699ef42ac74622ae Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Tue, 9 May 2023 11:57:57 +0700 Subject: [PATCH 50/87] feat: add distribute --- .../smart-treasury/SmartTreasury.sol | 159 ++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 solidity/contracts/smart-treasury/SmartTreasury.sol diff --git a/solidity/contracts/smart-treasury/SmartTreasury.sol b/solidity/contracts/smart-treasury/SmartTreasury.sol new file mode 100644 index 00000000..48e1e1ca --- /dev/null +++ b/solidity/contracts/smart-treasury/SmartTreasury.sol @@ -0,0 +1,159 @@ +// SPDX-License-Identifier: BUSL +pragma solidity 0.8.19; + +// ---- External Libraries ---- // +import { OwnableUpgradeable } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; +import { Initializable } from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; + +// ---- Libraries ---- // +import { LibSafeToken } from "../money-market/libraries/LibSafeToken.sol"; +import { LibConstant } from "solidity/contracts/money-market/libraries/LibConstant.sol"; + +// ---- Interfaces ---- // +// path reader +import { IPancakeSwapRouterV3 } from "../money-market/interfaces/IPancakeSwapRouterV3.sol"; +import { IERC20 } from "../interfaces/IERC20.sol"; + +interface ISmartTreasury { + error SmartTreasury_AmountTooLow(); + error SmartTreasury_NoBalance(); + error SmartTreasury_PathConfigNotFound(); + error SmartTreasury_Unauthorized(); + + // call to auto split target token to each destination + function distribute(address calldata _tokens) external; + + function setAllocs( + uint256 _revenueAlloc, + uint256 _devAlloc, + uint256 _burnAlloc + ) external; + + function setWhitelistedCallers(address[] calldata _callers, bool _allow) external; +} + +// whitelist (can be both Eoa and contract) +// this contract hold treasury +contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { + using LibSafeToken for IERC20; + + address public revenueTreasury; + address public devTreasury; + address public burnTreasury; + + mapping(address => bool) public whitelistedCallers; + + uint16 public revenueAlloc; + uint16 public devAlloc; + uint16 public burnAlloc; + + address internal constant BUSD = 0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56; + IPancakeSwapRouterV3 internal constant PCS_V3_ROUTER = IPancakeSwapRouterV3(address(1)); + // IUniSwapV3PathReader internal immutable pathReader; + + event LogDistribute(address _token, uint256 _amount); + event LogSetWhitelistedCaller(address indexed _caller, bool _allow); + event LogSetAllocs(uint256 _revenueAlloc, uint256 _devAlloc, uint256 _burnAlloc, uint256 totalAlloc); + + modifier onlyWhitelisted() { + if (!whitelistedCallers[msg.sender]) { + revert SmartTreasury_Unauthorized(); + } + _; + } + + // target 1 address First portion is to swapped token to “BUSD” and send to RevenueTreasury from AF1.0 + // target 2 address Second portion is to transfer token to dev treasury address (0x08B5A95cb94f926a8B620E87eE92e675b35afc7E) + // target 3 address Third portion is to transfer token to "buy back" and burn treasury address (address ?) + + constructor() { + _disableInitializers(); + } + + function initialize() external initializer { + OwnableUpgradeable.__Ownable_init(); + } + + function distribute(address[] calldata _tokens) external onlyWhitelisted { + uint256 _length = _tokens.length; + for (uint256 _i; _i < _length; ) { + // should try catch? + _distribute(_tokens[_i]); + unchecked { + ++_i; + } + } + } + + function _distribute(address _token) internal { + uint256 _amount = IERC20(_token).balanceOf(address(this)); + (uint256 _revenueAmount, uint256 _devAmount, uint256 _burnAmount) = _splitPayment(_amount); + + bytes memory _path = pathReader.paths(_token, BUSD); + if (_path.length == 0) revert SmartTreasury_PathConfigNotFound(); + + IPancakeSwapRouterV3.ExactInputParams memory params = IPancakeSwapRouterV3.ExactInputParams({ + path: _path, + recipient: revenueTreasury, + deadline: block.timestamp, + amountIn: _revenueAmount, + amountOutMinimum: 0 + }); + + // Direct send to revenue treasury + IERC20(_token).safeApprove(address(PCS_V3_ROUTER), _revenueAmount); + PCS_V3_ROUTER.exactInput(params); + + IERC20(_token).safeTransfer(devTreasury, _devAmount); + IERC20(_token).safeTransfer(burnTreasury, _burnAmount); + + emit LogDistribute(_token, _amount); + } + + function _splitPayment(uint256 _amount) + internal + returns ( + uint256 _revenueAmount, + uint256 _devAmount, + uint256 _burnAmount + ) + { + if (_amount <= LibConstant.MAX_BPS) revert SmartTreasury_AmountTooLow(); + _devAmount = (_amount * devAlloc) / LibConstant.MAX_BPS; + _burnAmount = (_amount * burnAlloc) / LibConstant.MAX_BPS; + unchecked { + _revenueAmount = _amount - _devAmount - _burnAmount; + } + } + + uint256 public totalAlloc; + + function setAllocs( + uint256 _revenueAlloc, + uint256 _devAlloc, + uint256 _burnAlloc + ) external onlyWhitelisted { + totalAlloc = _revenueAlloc + _devAlloc + _burnAlloc; + + revenueAlloc = _revenueAlloc; + devAlloc = _devAlloc; + burnAlloc = _burnAlloc; + + emit LogSetAllocs(_revenueAlloc, _devAlloc, _burnAlloc, totalAlloc); + } + + /// @notice Set whitelisted callers + /// @param _callers The addresses of the callers that are going to be whitelisted. + /// @param _allow Whether to allow or disallow callers. + function setWhitelistedCallers(address[] calldata _callers, bool _allow) external onlyOwner { + uint256 _length = _callers.length; + for (uint256 _i; _i < _length; ) { + whitelistedCallers[_callers[_i]] = _allow; + emit LogSetWhitelistedCaller(_callers[_i], _allow); + + unchecked { + ++_i; + } + } + } +} From a4d7f9c35337423bce3055d9adcd8732daa9cbdd Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Tue, 9 May 2023 14:11:47 +0700 Subject: [PATCH 51/87] fix: move variable --- solidity/contracts/money-market/libraries/LibMoneyMarket01.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol b/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol index 1df7eafe..a8a5490b 100644 --- a/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol +++ b/solidity/contracts/money-market/libraries/LibMoneyMarket01.sol @@ -153,8 +153,8 @@ library LibMoneyMarket01 { uint16 flashloanFeeBps; // fee that is charged when providing the flashloan uint16 lenderFlashloanBps; // portion of flashloan fee that will go to lenders // Additional state - mapping(address => bool) operatorsOk; // allowed to withdraw the protocol reserve address flashloanTreasury; // a treasury to hold excess flashloan fee + mapping(address => bool) operatorsOk; // allowed to withdraw the protocol reserve } /// @dev Get money market storage From 74f4eba4f0ce80e0ea582b84d15391d07013a541 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Tue, 9 May 2023 14:18:49 +0700 Subject: [PATCH 52/87] feat: init test --- .../smart-treasury/ISmartTreasury.sol | 23 +++ .../smart-treasury/SmartTreasury.sol | 132 +++++++++--------- solidity/tests/smart-treasury/BaseFork.sol | 119 ++++++++++++++++ .../SmartTreasury_Distribute.t.sol | 26 ++++ .../SmartTreasury_SetConfigs.t.sol | 43 ++++++ 5 files changed, 274 insertions(+), 69 deletions(-) create mode 100644 solidity/contracts/smart-treasury/ISmartTreasury.sol create mode 100644 solidity/tests/smart-treasury/BaseFork.sol create mode 100644 solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol create mode 100644 solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol diff --git a/solidity/contracts/smart-treasury/ISmartTreasury.sol b/solidity/contracts/smart-treasury/ISmartTreasury.sol new file mode 100644 index 00000000..aaf6f862 --- /dev/null +++ b/solidity/contracts/smart-treasury/ISmartTreasury.sol @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: BUSL +pragma solidity 0.8.19; + +interface ISmartTreasury { + error SmartTreasury_AmountTooLow(); + error SmartTreasury_PathConfigNotFound(); + error SmartTreasury_Unauthorized(); + + // call to auto split target token to each destination + function distribute(address[] calldata _tokens) external; + + function setAllocs( + uint256 _revenueAlloc, + uint256 _devAlloc, + uint256 _burnAlloc + ) external; + + function setRevenueToken(address _revenueToken) external; + + function setWhitelistedCallers(address[] calldata _callers, bool _allow) external; + + function whitelistedCallers(address _caller) external view returns (bool _allow); +} diff --git a/solidity/contracts/smart-treasury/SmartTreasury.sol b/solidity/contracts/smart-treasury/SmartTreasury.sol index 48e1e1ca..c0dfc12b 100644 --- a/solidity/contracts/smart-treasury/SmartTreasury.sol +++ b/solidity/contracts/smart-treasury/SmartTreasury.sol @@ -10,50 +10,33 @@ import { LibSafeToken } from "../money-market/libraries/LibSafeToken.sol"; import { LibConstant } from "solidity/contracts/money-market/libraries/LibConstant.sol"; // ---- Interfaces ---- // -// path reader +import { IUniSwapV3PathReader } from "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol"; import { IPancakeSwapRouterV3 } from "../money-market/interfaces/IPancakeSwapRouterV3.sol"; -import { IERC20 } from "../interfaces/IERC20.sol"; +import { IERC20 } from "../money-market/interfaces/IERC20.sol"; +import { ISmartTreasury } from "./ISmartTreasury.sol"; -interface ISmartTreasury { - error SmartTreasury_AmountTooLow(); - error SmartTreasury_NoBalance(); - error SmartTreasury_PathConfigNotFound(); - error SmartTreasury_Unauthorized(); - - // call to auto split target token to each destination - function distribute(address calldata _tokens) external; - - function setAllocs( - uint256 _revenueAlloc, - uint256 _devAlloc, - uint256 _burnAlloc - ) external; - - function setWhitelistedCallers(address[] calldata _callers, bool _allow) external; -} - -// whitelist (can be both Eoa and contract) -// this contract hold treasury contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { using LibSafeToken for IERC20; address public revenueTreasury; address public devTreasury; address public burnTreasury; + address public revenueToken; mapping(address => bool) public whitelistedCallers; - uint16 public revenueAlloc; - uint16 public devAlloc; - uint16 public burnAlloc; + uint256 public revenueAlloc; + uint256 public devAlloc; + uint256 public burnAlloc; + uint256 public totalAlloc; - address internal constant BUSD = 0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56; - IPancakeSwapRouterV3 internal constant PCS_V3_ROUTER = IPancakeSwapRouterV3(address(1)); - // IUniSwapV3PathReader internal immutable pathReader; + IPancakeSwapRouterV3 public PCS_V3_ROUTER; + IUniSwapV3PathReader public pathReader; event LogDistribute(address _token, uint256 _amount); - event LogSetWhitelistedCaller(address indexed _caller, bool _allow); event LogSetAllocs(uint256 _revenueAlloc, uint256 _devAlloc, uint256 _burnAlloc, uint256 totalAlloc); + event LogSetRevenueToken(address _revenueToken); + event LogSetWhitelistedCaller(address indexed _caller, bool _allow); modifier onlyWhitelisted() { if (!whitelistedCallers[msg.sender]) { @@ -62,18 +45,19 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { _; } - // target 1 address First portion is to swapped token to “BUSD” and send to RevenueTreasury from AF1.0 - // target 2 address Second portion is to transfer token to dev treasury address (0x08B5A95cb94f926a8B620E87eE92e675b35afc7E) - // target 3 address Third portion is to transfer token to "buy back" and burn treasury address (address ?) - constructor() { _disableInitializers(); } - function initialize() external initializer { + function initialize(address _router, address _pathReader) external initializer { OwnableUpgradeable.__Ownable_init(); + PCS_V3_ROUTER = IPancakeSwapRouterV3(_router); + pathReader = IUniSwapV3PathReader(_pathReader); } + /// @notice Distribute the balance in this contract to each treasury + /// @dev This function will be called by external. + /// @param _tokens An array of tokens that want to distribute. function distribute(address[] calldata _tokens) external onlyWhitelisted { uint256 _length = _tokens.length; for (uint256 _i; _i < _length; ) { @@ -85,11 +69,51 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { } } + /// @notice Set allocation points + /// @param _revenueAlloc An allocation point for revenue treasury. + /// @param _devAlloc An allocation point for dev treasury. + /// @param _burnAlloc An allocation point for burn treasury. + function setAllocs( + uint256 _revenueAlloc, + uint256 _devAlloc, + uint256 _burnAlloc + ) external onlyWhitelisted { + totalAlloc = _revenueAlloc + _devAlloc + _burnAlloc; + revenueAlloc = _revenueAlloc; + devAlloc = _devAlloc; + burnAlloc = _burnAlloc; + + emit LogSetAllocs(_revenueAlloc, _devAlloc, _burnAlloc, totalAlloc); + } + + /// @notice Set revenue token + /// @dev Revenue token used for swapping before transfer to revenue treasury. + /// @param _revenueToken An address of destination token. + function setRevenueToken(address _revenueToken) external onlyWhitelisted { + revenueToken = _revenueToken; + emit LogSetRevenueToken(_revenueToken); + } + + /// @notice Set whitelisted callers + /// @param _callers The addresses of the callers that are going to be whitelisted. + /// @param _allow Whether to allow or disallow callers. + function setWhitelistedCallers(address[] calldata _callers, bool _allow) external onlyOwner { + uint256 _length = _callers.length; + for (uint256 _i; _i < _length; ) { + whitelistedCallers[_callers[_i]] = _allow; + emit LogSetWhitelistedCaller(_callers[_i], _allow); + + unchecked { + ++_i; + } + } + } + function _distribute(address _token) internal { uint256 _amount = IERC20(_token).balanceOf(address(this)); (uint256 _revenueAmount, uint256 _devAmount, uint256 _burnAmount) = _splitPayment(_amount); - bytes memory _path = pathReader.paths(_token, BUSD); + bytes memory _path = pathReader.paths(_token, revenueToken); if (_path.length == 0) revert SmartTreasury_PathConfigNotFound(); IPancakeSwapRouterV3.ExactInputParams memory params = IPancakeSwapRouterV3.ExactInputParams({ @@ -112,48 +136,18 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { function _splitPayment(uint256 _amount) internal + view returns ( uint256 _revenueAmount, uint256 _devAmount, uint256 _burnAmount ) { - if (_amount <= LibConstant.MAX_BPS) revert SmartTreasury_AmountTooLow(); - _devAmount = (_amount * devAlloc) / LibConstant.MAX_BPS; - _burnAmount = (_amount * burnAlloc) / LibConstant.MAX_BPS; + _devAmount = (_amount * devAlloc) / totalAlloc; + _burnAmount = (_amount * burnAlloc) / totalAlloc; unchecked { _revenueAmount = _amount - _devAmount - _burnAmount; } - } - - uint256 public totalAlloc; - - function setAllocs( - uint256 _revenueAlloc, - uint256 _devAlloc, - uint256 _burnAlloc - ) external onlyWhitelisted { - totalAlloc = _revenueAlloc + _devAlloc + _burnAlloc; - - revenueAlloc = _revenueAlloc; - devAlloc = _devAlloc; - burnAlloc = _burnAlloc; - - emit LogSetAllocs(_revenueAlloc, _devAlloc, _burnAlloc, totalAlloc); - } - - /// @notice Set whitelisted callers - /// @param _callers The addresses of the callers that are going to be whitelisted. - /// @param _allow Whether to allow or disallow callers. - function setWhitelistedCallers(address[] calldata _callers, bool _allow) external onlyOwner { - uint256 _length = _callers.length; - for (uint256 _i; _i < _length; ) { - whitelistedCallers[_callers[_i]] = _allow; - emit LogSetWhitelistedCaller(_callers[_i], _allow); - - unchecked { - ++_i; - } - } + if (_devAmount == 0 || _burnAmount == 0 || _revenueAmount == 0) revert SmartTreasury_AmountTooLow(); } } diff --git a/solidity/tests/smart-treasury/BaseFork.sol b/solidity/tests/smart-treasury/BaseFork.sol new file mode 100644 index 00000000..d5cafb85 --- /dev/null +++ b/solidity/tests/smart-treasury/BaseFork.sol @@ -0,0 +1,119 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import { DSTest } from "solidity/tests/base/DSTest.sol"; +import "../utils/Components.sol"; +import { ProxyAdminLike } from "../interfaces/ProxyAdminLike.sol"; + +// implementation +import { PCSV3PathReader } from "solidity/contracts/reader/PCSV3PathReader.sol"; + +// interfaces +import { IERC20 } from "solidity/contracts/money-market/interfaces/IERC20.sol"; +import { IPancakeSwapRouterV3 } from "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol"; +import { ISmartTreasury } from "solidity/contracts/smart-treasury/ISmartTreasury.sol"; + +contract BaseFork is DSTest, StdUtils, StdAssertions, StdCheats { + using stdStorage for StdStorage; + + VM internal constant vm = VM(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D); + + ProxyAdminLike internal proxyAdmin; + + // Users + address constant DEPLOYER = 0xC44f82b07Ab3E691F826951a6E335E1bC1bB0B51; + address ALICE = makeAddr("ALICE"); + address BOB = makeAddr("BOB"); + address CHARLIE = makeAddr("CHARLIE"); + address EVE = makeAddr("EVE"); + + // Treasury + address REVENUE_TREASURY = makeAddr("REVENUE_TREASURY"); + address DEV_TREASURY = makeAddr("DEV_TREASURY"); + address BURN_TREASURY = makeAddr("BURN_TREASURY"); + + // Token + IERC20 public constant wbnb = IERC20(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c); + IERC20 public constant usdt = IERC20(0x55d398326f99059fF775485246999027B3197955); + IERC20 public constant cake = IERC20(0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82); + + IPancakeSwapRouterV3 internal router = IPancakeSwapRouterV3(0x1b81D678ffb9C0263b24A97847620C99d213eB14); + PCSV3PathReader internal pathReader; + ISmartTreasury internal smartTreasury; + + function setUp() public virtual { + vm.createSelectFork("bsc_mainnet", 27_515_914); + + pathReader = new PCSV3PathReader(); + vm.startPrank(DEPLOYER); + _setupProxyAdmin(); + smartTreasury = deploySmartTreasury(address(router), address(pathReader)); + vm.stopPrank(); + + vm.label(address(wbnb), "WBNB"); + vm.label(address(usdt), "USDT"); + vm.label(address(cake), "CAKE"); + + vm.label(ALICE, "ALICE"); + vm.label(BOB, "BOB"); + vm.label(CHARLIE, "CHARLIE"); + vm.label(EVE, "EVE"); + + vm.label(REVENUE_TREASURY, "REVENUE_TREASURY"); + vm.label(DEV_TREASURY, "DEV_TREASURY"); + vm.label(BURN_TREASURY, "BURN_TREASURY"); + + vm.label(address(router), "PancakeSwapRouterV3"); + vm.label(address(smartTreasury), "SmartTreasury"); + } + + function deployUpgradeable(string memory contractName, bytes memory initializer) internal returns (address) { + // Deploy implementation contract + bytes memory logicBytecode = abi.encodePacked( + vm.getCode(string(abi.encodePacked("./out/", contractName, ".sol/", contractName, ".json"))) + ); + address logic; + assembly { + logic := create(0, add(logicBytecode, 0x20), mload(logicBytecode)) + } + + // Deploy proxy + bytes memory proxyBytecode = abi.encodePacked( + vm.getCode("./out/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json") + ); + proxyBytecode = abi.encodePacked(proxyBytecode, abi.encode(logic, address(proxyAdmin), initializer)); + + address proxy; + assembly { + proxy := create(0, add(proxyBytecode, 0x20), mload(proxyBytecode)) + if iszero(extcodesize(proxy)) { + revert(0, 0) + } + } + + return proxy; + } + + function _setupProxyAdmin() internal returns (ProxyAdminLike) { + bytes memory _bytecode = abi.encodePacked(vm.getCode("./out/ProxyAdmin.sol/ProxyAdmin.json")); + address _address; + assembly { + _address := create(0, add(_bytecode, 0x20), mload(_bytecode)) + } + return ProxyAdminLike(address(_address)); + } + + function deploySmartTreasury(address _router, address _pathReader) internal returns (ISmartTreasury) { + return + ISmartTreasury( + deployUpgradeable( + "SmartTreasury", + abi.encodeWithSelector(bytes4(keccak256("initialize(address,address)")), _router, _pathReader) + ) + ); + } + + function normalizeEther(uint256 _ether, uint256 _decimal) internal pure returns (uint256 _normalizedEther) { + _normalizedEther = _ether / 10**(18 - _decimal); + } +} diff --git a/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol b/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol new file mode 100644 index 00000000..6a46d437 --- /dev/null +++ b/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol @@ -0,0 +1,26 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import { BaseFork } from "./BaseFork.sol"; + +contract SmartTreasury_Distribute is BaseFork { + function setUp() public override { + super.setUp(); + + // setup whitelisted caller + // setup revenue token + // setup allocation point + } + + function testCorrectness_CallDistribute_ShouldWork() external { + // rev treasury + // dev treasury + // burn treasury + } + + function testRevert_UnauthorizedCallDistribute_ShouldRevert() external {} + + function testRevert_DistributeWithNonExistingRevenueToken_ShouldRevert() external {} + + function testRevert_DistributeWhenAmountTooLow_ShouldRevert() external {} +} diff --git a/solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol b/solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol new file mode 100644 index 00000000..7fdc843d --- /dev/null +++ b/solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import { BaseFork, console } from "./BaseFork.sol"; + +contract SmartTreasury_SetConfigs is BaseFork { + function setUp() public override { + super.setUp(); + } + + function testCorrectness_SetWhitelist_ShouldWork() external { + address[] memory _callers = new address[](2); + _callers[0] = ALICE; + _callers[1] = BOB; + vm.prank(DEPLOYER); + smartTreasury.setWhitelistedCallers(_callers, true); + + assertEq(smartTreasury.whitelistedCallers(ALICE), true); + assertEq(smartTreasury.whitelistedCallers(BOB), true); + } + + function testRevert_NonOwnerSetWhitelist_ShouldRevert() external {} + + // test set whitelist + // - by deployer + // - by unauthorized user + + function testCorrectness_SetRevenueToken_ShouldWork() external {} + + function testRevert_UnauthorizedCallerSetRevenueToken_ShouldRevert() external {} + + // test correctness revenue token + // - by whitelisted user + // - by unauthorized user + + function testCorrectness_SetAlloc_ShouldWork() external {} + + function testRevert_UnauthorizedCallerSetAlloc_ShouldRevert() external {} + + // test correctness allocation point + // - by whitelisted user + // - by unauthorized user +} From ff7040e81ea87193d162a607dcda0057257a1b2b Mon Sep 17 00:00:00 2001 From: jr-alpaca Date: Tue, 9 May 2023 15:36:11 +0700 Subject: [PATCH 53/87] chore: compile typechain --- .gitignore | 2 +- hardhat.config.ts | 46 +- package.json | 19 +- .../upgradable/AdminUpgradeabilityProxy.sol | 485 ------------- solidity/contracts/upgradable/ProxyAdmin.sol | 649 ------------------ tsconfig.cjs.json | 22 +- tsconfig.json | 22 +- yarn.lock | 536 ++++++++++++++- 8 files changed, 613 insertions(+), 1168 deletions(-) delete mode 100644 solidity/contracts/upgradable/AdminUpgradeabilityProxy.sol delete mode 100644 solidity/contracts/upgradable/ProxyAdmin.sol diff --git a/.gitignore b/.gitignore index 753a889b..67cbd11e 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,7 @@ cache/ node_modules/ typechain/ -yarn-error.log/ +yarn-error.log broadcast/ diff --git a/hardhat.config.ts b/hardhat.config.ts index f4f2afee..0ce6c019 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -1,32 +1,42 @@ +import fs from "fs"; +import { HardhatUserConfig } from "hardhat/config"; import { config as dotEnvConfig } from "dotenv"; dotEnvConfig(); import "@openzeppelin/hardhat-upgrades"; import "@nomiclabs/hardhat-ethers"; import "@typechain/hardhat"; +import "hardhat-deploy"; + +function getRemappings() { + return fs + .readFileSync("remappings.txt", "utf8") + .split("\n") + .filter(Boolean) + .map((line) => line.trim().split("=")); +} module.exports = { defaultNetwork: "hardhat", networks: { - // rinkeby: { - // url: process.env.RINKEBY_RPC, - // accounts: - // process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [], - // }, + mainnet: { + chainId: 56, + url: process.env.BSC_RPC_URL, + accounts: process.env.DEPLOYER_PRIVATE_KEY !== undefined ? [process.env.DEPLOYER_PRIVATE_KEY] : [], + }, }, solidity: { - version: "0.8.13", + version: "0.8.19", settings: { optimizer: { enabled: true, - runs: 200, + runs: 1, }, - evmVersion: "istanbul", }, }, paths: { - sources: "./contracts", - tests: "./test", + sources: "./solidity/contracts", + tests: "./tests", cache: "./cache", artifacts: "./artifacts", }, @@ -34,7 +44,19 @@ module.exports = { outDir: "./typechain", target: process.env.TYPECHAIN_TARGET || "ethers-v5", }, - mocha: { - timeout: 100000, + // This fully resolves paths for imports in the ./lib directory for Hardhat + preprocess: { + eachLine: (hre: any) => ({ + transform: (line: string) => { + if (line.match(/^\s*import /i)) { + getRemappings().forEach(([find, replace]) => { + if (line.match(find)) { + line = line.replace(find, replace); + } + }); + } + return line; + }, + }), }, }; diff --git a/package.json b/package.json index 61d56e90..c7806045 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,9 @@ { "name": "@alpaca-finance/alpaca-money-market", "version": "0.0.1", - "main": "index.js", "license": "MIT", "scripts": { - "compile": "hardhat compile && yarn build", + "compile": "hardhat typechain --config hardhat.config.ts", "build:cjs": "tsc -p tsconfig.cjs.json", "build": "yarn run build:cjs", "exec:bsc_mainnet:proxy-admin:deploy": "forge script script/deployments/ProxyAdmin/deploy/ProxyAdmin.s.sol --rpc-url bsc_mainnet --broadcast --slow", @@ -57,6 +56,14 @@ "exec:bsc_mainnet:double-slope-model2:deploy": "forge script script/deployments/InterestModels/deploy/MMDoubleSlopeModel2.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:double-slope-model3:deploy": "forge script script/deployments/InterestModels/deploy/MMDoubleSlopeModel3.s.sol --rpc-url bsc_mainnet --broadcast --slow" }, + "devDependencies": { + "@typechain/ethers-v5": "^10.0.0", + "@typechain/hardhat": "^5.0.0", + "@types/mocha": "^9.1.0", + "ts-node": "^10.7.0", + "typescript": "^4.6.2", + "typechain": "^8.0.0" + }, "dependencies": { "@nomiclabs/hardhat-ethers": "^2.0.5", "@openzeppelin/hardhat-upgrades": "^1.16.1", @@ -65,15 +72,9 @@ "dotenv": "^16.0.0", "ethers": "^5.6.1", "hardhat": "^2.9.1", + "hardhat-deploy": "^0.11.10", "prettier": "^2.6.0", "prettier-plugin-solidity": "^1.0.0-beta.19", "commander": "^9.2.0" - }, - "devDependencies": { - "@typechain/hardhat": "^5.0.0", - "@types/mocha": "^9.1.0", - "ts-node": "^10.7.0", - "typescript": "^4.6.2", - "typechain": "^8.0.0" } } diff --git a/solidity/contracts/upgradable/AdminUpgradeabilityProxy.sol b/solidity/contracts/upgradable/AdminUpgradeabilityProxy.sol deleted file mode 100644 index cc7afe63..00000000 --- a/solidity/contracts/upgradable/AdminUpgradeabilityProxy.sol +++ /dev/null @@ -1,485 +0,0 @@ -// SPDX-License-Identifier: MIT -// File: MasterChef/contracts-proxy/Proxy.sol - -pragma solidity ^0.6.0; - -/** - * @title Proxy - * @dev Implements delegation of calls to other contracts, with proper - * forwarding of return values and bubbling of failures. - * It defines a fallback function that delegates all calls to the address - * returned by the abstract _implementation() internal function. - */ -abstract contract Proxy { - /** - * @dev Fallback function. - * Implemented entirely in `_fallback`. - */ - fallback() external payable { - _fallback(); - } - - /** - * @dev Receive function. - * Implemented entirely in `_fallback`. - */ - receive() external payable { - _fallback(); - } - - /** - * @return The Address of the implementation. - */ - function _implementation() internal view virtual returns (address); - - /** - * @dev Delegates execution to an implementation contract. - * This is a low level function that doesn't return to its internal call site. - * It will return to the external caller whatever the implementation returns. - * @param implementation Address to delegate. - */ - function _delegate(address implementation) internal { - assembly { - // Copy msg.data. We take full control of memory in this inline assembly - // block because it will not return to Solidity code. We overwrite the - // Solidity scratch pad at memory position 0. - calldatacopy(0, 0, calldatasize()) - - // Call the implementation. - // out and outsize are 0 because we don't know the size yet. - let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0) - - // Copy the returned data. - returndatacopy(0, 0, returndatasize()) - - switch result - // delegatecall returns 0 on error. - case 0 { - revert(0, returndatasize()) - } - default { - return(0, returndatasize()) - } - } - } - - /** - * @dev Function that is run as the first thing in the fallback function. - * Can be redefined in derived contracts to add functionality. - * Redefinitions must call super._willFallback(). - */ - function _willFallback() internal virtual {} - - /** - * @dev fallback implementation. - * Extracted to enable manual triggering. - */ - function _fallback() internal { - _willFallback(); - _delegate(_implementation()); - } -} - -// File: @openzeppelin/contracts/utils/Address.sol - -pragma solidity >=0.6.2 <0.8.0; - -/** - * @dev Collection of functions related to the address type - */ -library Address { - /** - * @dev Returns true if `account` is a contract. - * - * [IMPORTANT] - * ==== - * It is unsafe to assume that an address for which this function returns - * false is an externally-owned account (EOA) and not a contract. - * - * Among others, `isContract` will return false for the following - * types of addresses: - * - * - an externally-owned account - * - a contract in construction - * - an address where a contract will be created - * - an address where a contract lived, but was destroyed - * ==== - */ - function isContract(address account) internal view returns (bool) { - // This method relies on extcodesize, which returns 0 for contracts in - // construction, since the code is only stored at the end of the - // constructor execution. - - uint256 size; - // solhint-disable-next-line no-inline-assembly - assembly { - size := extcodesize(account) - } - return size > 0; - } - - /** - * @dev Replacement for Solidity's `transfer`: sends `amount` wei to - * `recipient`, forwarding all available gas and reverting on errors. - * - * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost - * of certain opcodes, possibly making contracts go over the 2300 gas limit - * imposed by `transfer`, making them unable to receive funds via - * `transfer`. {sendValue} removes this limitation. - * - * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. - * - * IMPORTANT: because control is transferred to `recipient`, care must be - * taken to not create reentrancy vulnerabilities. Consider using - * {ReentrancyGuard} or the - * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. - */ - function sendValue(address payable recipient, uint256 amount) internal { - require(address(this).balance >= amount, "Address: insufficient balance"); - - // solhint-disable-next-line avoid-low-level-calls, avoid-call-value - (bool success, ) = recipient.call{ value: amount }(""); - require(success, "Address: unable to send value, recipient may have reverted"); - } - - /** - * @dev Performs a Solidity function call using a low level `call`. A - * plain`call` is an unsafe replacement for a function call: use this - * function instead. - * - * If `target` reverts with a revert reason, it is bubbled up by this - * function (like regular Solidity function calls). - * - * Returns the raw returned data. To convert to the expected return value, - * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. - * - * Requirements: - * - * - `target` must be a contract. - * - calling `target` with `data` must not revert. - * - * _Available since v3.1._ - */ - function functionCall(address target, bytes memory data) internal returns (bytes memory) { - return functionCall(target, data, "Address: low-level call failed"); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with - * `errorMessage` as a fallback revert reason when `target` reverts. - * - * _Available since v3.1._ - */ - function functionCall( - address target, - bytes memory data, - string memory errorMessage - ) internal returns (bytes memory) { - return functionCallWithValue(target, data, 0, errorMessage); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], - * but also transferring `value` wei to `target`. - * - * Requirements: - * - * - the calling contract must have an ETH balance of at least `value`. - * - the called Solidity function must be `payable`. - * - * _Available since v3.1._ - */ - function functionCallWithValue( - address target, - bytes memory data, - uint256 value - ) internal returns (bytes memory) { - return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); - } - - /** - * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but - * with `errorMessage` as a fallback revert reason when `target` reverts. - * - * _Available since v3.1._ - */ - function functionCallWithValue( - address target, - bytes memory data, - uint256 value, - string memory errorMessage - ) internal returns (bytes memory) { - require(address(this).balance >= value, "Address: insufficient balance for call"); - require(isContract(target), "Address: call to non-contract"); - - // solhint-disable-next-line avoid-low-level-calls - (bool success, bytes memory returndata) = target.call{ value: value }(data); - return _verifyCallResult(success, returndata, errorMessage); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], - * but performing a static call. - * - * _Available since v3.3._ - */ - function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { - return functionStaticCall(target, data, "Address: low-level static call failed"); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], - * but performing a static call. - * - * _Available since v3.3._ - */ - function functionStaticCall( - address target, - bytes memory data, - string memory errorMessage - ) internal view returns (bytes memory) { - require(isContract(target), "Address: static call to non-contract"); - - // solhint-disable-next-line avoid-low-level-calls - (bool success, bytes memory returndata) = target.staticcall(data); - return _verifyCallResult(success, returndata, errorMessage); - } - - function _verifyCallResult( - bool success, - bytes memory returndata, - string memory errorMessage - ) private pure returns (bytes memory) { - if (success) { - return returndata; - } else { - // Look for revert reason and bubble it up if present - if (returndata.length > 0) { - // The easiest way to bubble the revert reason is using memory via assembly - - // solhint-disable-next-line no-inline-assembly - assembly { - let returndata_size := mload(returndata) - revert(add(32, returndata), returndata_size) - } - } else { - revert(errorMessage); - } - } - } -} - -// File: MasterChef/contracts-proxy/UpgradeabilityProxy.sol - -pragma solidity ^0.6.0; - -/** - * @title UpgradeabilityProxy - * @dev This contract implements a proxy that allows to change the - * implementation address to which it will delegate. - * Such a change is called an implementation upgrade. - */ -contract UpgradeabilityProxy is Proxy { - /** - * @dev Contract constructor. - * @param _logic Address of the initial implementation. - * @param _data Data to send as msg.data to the implementation to initialize the proxied contract. - * It should include the signature and the parameters of the function to be called, as described in - * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. - * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. - */ - constructor(address _logic, bytes memory _data) public payable { - assert(IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1)); - _setImplementation(_logic); - if (_data.length > 0) { - (bool success, ) = _logic.delegatecall(_data); - require(success); - } - } - - /** - * @dev Emitted when the implementation is upgraded. - * @param implementation Address of the new implementation. - */ - event Upgraded(address indexed implementation); - - /** - * @dev Storage slot with the address of the current implementation. - * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is - * validated in the constructor. - */ - bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; - - /** - * @dev Returns the current implementation. - * @return impl Address of the current implementation - */ - function _implementation() internal view override returns (address impl) { - bytes32 slot = IMPLEMENTATION_SLOT; - assembly { - impl := sload(slot) - } - } - - /** - * @dev Upgrades the proxy to a new implementation. - * @param newImplementation Address of the new implementation. - */ - function _upgradeTo(address newImplementation) internal { - _setImplementation(newImplementation); - emit Upgraded(newImplementation); - } - - /** - * @dev Sets the implementation address of the proxy. - * @param newImplementation Address of the new implementation. - */ - function _setImplementation(address newImplementation) internal { - require(Address.isContract(newImplementation), "Cannot set a proxy implementation to a non-contract address"); - - bytes32 slot = IMPLEMENTATION_SLOT; - - assembly { - sstore(slot, newImplementation) - } - } -} - -// File: MasterChef/contracts-proxy/AdminUpgradeabilityProxy.sol - -pragma solidity ^0.6.0; - -/** - * @title AdminUpgradeabilityProxy - * @dev This contract combines an upgradeability proxy with an authorization - * mechanism for administrative tasks. - * All external functions in this contract must be guarded by the - * `ifAdmin` modifier. See ethereum/solidity#3864 for a Solidity - * feature proposal that would enable this to be done automatically. - */ -contract AdminUpgradeabilityProxy is UpgradeabilityProxy { - /** - * Contract constructor. - * @param _logic address of the initial implementation. - * @param _admin Address of the proxy administrator. - * @param _data Data to send as msg.data to the implementation to initialize the proxied contract. - * It should include the signature and the parameters of the function to be called, as described in - * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. - * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. - */ - constructor( - address _logic, - address _admin, - bytes memory _data - ) public payable UpgradeabilityProxy(_logic, _data) { - assert(ADMIN_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1)); - _setAdmin(_admin); - } - - /** - * @dev Emitted when the administration has been transferred. - * @param previousAdmin Address of the previous admin. - * @param newAdmin Address of the new admin. - */ - event AdminChanged(address previousAdmin, address newAdmin); - - /** - * @dev Storage slot with the admin of the contract. - * This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1, and is - * validated in the constructor. - */ - - bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103; - - /** - * @dev Modifier to check whether the `msg.sender` is the admin. - * If it is, it will run the function. Otherwise, it will delegate the call - * to the implementation. - */ - modifier ifAdmin() { - if (msg.sender == _admin()) { - _; - } else { - _fallback(); - } - } - - /** - * @return The address of the proxy admin. - */ - function admin() external ifAdmin returns (address) { - return _admin(); - } - - /** - * @return The address of the implementation. - */ - function implementation() external ifAdmin returns (address) { - return _implementation(); - } - - /** - * @dev Changes the admin of the proxy. - * Only the current admin can call this function. - * @param newAdmin Address to transfer proxy administration to. - */ - function changeAdmin(address newAdmin) external ifAdmin { - require(newAdmin != address(0), "Cannot change the admin of a proxy to the zero address"); - emit AdminChanged(_admin(), newAdmin); - _setAdmin(newAdmin); - } - - /** - * @dev Upgrade the backing implementation of the proxy. - * Only the admin can call this function. - * @param newImplementation Address of the new implementation. - */ - function upgradeTo(address newImplementation) external ifAdmin { - _upgradeTo(newImplementation); - } - - /** - * @dev Upgrade the backing implementation of the proxy and call a function - * on the new implementation. - * This is useful to initialize the proxied contract. - * @param newImplementation Address of the new implementation. - * @param data Data to send as msg.data in the low level call. - * It should include the signature and the parameters of the function to be called, as described in - * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. - */ - function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin { - _upgradeTo(newImplementation); - (bool success, ) = newImplementation.delegatecall(data); - require(success); - } - - /** - * @return adm The admin slot. - */ - function _admin() internal view returns (address adm) { - bytes32 slot = ADMIN_SLOT; - assembly { - adm := sload(slot) - } - } - - /** - * @dev Sets the address of the proxy admin. - * @param newAdmin Address of the new proxy admin. - */ - function _setAdmin(address newAdmin) internal { - bytes32 slot = ADMIN_SLOT; - - assembly { - sstore(slot, newAdmin) - } - } - - /** - * @dev Only fall back when the sender is not the admin. - */ - function _willFallback() internal virtual override { - require(msg.sender != _admin(), "Cannot call fallback function from the proxy admin"); - super._willFallback(); - } -} diff --git a/solidity/contracts/upgradable/ProxyAdmin.sol b/solidity/contracts/upgradable/ProxyAdmin.sol deleted file mode 100644 index b5c543f9..00000000 --- a/solidity/contracts/upgradable/ProxyAdmin.sol +++ /dev/null @@ -1,649 +0,0 @@ -// SPDX-License-Identifier: MIT -// File: @openzeppelin/contracts/GSN/Context.sol - -pragma solidity >=0.6.0 <0.8.0; - -/* - * @dev Provides information about the current execution context, including the - * sender of the transaction and its data. While these are generally available - * via msg.sender and msg.data, they should not be accessed in such a direct - * manner, since when dealing with GSN meta-transactions the account sending and - * paying for execution may not be the actual sender (as far as an application - * is concerned). - * - * This contract is only required for intermediate, library-like contracts. - */ -abstract contract Context { - function _msgSender() internal view virtual returns (address payable) { - return msg.sender; - } - - function _msgData() internal view virtual returns (bytes memory) { - this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 - return msg.data; - } -} - -// File: @openzeppelin/contracts/access/Ownable.sol - -pragma solidity >=0.6.0 <0.8.0; - -/** - * @dev Contract module which provides a basic access control mechanism, where - * there is an account (an owner) that can be granted exclusive access to - * specific functions. - * - * By default, the owner account will be the one that deploys the contract. This - * can later be changed with {transferOwnership}. - * - * This module is used through inheritance. It will make available the modifier - * `onlyOwner`, which can be applied to your functions to restrict their use to - * the owner. - */ -abstract contract Ownable is Context { - address private _owner; - - event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); - - /** - * @dev Initializes the contract setting the deployer as the initial owner. - */ - constructor() internal { - address msgSender = _msgSender(); - _owner = msgSender; - emit OwnershipTransferred(address(0), msgSender); - } - - /** - * @dev Returns the address of the current owner. - */ - function owner() public view returns (address) { - return _owner; - } - - /** - * @dev Throws if called by any account other than the owner. - */ - modifier onlyOwner() { - require(_owner == _msgSender(), "Ownable: caller is not the owner"); - _; - } - - /** - * @dev Leaves the contract without owner. It will not be possible to call - * `onlyOwner` functions anymore. Can only be called by the current owner. - * - * NOTE: Renouncing ownership will leave the contract without an owner, - * thereby removing any functionality that is only available to the owner. - */ - function renounceOwnership() public virtual onlyOwner { - emit OwnershipTransferred(_owner, address(0)); - _owner = address(0); - } - - /** - * @dev Transfers ownership of the contract to a new account (`newOwner`). - * Can only be called by the current owner. - */ - function transferOwnership(address newOwner) public virtual onlyOwner { - require(newOwner != address(0), "Ownable: new owner is the zero address"); - emit OwnershipTransferred(_owner, newOwner); - _owner = newOwner; - } -} - -// File: MasterChef/contracts-proxy/Proxy.sol - -pragma solidity ^0.6.0; - -/** - * @title Proxy - * @dev Implements delegation of calls to other contracts, with proper - * forwarding of return values and bubbling of failures. - * It defines a fallback function that delegates all calls to the address - * returned by the abstract _implementation() internal function. - */ -abstract contract Proxy { - /** - * @dev Fallback function. - * Implemented entirely in `_fallback`. - */ - fallback() external payable { - _fallback(); - } - - /** - * @dev Receive function. - * Implemented entirely in `_fallback`. - */ - receive() external payable { - _fallback(); - } - - /** - * @return The Address of the implementation. - */ - function _implementation() internal view virtual returns (address); - - /** - * @dev Delegates execution to an implementation contract. - * This is a low level function that doesn't return to its internal call site. - * It will return to the external caller whatever the implementation returns. - * @param implementation Address to delegate. - */ - function _delegate(address implementation) internal { - assembly { - // Copy msg.data. We take full control of memory in this inline assembly - // block because it will not return to Solidity code. We overwrite the - // Solidity scratch pad at memory position 0. - calldatacopy(0, 0, calldatasize()) - - // Call the implementation. - // out and outsize are 0 because we don't know the size yet. - let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0) - - // Copy the returned data. - returndatacopy(0, 0, returndatasize()) - - switch result - // delegatecall returns 0 on error. - case 0 { - revert(0, returndatasize()) - } - default { - return(0, returndatasize()) - } - } - } - - /** - * @dev Function that is run as the first thing in the fallback function. - * Can be redefined in derived contracts to add functionality. - * Redefinitions must call super._willFallback(). - */ - function _willFallback() internal virtual {} - - /** - * @dev fallback implementation. - * Extracted to enable manual triggering. - */ - function _fallback() internal { - _willFallback(); - _delegate(_implementation()); - } -} - -// File: @openzeppelin/contracts/utils/Address.sol - -pragma solidity >=0.6.2 <0.8.0; - -/** - * @dev Collection of functions related to the address type - */ -library Address { - /** - * @dev Returns true if `account` is a contract. - * - * [IMPORTANT] - * ==== - * It is unsafe to assume that an address for which this function returns - * false is an externally-owned account (EOA) and not a contract. - * - * Among others, `isContract` will return false for the following - * types of addresses: - * - * - an externally-owned account - * - a contract in construction - * - an address where a contract will be created - * - an address where a contract lived, but was destroyed - * ==== - */ - function isContract(address account) internal view returns (bool) { - // This method relies on extcodesize, which returns 0 for contracts in - // construction, since the code is only stored at the end of the - // constructor execution. - - uint256 size; - // solhint-disable-next-line no-inline-assembly - assembly { - size := extcodesize(account) - } - return size > 0; - } - - /** - * @dev Replacement for Solidity's `transfer`: sends `amount` wei to - * `recipient`, forwarding all available gas and reverting on errors. - * - * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost - * of certain opcodes, possibly making contracts go over the 2300 gas limit - * imposed by `transfer`, making them unable to receive funds via - * `transfer`. {sendValue} removes this limitation. - * - * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. - * - * IMPORTANT: because control is transferred to `recipient`, care must be - * taken to not create reentrancy vulnerabilities. Consider using - * {ReentrancyGuard} or the - * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. - */ - function sendValue(address payable recipient, uint256 amount) internal { - require(address(this).balance >= amount, "Address: insufficient balance"); - - // solhint-disable-next-line avoid-low-level-calls, avoid-call-value - (bool success, ) = recipient.call{ value: amount }(""); - require(success, "Address: unable to send value, recipient may have reverted"); - } - - /** - * @dev Performs a Solidity function call using a low level `call`. A - * plain`call` is an unsafe replacement for a function call: use this - * function instead. - * - * If `target` reverts with a revert reason, it is bubbled up by this - * function (like regular Solidity function calls). - * - * Returns the raw returned data. To convert to the expected return value, - * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. - * - * Requirements: - * - * - `target` must be a contract. - * - calling `target` with `data` must not revert. - * - * _Available since v3.1._ - */ - function functionCall(address target, bytes memory data) internal returns (bytes memory) { - return functionCall(target, data, "Address: low-level call failed"); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with - * `errorMessage` as a fallback revert reason when `target` reverts. - * - * _Available since v3.1._ - */ - function functionCall( - address target, - bytes memory data, - string memory errorMessage - ) internal returns (bytes memory) { - return functionCallWithValue(target, data, 0, errorMessage); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], - * but also transferring `value` wei to `target`. - * - * Requirements: - * - * - the calling contract must have an ETH balance of at least `value`. - * - the called Solidity function must be `payable`. - * - * _Available since v3.1._ - */ - function functionCallWithValue( - address target, - bytes memory data, - uint256 value - ) internal returns (bytes memory) { - return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); - } - - /** - * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but - * with `errorMessage` as a fallback revert reason when `target` reverts. - * - * _Available since v3.1._ - */ - function functionCallWithValue( - address target, - bytes memory data, - uint256 value, - string memory errorMessage - ) internal returns (bytes memory) { - require(address(this).balance >= value, "Address: insufficient balance for call"); - require(isContract(target), "Address: call to non-contract"); - - // solhint-disable-next-line avoid-low-level-calls - (bool success, bytes memory returndata) = target.call{ value: value }(data); - return _verifyCallResult(success, returndata, errorMessage); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], - * but performing a static call. - * - * _Available since v3.3._ - */ - function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { - return functionStaticCall(target, data, "Address: low-level static call failed"); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], - * but performing a static call. - * - * _Available since v3.3._ - */ - function functionStaticCall( - address target, - bytes memory data, - string memory errorMessage - ) internal view returns (bytes memory) { - require(isContract(target), "Address: static call to non-contract"); - - // solhint-disable-next-line avoid-low-level-calls - (bool success, bytes memory returndata) = target.staticcall(data); - return _verifyCallResult(success, returndata, errorMessage); - } - - function _verifyCallResult( - bool success, - bytes memory returndata, - string memory errorMessage - ) private pure returns (bytes memory) { - if (success) { - return returndata; - } else { - // Look for revert reason and bubble it up if present - if (returndata.length > 0) { - // The easiest way to bubble the revert reason is using memory via assembly - - // solhint-disable-next-line no-inline-assembly - assembly { - let returndata_size := mload(returndata) - revert(add(32, returndata), returndata_size) - } - } else { - revert(errorMessage); - } - } - } -} - -// File: MasterChef/contracts-proxy/UpgradeabilityProxy.sol - -pragma solidity ^0.6.0; - -/** - * @title UpgradeabilityProxy - * @dev This contract implements a proxy that allows to change the - * implementation address to which it will delegate. - * Such a change is called an implementation upgrade. - */ -contract UpgradeabilityProxy is Proxy { - /** - * @dev Contract constructor. - * @param _logic Address of the initial implementation. - * @param _data Data to send as msg.data to the implementation to initialize the proxied contract. - * It should include the signature and the parameters of the function to be called, as described in - * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. - * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. - */ - constructor(address _logic, bytes memory _data) public payable { - assert(IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1)); - _setImplementation(_logic); - if (_data.length > 0) { - (bool success, ) = _logic.delegatecall(_data); - require(success); - } - } - - /** - * @dev Emitted when the implementation is upgraded. - * @param implementation Address of the new implementation. - */ - event Upgraded(address indexed implementation); - - /** - * @dev Storage slot with the address of the current implementation. - * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is - * validated in the constructor. - */ - bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; - - /** - * @dev Returns the current implementation. - * @return impl Address of the current implementation - */ - function _implementation() internal view override returns (address impl) { - bytes32 slot = IMPLEMENTATION_SLOT; - assembly { - impl := sload(slot) - } - } - - /** - * @dev Upgrades the proxy to a new implementation. - * @param newImplementation Address of the new implementation. - */ - function _upgradeTo(address newImplementation) internal { - _setImplementation(newImplementation); - emit Upgraded(newImplementation); - } - - /** - * @dev Sets the implementation address of the proxy. - * @param newImplementation Address of the new implementation. - */ - function _setImplementation(address newImplementation) internal { - require(Address.isContract(newImplementation), "Cannot set a proxy implementation to a non-contract address"); - - bytes32 slot = IMPLEMENTATION_SLOT; - - assembly { - sstore(slot, newImplementation) - } - } -} - -// File: MasterChef/contracts-proxy/AdminUpgradeabilityProxy.sol - -pragma solidity ^0.6.0; - -/** - * @title AdminUpgradeabilityProxy - * @dev This contract combines an upgradeability proxy with an authorization - * mechanism for administrative tasks. - * All external functions in this contract must be guarded by the - * `ifAdmin` modifier. See ethereum/solidity#3864 for a Solidity - * feature proposal that would enable this to be done automatically. - */ -contract AdminUpgradeabilityProxy is UpgradeabilityProxy { - /** - * Contract constructor. - * @param _logic address of the initial implementation. - * @param _admin Address of the proxy administrator. - * @param _data Data to send as msg.data to the implementation to initialize the proxied contract. - * It should include the signature and the parameters of the function to be called, as described in - * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. - * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. - */ - constructor( - address _logic, - address _admin, - bytes memory _data - ) public payable UpgradeabilityProxy(_logic, _data) { - assert(ADMIN_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1)); - _setAdmin(_admin); - } - - /** - * @dev Emitted when the administration has been transferred. - * @param previousAdmin Address of the previous admin. - * @param newAdmin Address of the new admin. - */ - event AdminChanged(address previousAdmin, address newAdmin); - - /** - * @dev Storage slot with the admin of the contract. - * This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1, and is - * validated in the constructor. - */ - - bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103; - - /** - * @dev Modifier to check whether the `msg.sender` is the admin. - * If it is, it will run the function. Otherwise, it will delegate the call - * to the implementation. - */ - modifier ifAdmin() { - if (msg.sender == _admin()) { - _; - } else { - _fallback(); - } - } - - /** - * @return The address of the proxy admin. - */ - function admin() external ifAdmin returns (address) { - return _admin(); - } - - /** - * @return The address of the implementation. - */ - function implementation() external ifAdmin returns (address) { - return _implementation(); - } - - /** - * @dev Changes the admin of the proxy. - * Only the current admin can call this function. - * @param newAdmin Address to transfer proxy administration to. - */ - function changeAdmin(address newAdmin) external ifAdmin { - require(newAdmin != address(0), "Cannot change the admin of a proxy to the zero address"); - emit AdminChanged(_admin(), newAdmin); - _setAdmin(newAdmin); - } - - /** - * @dev Upgrade the backing implementation of the proxy. - * Only the admin can call this function. - * @param newImplementation Address of the new implementation. - */ - function upgradeTo(address newImplementation) external ifAdmin { - _upgradeTo(newImplementation); - } - - /** - * @dev Upgrade the backing implementation of the proxy and call a function - * on the new implementation. - * This is useful to initialize the proxied contract. - * @param newImplementation Address of the new implementation. - * @param data Data to send as msg.data in the low level call. - * It should include the signature and the parameters of the function to be called, as described in - * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. - */ - function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin { - _upgradeTo(newImplementation); - (bool success, ) = newImplementation.delegatecall(data); - require(success); - } - - /** - * @return adm The admin slot. - */ - function _admin() internal view returns (address adm) { - bytes32 slot = ADMIN_SLOT; - assembly { - adm := sload(slot) - } - } - - /** - * @dev Sets the address of the proxy admin. - * @param newAdmin Address of the new proxy admin. - */ - function _setAdmin(address newAdmin) internal { - bytes32 slot = ADMIN_SLOT; - - assembly { - sstore(slot, newAdmin) - } - } - - /** - * @dev Only fall back when the sender is not the admin. - */ - function _willFallback() internal virtual override { - require(msg.sender != _admin(), "Cannot call fallback function from the proxy admin"); - super._willFallback(); - } -} - -// File: MasterChef/contracts-proxy/ProxyAdmin.sol - -pragma solidity ^0.6.0; - -/** - * @title ProxyAdmin - * @dev This contract is the admin of a proxy, and is in charge - * of upgrading it as well as transferring it to another admin. - */ -contract ProxyAdmin is Ownable { - /** - * @dev Returns the current implementation of a proxy. - * This is needed because only the proxy admin can query it. - * @return The address of the current implementation of the proxy. - */ - function getProxyImplementation(AdminUpgradeabilityProxy proxy) public view returns (address) { - // We need to manually run the static call since the getter cannot be flagged as view - // bytes4(keccak256("implementation()")) == 0x5c60da1b - (bool success, bytes memory returndata) = address(proxy).staticcall(hex"5c60da1b"); - require(success); - return abi.decode(returndata, (address)); - } - - /** - * @dev Returns the admin of a proxy. Only the admin can query it. - * @return The address of the current admin of the proxy. - */ - function getProxyAdmin(AdminUpgradeabilityProxy proxy) public view returns (address) { - // We need to manually run the static call since the getter cannot be flagged as view - // bytes4(keccak256("admin()")) == 0xf851a440 - (bool success, bytes memory returndata) = address(proxy).staticcall(hex"f851a440"); - require(success); - return abi.decode(returndata, (address)); - } - - /** - * @dev Changes the admin of a proxy. - * @param proxy Proxy to change admin. - * @param newAdmin Address to transfer proxy administration to. - */ - function changeProxyAdmin(AdminUpgradeabilityProxy proxy, address newAdmin) public onlyOwner { - proxy.changeAdmin(newAdmin); - } - - /** - * @dev Upgrades a proxy to the newest implementation of a contract. - * @param proxy Proxy to be upgraded. - * @param implementation the address of the Implementation. - */ - function upgrade(AdminUpgradeabilityProxy proxy, address implementation) public onlyOwner { - proxy.upgradeTo(implementation); - } - - /** - * @dev Upgrades a proxy to the newest implementation of a contract and forwards a function call to it. - * This is useful to initialize the proxied contract. - * @param proxy Proxy to be upgraded. - * @param implementation Address of the Implementation. - * @param data Data to send as msg.data in the low level call. - * It should include the signature and the parameters of the function to be called, as described in - * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. - */ - function upgradeAndCall( - AdminUpgradeabilityProxy proxy, - address implementation, - bytes memory data - ) public payable onlyOwner { - proxy.upgradeToAndCall{ value: msg.value }(implementation, data); - } -} diff --git a/tsconfig.cjs.json b/tsconfig.cjs.json index d41c06b2..54b9d4e9 100644 --- a/tsconfig.cjs.json +++ b/tsconfig.cjs.json @@ -10,14 +10,28 @@ "esModuleInterop": true, "resolveJsonModule": true, "moduleResolution": "node", - "lib": ["es6", "es2017", "dom"], - "types": ["@types/node"], - "typeRoots": ["./node_modules/@types", "./types"], + "lib": [ + "es6", + "es2017", + "dom" + ], + "types": [ + "@types/node" + ], + "typeRoots": [ + "./node_modules/@types", + "./types" + ], "outDir": "typechain", "declaration": true }, "include": [ "./typechain/**/*.ts" ], - "exclude": ["node_modules", "build", "cache", "artifacts"] + "exclude": [ + "node_modules", + "build", + "cache", + "artifacts" + ] } \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index a0ab81b7..17676439 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,15 +8,29 @@ "esModuleInterop": true, "resolveJsonModule": true, "module": "commonjs", - "lib": ["es6", "es2017", "dom"], + "lib": [ + "es6", + "es2017", + "dom" + ], "target": "es5", - "types": ["@types/node"], - "typeRoots": ["./node_modules/@types", "./types"], + "types": [ + "@types/node" + ], + "typeRoots": [ + "./node_modules/@types", + "./types" + ], }, "include": [ "**/*.ts" ], - "exclude": ["node_modules", "build", "cache", "artifacts"], + "exclude": [ + "node_modules", + "build", + "cache", + "artifacts" + ], "files": [ "typechain/index.d.ts" ] diff --git a/yarn.lock b/yarn.lock index f901d68c..be0b7b2c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -98,6 +98,21 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.0" +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/abstract-provider@5.6.0", "@ethersproject/abstract-provider@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.6.0.tgz#0c4ac7054650dbd9c476cf5907f588bbb6ef3061" @@ -111,6 +126,19 @@ "@ethersproject/transactions" "^5.6.0" "@ethersproject/web" "^5.6.0" +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + "@ethersproject/abstract-signer@5.6.0", "@ethersproject/abstract-signer@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.6.0.tgz#9cd7ae9211c2b123a3b29bf47aab17d4d016e3e7" @@ -122,6 +150,17 @@ "@ethersproject/logger" "^5.6.0" "@ethersproject/properties" "^5.6.0" +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/address@5.6.0", "@ethersproject/address@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.6.0.tgz#13c49836d73e7885fc148ad633afad729da25012" @@ -133,6 +172,17 @@ "@ethersproject/logger" "^5.6.0" "@ethersproject/rlp" "^5.6.0" +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/base64@5.6.0", "@ethersproject/base64@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.6.0.tgz#a12c4da2a6fb86d88563216b0282308fc15907c9" @@ -140,6 +190,13 @@ dependencies: "@ethersproject/bytes" "^5.6.0" +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/basex@5.6.0", "@ethersproject/basex@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.6.0.tgz#9ea7209bf0a1c3ddc2a90f180c3a7f0d7d2e8a69" @@ -148,6 +205,14 @@ "@ethersproject/bytes" "^5.6.0" "@ethersproject/properties" "^5.6.0" +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/bignumber@5.6.0", "@ethersproject/bignumber@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.6.0.tgz#116c81b075c57fa765a8f3822648cf718a8a0e26" @@ -157,6 +222,15 @@ "@ethersproject/logger" "^5.6.0" bn.js "^4.11.9" +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + "@ethersproject/bytes@5.6.0", "@ethersproject/bytes@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.6.0.tgz#81652f2a0e04533575befadce555213c11d8aa20" @@ -164,6 +238,13 @@ dependencies: "@ethersproject/logger" "^5.6.0" +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + "@ethersproject/constants@5.6.0", "@ethersproject/constants@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.6.0.tgz#55e3eb0918584d3acc0688e9958b0cedef297088" @@ -171,6 +252,13 @@ dependencies: "@ethersproject/bignumber" "^5.6.0" +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/contracts@5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.6.0.tgz#60f2cfc7addd99a865c6c8cfbbcec76297386067" @@ -187,6 +275,22 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/transactions" "^5.6.0" +"@ethersproject/contracts@5.7.0", "@ethersproject/contracts@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/hash@5.6.0", "@ethersproject/hash@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.6.0.tgz#d24446a5263e02492f9808baa99b6e2b4c3429a2" @@ -201,6 +305,21 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.0" +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/hdnode@5.6.0", "@ethersproject/hdnode@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.6.0.tgz#9dcbe8d629bbbcf144f2cae476337fe92d320998" @@ -219,6 +338,24 @@ "@ethersproject/transactions" "^5.6.0" "@ethersproject/wordlists" "^5.6.0" +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + "@ethersproject/json-wallets@5.6.0", "@ethersproject/json-wallets@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.6.0.tgz#4c2fc27f17e36c583e7a252fb938bc46f98891e5" @@ -238,6 +375,25 @@ aes-js "3.0.0" scrypt-js "3.0.1" +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + "@ethersproject/keccak256@5.6.0", "@ethersproject/keccak256@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.6.0.tgz#fea4bb47dbf8f131c2e1774a1cecbfeb9d606459" @@ -246,11 +402,24 @@ "@ethersproject/bytes" "^5.6.0" js-sha3 "0.8.0" +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + "@ethersproject/logger@5.6.0", "@ethersproject/logger@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.6.0.tgz#d7db1bfcc22fd2e4ab574cba0bb6ad779a9a3e7a" integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + "@ethersproject/networks@5.6.0", "@ethersproject/networks@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.0.tgz#486d03fff29b4b6b5414d47a232ded09fe10de5e" @@ -258,6 +427,13 @@ dependencies: "@ethersproject/logger" "^5.6.0" +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2@5.6.0", "@ethersproject/pbkdf2@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.6.0.tgz#04fcc2d7c6bff88393f5b4237d906a192426685a" @@ -266,6 +442,14 @@ "@ethersproject/bytes" "^5.6.0" "@ethersproject/sha2" "^5.6.0" +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/properties@5.6.0", "@ethersproject/properties@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.6.0.tgz#38904651713bc6bdd5bdd1b0a4287ecda920fa04" @@ -273,6 +457,13 @@ dependencies: "@ethersproject/logger" "^5.6.0" +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + "@ethersproject/providers@5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.6.1.tgz#9a05f00ecbac59565bf6907c8d2af8ac33303b48" @@ -298,6 +489,32 @@ bech32 "1.1.4" ws "7.4.6" +"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + "@ethersproject/random@5.6.0", "@ethersproject/random@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.6.0.tgz#1505d1ab6a250e0ee92f436850fa3314b2cb5ae6" @@ -306,6 +523,14 @@ "@ethersproject/bytes" "^5.6.0" "@ethersproject/logger" "^5.6.0" +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp@5.6.0", "@ethersproject/rlp@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.6.0.tgz#55a7be01c6f5e64d6e6e7edb6061aa120962a717" @@ -314,6 +539,14 @@ "@ethersproject/bytes" "^5.6.0" "@ethersproject/logger" "^5.6.0" +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2@5.6.0", "@ethersproject/sha2@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.6.0.tgz#364c4c11cc753bda36f31f001628706ebadb64d9" @@ -323,6 +556,15 @@ "@ethersproject/logger" "^5.6.0" hash.js "1.1.7" +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + "@ethersproject/signing-key@5.6.0", "@ethersproject/signing-key@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.6.0.tgz#4f02e3fb09e22b71e2e1d6dc4bcb5dafa69ce042" @@ -335,6 +577,18 @@ elliptic "6.5.4" hash.js "1.1.7" +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + "@ethersproject/solidity@5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.6.0.tgz#64657362a596bf7f5630bdc921c07dd78df06dc3" @@ -347,6 +601,18 @@ "@ethersproject/sha2" "^5.6.0" "@ethersproject/strings" "^5.6.0" +"@ethersproject/solidity@5.7.0", "@ethersproject/solidity@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/strings@5.6.0", "@ethersproject/strings@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.6.0.tgz#9891b26709153d996bf1303d39a7f4bc047878fd" @@ -356,6 +622,15 @@ "@ethersproject/constants" "^5.6.0" "@ethersproject/logger" "^5.6.0" +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/transactions@5.6.0", "@ethersproject/transactions@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.6.0.tgz#4b594d73a868ef6e1529a2f8f94a785e6791ae4e" @@ -371,6 +646,21 @@ "@ethersproject/rlp" "^5.6.0" "@ethersproject/signing-key" "^5.6.0" +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/units@5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.6.0.tgz#e5cbb1906988f5740254a21b9ded6bd51e826d9c" @@ -380,6 +670,15 @@ "@ethersproject/constants" "^5.6.0" "@ethersproject/logger" "^5.6.0" +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/wallet@5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.6.0.tgz#33d11a806d783864208f348709a5a3badac8e22a" @@ -401,6 +700,27 @@ "@ethersproject/transactions" "^5.6.0" "@ethersproject/wordlists" "^5.6.0" +"@ethersproject/wallet@5.7.0", "@ethersproject/wallet@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + "@ethersproject/web@5.6.0", "@ethersproject/web@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.6.0.tgz#4bf8b3cbc17055027e1a5dd3c357e37474eaaeb8" @@ -412,6 +732,17 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.0" +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/wordlists@5.6.0", "@ethersproject/wordlists@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.6.0.tgz#79e62c5276e091d8575f6930ba01a29218ded032" @@ -423,6 +754,17 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.0" +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@metamask/eth-sig-util@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.0.tgz#11553ba06de0d1352332c1bde28c8edd00e0dcf6" @@ -567,6 +909,14 @@ resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== +"@typechain/ethers-v5@^10.0.0": + version "10.2.1" + resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-10.2.1.tgz#50241e6957683281ecfa03fb5a6724d8a3ce2391" + integrity sha512-n3tQmCZjRE6IU4h6lqUGiQ1j866n5MTCBJreNEHHVWXa2u9GJTaeYyU1/k+1qLutkyw+sS6VAN+AbeiTqsxd/A== + dependencies: + lodash "^4.17.15" + ts-essentials "^7.0.1" + "@typechain/hardhat@^5.0.0": version "5.0.0" resolved "https://registry.yarnpkg.com/@typechain/hardhat/-/hardhat-5.0.0.tgz#3a4fa36aa7a11e6a59ff2ac729e2cb4f8be3270a" @@ -634,6 +984,11 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.1.tgz#dfd20e2dc35f027cdd6c1908e80a5ddc7499670e" integrity sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow== +"@types/qs@^6.9.7": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + "@types/secp256k1@^4.0.1": version "4.0.3" resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" @@ -788,11 +1143,23 @@ async@^2.4.0: dependencies: lodash "^4.17.14" +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + at-least-node@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== +axios@^0.21.1: + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== + dependencies: + follow-redirects "^1.14.0" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -835,6 +1202,11 @@ bn.js@^5.1.2, bn.js@^5.2.0: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== +bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -947,7 +1319,7 @@ chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.1.0: +chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -955,7 +1327,7 @@ chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chokidar@3.5.3, chokidar@^3.4.0: +chokidar@3.5.3, chokidar@^3.4.0, chokidar@^3.5.2: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -1021,6 +1393,13 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + command-exists@^1.2.8: version "1.2.9" resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" @@ -1112,7 +1491,7 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -debug@4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3: +debug@4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -1144,6 +1523,11 @@ deferred-leveldown@~5.3.0: abstract-leveldown "~6.2.1" inherits "^2.0.3" +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" @@ -1187,6 +1571,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +encode-utf8@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" + integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== + encoding-down@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-6.3.0.tgz#b1c4eb0e1728c146ecaef8e32963c549e76d082b" @@ -1197,7 +1586,7 @@ encoding-down@^6.3.0: level-codec "^9.0.0" level-errors "^2.0.0" -enquirer@^2.3.0: +enquirer@^2.3.0, enquirer@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -1284,6 +1673,42 @@ ethereumjs-util@^7.0.3, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.3, ethereum ethereum-cryptography "^0.1.3" rlp "^2.2.4" +ethers@^5.5.3: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + ethers@^5.6.1: version "5.6.1" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.6.1.tgz#a56cd67f1595b745dc3dde0ccf2b5de53a41a6d0" @@ -1380,11 +1805,32 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== +fmix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/fmix/-/fmix-0.1.0.tgz#c7bbf124dec42c9d191cfb947d0a9778dd986c0c" + integrity sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w== + dependencies: + imul "^1.0.0" + follow-redirects@^1.12.1: version "1.14.9" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== +follow-redirects@^1.14.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + fp-ts@1.19.3: version "1.19.3" resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.3.tgz#261a60d1088fbff01f91256f91d21d0caaaaa96f" @@ -1406,6 +1852,15 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^7.0.0, fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -1500,6 +1955,36 @@ growl@1.10.5: resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== +hardhat-deploy@^0.11.10: + version "0.11.28" + resolved "https://registry.yarnpkg.com/hardhat-deploy/-/hardhat-deploy-0.11.28.tgz#01278bf62343d3a2345ee4f415d8807e0f784378" + integrity sha512-Bzg+QFtp7bKYfoF7KJwFQTWcUm28MGmgDT/+VH5r3USKfzWhezQXlxpLvcBJPdV7UFHa3mGGnr8tVbNqxsllLw== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/contracts" "^5.7.0" + "@ethersproject/providers" "^5.7.2" + "@ethersproject/solidity" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wallet" "^5.7.0" + "@types/qs" "^6.9.7" + axios "^0.21.1" + chalk "^4.1.2" + chokidar "^3.5.2" + debug "^4.3.2" + enquirer "^2.3.6" + ethers "^5.5.3" + form-data "^4.0.0" + fs-extra "^10.0.0" + match-all "^1.2.6" + murmur-128 "^0.2.1" + qs "^6.9.4" + zksync-web3 "^0.14.3" + hardhat@^2.9.1: version "2.9.2" resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.9.2.tgz#123f3fed6810ef8637b127b73ca44bb9c9efc249" @@ -1653,6 +2138,11 @@ immutable@^4.0.0-rc.12: resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== +imul@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/imul/-/imul-1.0.1.tgz#9d5867161e8b3de96c2c38d5dc7cb102f35e2ac9" + integrity sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA== + indent-string@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" @@ -1911,6 +2401,11 @@ make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== +match-all@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/match-all/-/match-all-1.2.6.tgz#66d276ad6b49655551e63d3a6ee53e8be0566f8d" + integrity sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ== + mcl-wasm@^0.7.1: version "0.7.9" resolved "https://registry.yarnpkg.com/mcl-wasm/-/mcl-wasm-0.7.9.tgz#c1588ce90042a8700c3b60e40efb339fc07ab87f" @@ -1962,6 +2457,18 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -2038,6 +2545,15 @@ ms@2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +murmur-128@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/murmur-128/-/murmur-128-0.2.1.tgz#a9f6568781d2350ecb1bf80c14968cadbeaa4b4d" + integrity sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg== + dependencies: + encode-utf8 "^1.0.2" + fmix "^0.1.0" + imul "^1.0.0" + nanoid@3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" @@ -2209,6 +2725,13 @@ qs@^6.7.0: dependencies: side-channel "^1.0.4" +qs@^6.9.4: + version "6.11.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.1.tgz#6c29dff97f0c0060765911ba65cbc9764186109f" + integrity sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ== + dependencies: + side-channel "^1.0.4" + randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -2767,3 +3290,8 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zksync-web3@^0.14.3: + version "0.14.3" + resolved "https://registry.yarnpkg.com/zksync-web3/-/zksync-web3-0.14.3.tgz#64ac2a16d597464c3fc4ae07447a8007631c57c9" + integrity sha512-hT72th4AnqyLW1d5Jlv8N2B/qhEnl2NePK2A3org7tAa24niem/UAaHMkEvmWI3SF9waYUPtqAtjpf+yvQ9zvQ== From 5d274e25567b4851d761820e01fdb8ac08ed2da1 Mon Sep 17 00:00:00 2001 From: jr-alpaca Date: Tue, 9 May 2023 16:28:26 +0700 Subject: [PATCH 54/87] chore: remove unused --- package.json | 2 - .../config/SetPriceFeeds.s.sol | 52 - .../deploy/ChainlinkPriceOracle2.json | 6772 ----------------- .../deploy/ChainlinkPriceOracle2.s.sol | 48 - .../oracle/ChainLinkPriceOracle2.sol | 142 - .../upgradable/AdminUpgradeabilityProxy.sol | 485 -- solidity/contracts/upgradable/ProxyAdmin.sol | 649 -- solidity/tests/base/BaseTest.sol | 5 +- .../tests/oracle/Oracle_ChainLink2Test.t.sol | 122 - 9 files changed, 2 insertions(+), 8275 deletions(-) delete mode 100644 script/deployments/ChainLinkOracle2/config/SetPriceFeeds.s.sol delete mode 100644 script/deployments/ChainLinkOracle2/deploy/ChainlinkPriceOracle2.json delete mode 100644 script/deployments/ChainLinkOracle2/deploy/ChainlinkPriceOracle2.s.sol delete mode 100644 solidity/contracts/oracle/ChainLinkPriceOracle2.sol delete mode 100644 solidity/contracts/upgradable/AdminUpgradeabilityProxy.sol delete mode 100644 solidity/contracts/upgradable/ProxyAdmin.sol delete mode 100644 solidity/tests/oracle/Oracle_ChainLink2Test.t.sol diff --git a/package.json b/package.json index 61d56e90..2caf9c79 100644 --- a/package.json +++ b/package.json @@ -49,8 +49,6 @@ "exec:bsc_mainnet:wnative-relayer:config:set-caller-ok": "forge script script/deployments/WNativeRelayer/config/setCallerOk.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:money-market-reader:deploy": "forge script script/deployments/MoneyMarketReader/deploy/MoneyMarketReader.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:chainlink-price-oracle:config:set-price-feeds": "forge script script/deployments/ChainLinkOracle/config/SetPriceFeeds.s.sol --rpc-url bsc_mainnet --broadcast --slow", - "exec:bsc_mainnet:chainlink-price-oracle2:deploy": "forge script script/deployments/ChainLinkOracle2/deploy/ChainlinkPriceOracle2.s.sol --rpc-url bsc_mainnet --broadcast --slow", - "exec:bsc_mainnet:chainlink-price-oracle2:config:set-price-feeds": "forge script script/deployments/ChainLinkOracle2/config/SetPriceFeeds.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:fix-fee-model-500-bps:deploy": "forge script script/deployments/RepurchaseRewardModel/deploy/FixedFeeModel500Bps.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:triple-slope-model0:deploy": "forge script script/deployments/InterestModels/deploy/TripleSlopeModel0.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:double-slope-model1:deploy": "forge script script/deployments/InterestModels/deploy/MMDoubleSlopeModel1.s.sol --rpc-url bsc_mainnet --broadcast --slow", diff --git a/script/deployments/ChainLinkOracle2/config/SetPriceFeeds.s.sol b/script/deployments/ChainLinkOracle2/config/SetPriceFeeds.s.sol deleted file mode 100644 index eac2e326..00000000 --- a/script/deployments/ChainLinkOracle2/config/SetPriceFeeds.s.sol +++ /dev/null @@ -1,52 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.19; - -import "../../../BaseScript.sol"; - -import { IChainLinkPriceOracle2 } from "solidity/contracts/oracle/interfaces/IChainLinkPriceOracle2.sol"; -import { IAggregatorV3 } from "solidity/contracts/oracle/interfaces/IAggregatorV3.sol"; - -contract SetPriceFeedsScript is BaseScript { - using stdJson for string; - - function run() public { - /* - ░██╗░░░░░░░██╗░█████╗░██████╗░███╗░░██╗██╗███╗░░██╗░██████╗░ - ░██║░░██╗░░██║██╔══██╗██╔══██╗████╗░██║██║████╗░██║██╔════╝░ - ░╚██╗████╗██╔╝███████║██████╔╝██╔██╗██║██║██╔██╗██║██║░░██╗░ - ░░████╔═████║░██╔══██║██╔══██╗██║╚████║██║██║╚████║██║░░╚██╗ - ░░╚██╔╝░╚██╔╝░██║░░██║██║░░██║██║░╚███║██║██║░╚███║╚██████╔╝ - ░░░╚═╝░░░╚═╝░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝╚═╝╚═╝░░╚══╝░╚═════╝░ - Check all variables below before execute the deployment script - */ - - address _chainLinkPriceOracle2 = 0xEe13333120968d13811Eb2FF7f434ae138578B3e; - address[] memory token0s = new address[](2); - address[] memory token1s = new address[](2); - IAggregatorV3[][] memory allSources = new IAggregatorV3[][](2); - - IAggregatorV3[] memory sources; - - // CAKE - sources = new IAggregatorV3[](1); - sources[0] = IAggregatorV3(0xB6064eD41d4f67e353768aA239cA86f4F73665a1); - - token0s[0] = cake; - token1s[0] = usdPlaceholder; - allSources[0] = sources; - - // DOT - sources = new IAggregatorV3[](1); - sources[0] = IAggregatorV3(0xC333eb0086309a16aa7c8308DfD32c8BBA0a2592); - - token0s[1] = dot; - token1s[1] = usdPlaceholder; - allSources[1] = sources; - - _startDeployerBroadcast(); - - IChainLinkPriceOracle2(_chainLinkPriceOracle2).setPriceFeeds(token0s, token1s, allSources); - - _stopBroadcast(); - } -} diff --git a/script/deployments/ChainLinkOracle2/deploy/ChainlinkPriceOracle2.json b/script/deployments/ChainLinkOracle2/deploy/ChainlinkPriceOracle2.json deleted file mode 100644 index 18adbead..00000000 --- a/script/deployments/ChainLinkOracle2/deploy/ChainlinkPriceOracle2.json +++ /dev/null @@ -1,6772 +0,0 @@ -{ - "abi": [ - { - "inputs": [], - "name": "ChainlinkPriceOracle2_InconsistentLength", - "type": "error" - }, - { - "inputs": [], - "name": "ChainlinkPriceOracle2_InvalidPrice", - "type": "error" - }, - { - "inputs": [], - "name": "ChainlinkPriceOracle2_NoSource", - "type": "error" - }, - { - "inputs": [], - "name": "ChainlinkPriceOracle2_SourceExistedPair", - "type": "error" - }, - { - "inputs": [], - "name": "ChainlinkPriceOracle2_SourceOverLimit", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "token0", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "token1", - "type": "address" - }, - { - "indexed": false, - "internalType": "contract AggregatorV3Interface[]", - "name": "sources", - "type": "address[]" - } - ], - "name": "SetPriceFeed", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token0", - "type": "address" - }, - { - "internalType": "address", - "name": "token1", - "type": "address" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "priceFeedCount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "priceFeeds", - "outputs": [ - { - "internalType": "contract AggregatorV3Interface", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "token0s", - "type": "address[]" - }, - { - "internalType": "address[]", - "name": "token1s", - "type": "address[]" - }, - { - "internalType": "contract AggregatorV3Interface[][]", - "name": "allSources", - "type": "address[][]" - } - ], - "name": "setPriceFeeds", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": { - "object": "0x608060405234801561001057600080fd5b50611349806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b14610109578063ac41865a1461011a578063f2fde38b14610142578063fe23ce531461015557600080fd5b80636fee810c1461008d578063715018a6146100a2578063790a33fc146100aa5780638129fc1c14610101575b600080fd5b6100a061009b366004610ee3565b61018e565b005b6100a0610295565b6100e46100b8366004610f99565b60656020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a06102a9565b6033546001600160a01b03166100e4565b61012d610128366004610fd5565b6103bf565b604080519283526020830191909152016100f8565b6100a0610150366004611008565b610bc0565b610180610163366004610fd5565b606660209081526000928352604080842090915290825290205481565b6040519081526020016100f8565b610196610c36565b84831415806101a55750848114155b156101c357604051632b05b2d760e11b815260040160405180910390fd5b60005b8581101561028c5761027a8787838181106101e3576101e361102a565b90506020020160208101906101f89190611008565b86868481811061020a5761020a61102a565b905060200201602081019061021f9190611008565b8585858181106102315761023161102a565b90506020028101906102439190611040565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610c9092505050565b80610284816110a0565b9150506101c6565b50505050505050565b61029d610c36565b6102a76000610df2565b565b600054610100900460ff16158080156102c95750600054600160ff909116105b806102e35750303b1580156102e3575060005460ff166001145b61034b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561036e576000805461ff0019166101001790555b610376610e44565b80156103bc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b038083166000908152606660209081526040808320938516835292905290812054819015801561041957506001600160a01b03808416600090815260666020908152604080832093881683529290522054155b156104375760405163faab535d60e01b815260040160405180910390fd5b6001600160a01b03808516600090815260666020908152604080832093871683529290529081205481908190819081908190819015610829576001600160a01b03808c1660009081526065602090815260408083208e85168452825280832083805290915290819020548151633fabe5a360e21b8152915192169163feaf968c9160048082019260a0929091908290030181865afa1580156104dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050191906110d5565b9091929350909150508097508198505050606560008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b6001600160a01b03166001600160a01b03168152602001908152602001600020600080815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e09190611125565b60ff1692506105f083600a61122e565b61060288670de0b6b3a764000061123a565b61060c9190611259565b6001600160a01b03808d166000908152606660209081526040808320938f168352929052205490925060021415610819576001600160a01b03808c1660009081526065602090815260408083208e8516845282528083206001845290915290819020548151633fabe5a360e21b8152915192169163feaf968c9160048082019260a0929091908290030181865afa1580156106ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cf91906110d5565b9091929350909150508095508196505050606560008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b6001600160a01b03166001600160a01b0316815260200190815260200160002060006001815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561078b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107af9190611125565b60ff1692506107bf83600a61122e565b6107d186670de0b6b3a764000061123a565b6107db9190611259565b9050806107f083670de0b6b3a764000061123a565b6107fa9190611259565b8685106108075786610809565b845b9850985050505050505050610bb9565b509650929450610bb99350505050565b6001600160a01b03808b1660009081526065602090815260408083208f85168452825280832083805290915290819020548151633fabe5a360e21b8152915192169163feaf968c9160048082019260a0929091908290030181865afa158015610896573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ba91906110d5565b9091929350909150508097508198505050606560008b6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160a01b03166001600160a01b03168152602001908152602001600020600080815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610975573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109999190611125565b60ff169250866109aa84600a61122e565b6109bc90670de0b6b3a764000061123a565b6109c69190611259565b9150606660008b6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160a01b03166001600160a01b031681526020019081526020016000205460021415610bae576001600160a01b03808b1660009081526065602090815260408083208f8516845282528083206001845290915290819020548151633fabe5a360e21b8152915192169163feaf968c9160048082019260a0929091908290030181865afa158015610a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aab91906110d5565b9091929350909150508095508196505050606560008b6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160a01b03166001600160a01b0316815260200190815260200160002060006001815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8b9190611125565b60ff16925084610b9c84600a61122e565b6107d190670de0b6b3a764000061123a565b509650929450505050505b9250929050565b610bc8610c36565b6001600160a01b038116610c2d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610342565b6103bc81610df2565b6033546001600160a01b031633146102a75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610342565b6001600160a01b0380831660009081526066602090815260408083209387168352929052205415610cd457604051631880fe7960e31b815260040160405180910390fd5b600281511115610cf7576040516342f612cf60e11b815260040160405180910390fd5b80516001600160a01b0380851660009081526066602090815260408083209387168352929052908120919091555b8151811015610da157818181518110610d4057610d4061102a565b6020908102919091018101516001600160a01b038681166000908152606584526040808220888416835285528082208683529094529290922080546001600160a01b0319169290911691909117905580610d99816110a0565b915050610d25565b50816001600160a01b0316836001600160a01b03167f6152108a07e7f45c64d65b611b5e1dfa7475f6d50a37630badf018bfeaea93aa83604051610de5919061127b565b60405180910390a3505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610e6b5760405162461bcd60e51b8152600401610342906112c8565b6102a7600054610100900460ff16610e955760405162461bcd60e51b8152600401610342906112c8565b6102a733610df2565b60008083601f840112610eb057600080fd5b50813567ffffffffffffffff811115610ec857600080fd5b6020830191508360208260051b8501011115610bb957600080fd5b60008060008060008060608789031215610efc57600080fd5b863567ffffffffffffffff80821115610f1457600080fd5b610f208a838b01610e9e565b90985096506020890135915080821115610f3957600080fd5b610f458a838b01610e9e565b90965094506040890135915080821115610f5e57600080fd5b50610f6b89828a01610e9e565b979a9699509497509295939492505050565b80356001600160a01b0381168114610f9457600080fd5b919050565b600080600060608486031215610fae57600080fd5b610fb784610f7d565b9250610fc560208501610f7d565b9150604084013590509250925092565b60008060408385031215610fe857600080fd5b610ff183610f7d565b9150610fff60208401610f7d565b90509250929050565b60006020828403121561101a57600080fd5b61102382610f7d565b9392505050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261105757600080fd5b83018035915067ffffffffffffffff82111561107257600080fd5b6020019150600581901b3603821315610bb957600080fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156110b4576110b461108a565b5060010190565b805169ffffffffffffffffffff81168114610f9457600080fd5b600080600080600060a086880312156110ed57600080fd5b6110f6866110bb565b9450602086015193506040860151925060608601519150611119608087016110bb565b90509295509295909350565b60006020828403121561113757600080fd5b815160ff8116811461102357600080fd5b600181815b808511156111835781600019048211156111695761116961108a565b8085161561117657918102915b93841c939080029061114d565b509250929050565b60008261119a57506001611228565b816111a757506000611228565b81600181146111bd57600281146111c7576111e3565b6001915050611228565b60ff8411156111d8576111d861108a565b50506001821b611228565b5060208310610133831016604e8410600b8410161715611206575081810a611228565b6112108383611148565b80600019048211156112245761122461108a565b0290505b92915050565b6000611023838361118b565b60008160001904831182151516156112545761125461108a565b500290565b60008261127657634e487b7160e01b600052601260045260246000fd5b500490565b6020808252825182820181905260009190848201906040850190845b818110156112bc5783516001600160a01b031683529284019291840191600101611297565b50909695505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220aae21df20f8f61cdda9b8e01c79f4f7fc30c3f9a66d18f57915120429c87c37664736f6c634300080b0033", - "sourceMap": "530:4305:27:-:0;;;;;;;;;;;;;;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b14610109578063ac41865a1461011a578063f2fde38b14610142578063fe23ce531461015557600080fd5b80636fee810c1461008d578063715018a6146100a2578063790a33fc146100aa5780638129fc1c14610101575b600080fd5b6100a061009b366004610ee3565b61018e565b005b6100a0610295565b6100e46100b8366004610f99565b60656020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a06102a9565b6033546001600160a01b03166100e4565b61012d610128366004610fd5565b6103bf565b604080519283526020830191909152016100f8565b6100a0610150366004611008565b610bc0565b610180610163366004610fd5565b606660209081526000928352604080842090915290825290205481565b6040519081526020016100f8565b610196610c36565b84831415806101a55750848114155b156101c357604051632b05b2d760e11b815260040160405180910390fd5b60005b8581101561028c5761027a8787838181106101e3576101e361102a565b90506020020160208101906101f89190611008565b86868481811061020a5761020a61102a565b905060200201602081019061021f9190611008565b8585858181106102315761023161102a565b90506020028101906102439190611040565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610c9092505050565b80610284816110a0565b9150506101c6565b50505050505050565b61029d610c36565b6102a76000610df2565b565b600054610100900460ff16158080156102c95750600054600160ff909116105b806102e35750303b1580156102e3575060005460ff166001145b61034b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561036e576000805461ff0019166101001790555b610376610e44565b80156103bc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b038083166000908152606660209081526040808320938516835292905290812054819015801561041957506001600160a01b03808416600090815260666020908152604080832093881683529290522054155b156104375760405163faab535d60e01b815260040160405180910390fd5b6001600160a01b03808516600090815260666020908152604080832093871683529290529081205481908190819081908190819015610829576001600160a01b03808c1660009081526065602090815260408083208e85168452825280832083805290915290819020548151633fabe5a360e21b8152915192169163feaf968c9160048082019260a0929091908290030181865afa1580156104dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050191906110d5565b9091929350909150508097508198505050606560008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b6001600160a01b03166001600160a01b03168152602001908152602001600020600080815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e09190611125565b60ff1692506105f083600a61122e565b61060288670de0b6b3a764000061123a565b61060c9190611259565b6001600160a01b03808d166000908152606660209081526040808320938f168352929052205490925060021415610819576001600160a01b03808c1660009081526065602090815260408083208e8516845282528083206001845290915290819020548151633fabe5a360e21b8152915192169163feaf968c9160048082019260a0929091908290030181865afa1580156106ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cf91906110d5565b9091929350909150508095508196505050606560008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b6001600160a01b03166001600160a01b0316815260200190815260200160002060006001815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561078b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107af9190611125565b60ff1692506107bf83600a61122e565b6107d186670de0b6b3a764000061123a565b6107db9190611259565b9050806107f083670de0b6b3a764000061123a565b6107fa9190611259565b8685106108075786610809565b845b9850985050505050505050610bb9565b509650929450610bb99350505050565b6001600160a01b03808b1660009081526065602090815260408083208f85168452825280832083805290915290819020548151633fabe5a360e21b8152915192169163feaf968c9160048082019260a0929091908290030181865afa158015610896573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ba91906110d5565b9091929350909150508097508198505050606560008b6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160a01b03166001600160a01b03168152602001908152602001600020600080815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610975573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109999190611125565b60ff169250866109aa84600a61122e565b6109bc90670de0b6b3a764000061123a565b6109c69190611259565b9150606660008b6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160a01b03166001600160a01b031681526020019081526020016000205460021415610bae576001600160a01b03808b1660009081526065602090815260408083208f8516845282528083206001845290915290819020548151633fabe5a360e21b8152915192169163feaf968c9160048082019260a0929091908290030181865afa158015610a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aab91906110d5565b9091929350909150508095508196505050606560008b6001600160a01b03166001600160a01b0316815260200190815260200160002060008c6001600160a01b03166001600160a01b0316815260200190815260200160002060006001815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8b9190611125565b60ff16925084610b9c84600a61122e565b6107d190670de0b6b3a764000061123a565b509650929450505050505b9250929050565b610bc8610c36565b6001600160a01b038116610c2d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610342565b6103bc81610df2565b6033546001600160a01b031633146102a75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610342565b6001600160a01b0380831660009081526066602090815260408083209387168352929052205415610cd457604051631880fe7960e31b815260040160405180910390fd5b600281511115610cf7576040516342f612cf60e11b815260040160405180910390fd5b80516001600160a01b0380851660009081526066602090815260408083209387168352929052908120919091555b8151811015610da157818181518110610d4057610d4061102a565b6020908102919091018101516001600160a01b038681166000908152606584526040808220888416835285528082208683529094529290922080546001600160a01b0319169290911691909117905580610d99816110a0565b915050610d25565b50816001600160a01b0316836001600160a01b03167f6152108a07e7f45c64d65b611b5e1dfa7475f6d50a37630badf018bfeaea93aa83604051610de5919061127b565b60405180910390a3505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610e6b5760405162461bcd60e51b8152600401610342906112c8565b6102a7600054610100900460ff16610e955760405162461bcd60e51b8152600401610342906112c8565b6102a733610df2565b60008083601f840112610eb057600080fd5b50813567ffffffffffffffff811115610ec857600080fd5b6020830191508360208260051b8501011115610bb957600080fd5b60008060008060008060608789031215610efc57600080fd5b863567ffffffffffffffff80821115610f1457600080fd5b610f208a838b01610e9e565b90985096506020890135915080821115610f3957600080fd5b610f458a838b01610e9e565b90965094506040890135915080821115610f5e57600080fd5b50610f6b89828a01610e9e565b979a9699509497509295939492505050565b80356001600160a01b0381168114610f9457600080fd5b919050565b600080600060608486031215610fae57600080fd5b610fb784610f7d565b9250610fc560208501610f7d565b9150604084013590509250925092565b60008060408385031215610fe857600080fd5b610ff183610f7d565b9150610fff60208401610f7d565b90509250929050565b60006020828403121561101a57600080fd5b61102382610f7d565b9392505050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261105757600080fd5b83018035915067ffffffffffffffff82111561107257600080fd5b6020019150600581901b3603821315610bb957600080fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156110b4576110b461108a565b5060010190565b805169ffffffffffffffffffff81168114610f9457600080fd5b600080600080600060a086880312156110ed57600080fd5b6110f6866110bb565b9450602086015193506040860151925060608601519150611119608087016110bb565b90509295509295909350565b60006020828403121561113757600080fd5b815160ff8116811461102357600080fd5b600181815b808511156111835781600019048211156111695761116961108a565b8085161561117657918102915b93841c939080029061114d565b509250929050565b60008261119a57506001611228565b816111a757506000611228565b81600181146111bd57600281146111c7576111e3565b6001915050611228565b60ff8411156111d8576111d861108a565b50506001821b611228565b5060208310610133831016604e8410600b8410161715611206575081810a611228565b6112108383611148565b80600019048211156112245761122461108a565b0290505b92915050565b6000611023838361118b565b60008160001904831182151516156112545761125461108a565b500290565b60008261127657634e487b7160e01b600052601260045260246000fd5b500490565b6020808252825182820181905260009190848201906040850190845b818110156112bc5783516001600160a01b031683529284019291840191600101611297565b50909695505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220aae21df20f8f61cdda9b8e01c79f4f7fc30c3f9a66d18f57915120429c87c37664736f6c634300080b0033", - "sourceMap": "530:4305:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1738:447;;;;;;:::i;:::-;;:::i;:::-;;2071:101:1;;;:::i;1166:99:27:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1166:99:27;;;;;;-1:-1:-1;;;;;2237:32:31;;;2219:51;;2207:2;2192:18;1166:99:27;;;;;;;;1447:89;;;:::i;1441:85:1:-;1513:6;;-1:-1:-1;;;;;1513:6:1;1441:85;;3084:1749:27;;;;;;:::i;:::-;;:::i;:::-;;;;2928:25:31;;;2984:2;2969:18;;2962:34;;;;2901:18;3084:1749:27;2754:248:31;2321:198:1;;;;;;:::i;:::-;;:::i;1269:69:27:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;3344:25:31;;;3332:2;3317:18;1269:69:27;3198:177:31;1738:447:27;1334:13:1;:11;:13::i;:::-;1922:32:27;;::::1;;::::0;:71:::1;;-1:-1:-1::0;1958:35:27;;::::1;;1922:71;1918:132;;;2008:42;;-1:-1:-1::0;;;2008:42:27::1;;;;;;;;;;;1918:132;2062:11;2057:124;2079:20:::0;;::::1;2057:124;;;2116:58;2130:7;;2138:3;2130:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2144:7;;2152:3;2144:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2158:10;;2169:3;2158:15;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;2116:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;2116:13:27::1;::::0;-1:-1:-1;;;2116:58:27:i:1;:::-;2101:5:::0;::::1;::::0;::::1;:::i;:::-;;;;2057:124;;;;1738:447:::0;;;;;;:::o;2071:101:1:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;1447:89:27:-;3268:19:2;3291:13;;;;;;3290:14;;3336:34;;;;-1:-1:-1;3354:12:2;;3369:1;3354:12;;;;:16;3336:34;3335:108;;;-1:-1:-1;3415:4:2;1476:19:9;:23;;;3376:66:2;;-1:-1:-1;3425:12:2;;;;;:17;3376:66;3314:201;;;;-1:-1:-1;;;3314:201:2;;4564:2:31;3314:201:2;;;4546:21:31;4603:2;4583:18;;;4576:30;4642:34;4622:18;;;4615:62;-1:-1:-1;;;4693:18:31;;;4686:44;4747:19;;3314:201:2;;;;;;;;;3525:12;:16;;-1:-1:-1;;3525:16:2;3540:1;3525:16;;;3551:65;;;;3585:13;:20;;-1:-1:-1;;3585:20:2;;;;;3551:65;1496:35:27::1;:33;:35::i;:::-;3640:14:2::0;3636:99;;;3686:5;3670:21;;-1:-1:-1;;3670:21:2;;;3710:14;;-1:-1:-1;4929:36:31;;3710:14:2;;4917:2:31;4902:18;3710:14:2;;;;;;;3636:99;3258:483;1447:89:27:o;3084:1749::-;-1:-1:-1;;;;;3194:22:27;;;3166:7;3194:22;;;:14;:22;;;;;;;;:30;;;;;;;;;;;;3166:7;;3194:35;:74;;;;-1:-1:-1;;;;;;3233:22:27;;;;;;;:14;:22;;;;;;;;:30;;;;;;;;;;:35;3194:74;3190:125;;;3283:32;;-1:-1:-1;;;3283:32:27;;;;;;;;;;;3190:125;-1:-1:-1;;;;;3514:22:27;;;3322:15;3514:22;;;:14;:22;;;;;;;;:30;;;;;;;;;;;;3322:15;;;;;;;;;;;;3514:35;3510:693;;-1:-1:-1;;;;;3592:18:27;;;;;;;:10;:18;;;;;;;;:26;;;;;;;;;;:29;;;;;;;;;;;:47;;-1:-1:-1;;;3592:47:27;;;;:29;;;:45;;:47;;;;;;;;;;;;;;;:29;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3559:80;;;;;;;;;;;;;;;;;3667:10;:18;3678:6;-1:-1:-1;;;;;3667:18:27;-1:-1:-1;;;;;3667:18:27;;;;;;;;;;;;:26;3686:6;-1:-1:-1;;;;;3667:26:27;-1:-1:-1;;;;;3667:26:27;;;;;;;;;;;;:29;3694:1;3667:29;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3667:29:27;-1:-1:-1;;;;;3667:38:27;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3659:49;;;-1:-1:-1;3756:13:27;3659:49;3756:2;:13;:::i;:::-;3727:24;3735:8;3747:4;3727:24;:::i;:::-;3726:44;;;;:::i;:::-;-1:-1:-1;;;;;3783:22:27;;;;;;;:14;:22;;;;;;;;:30;;;;;;;;;;3716:54;;-1:-1:-1;3817:1:27;3783:35;3779:379;;;-1:-1:-1;;;;;3863:18:27;;;;;;;:10;:18;;;;;;;;:26;;;;;;;;;;3890:1;3863:29;;;;;;;;;;:47;;-1:-1:-1;;;3863:47:27;;;;:29;;;:45;;:47;;;;;;;;;;;;;;;:29;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3830:80;;;;;;;;;;;;;;;;;3940:10;:18;3951:6;-1:-1:-1;;;;;3940:18:27;-1:-1:-1;;;;;3940:18:27;;;;;;;;;;;;:26;3959:6;-1:-1:-1;;;;;3940:26:27;-1:-1:-1;;;;;3940:26:27;;;;;;;;;;;;:29;3967:1;3940:29;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3940:29:27;-1:-1:-1;;;;;3940:38:27;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3932:49;;;-1:-1:-1;4031:13:27;3932:49;4031:2;:13;:::i;:::-;4002:24;4010:8;4022:4;4002:24;:::i;:::-;4001:44;;;;:::i;:::-;3991:54;-1:-1:-1;3991:54:27;4064:14;:7;4074:4;4064:14;:::i;:::-;4063:26;;;;:::i;:::-;4106:12;4091;:27;:57;;4136:12;4091:57;;;4121:12;4091:57;4055:94;;;;;;;;;;;;;3779:379;-1:-1:-1;4174:7:27;-1:-1:-1;4183:12:27;;-1:-1:-1;4166:30:27;;-1:-1:-1;;;;4166:30:27;3510:693;-1:-1:-1;;;;;4242:18:27;;;;;;;:10;:18;;;;;;;;:26;;;;;;;;;;:29;;;;;;;;;;;:47;;-1:-1:-1;;;4242:47:27;;;;:29;;;:45;;:47;;;;;;;;;;;;;;;:29;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4209:80;;;;;;;;;;;;;;;;;4315:10;:18;4326:6;-1:-1:-1;;;;;4315:18:27;-1:-1:-1;;;;;4315:18:27;;;;;;;;;;;;:26;4334:6;-1:-1:-1;;;;;4315:26:27;-1:-1:-1;;;;;4315:26:27;;;;;;;;;;;;:29;4342:1;4315:29;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4315:29:27;-1:-1:-1;;;;;4315:38:27;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4307:49;;;-1:-1:-1;4407:8:27;4374:13;4307:49;4374:2;:13;:::i;:::-;4373:22;;4391:4;4373:22;:::i;:::-;4372:44;;;;:::i;:::-;4362:54;;4427:14;:22;4442:6;-1:-1:-1;;;;;4427:22:27;-1:-1:-1;;;;;4427:22:27;;;;;;;;;;;;:30;4450:6;-1:-1:-1;;;;;4427:30:27;-1:-1:-1;;;;;4427:30:27;;;;;;;;;;;;;4461:1;4427:35;4423:369;;;-1:-1:-1;;;;;4505:18:27;;;;;;;:10;:18;;;;;;;;:26;;;;;;;;;;4532:1;4505:29;;;;;;;;;;:47;;-1:-1:-1;;;4505:47:27;;;;:29;;;:45;;:47;;;;;;;;;;;;;;;:29;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4472:80;;;;;;;;;;;;;;;;;4580:10;:18;4591:6;-1:-1:-1;;;;;4580:18:27;-1:-1:-1;;;;;4580:18:27;;;;;;;;;;;;:26;4599:6;-1:-1:-1;;;;;4580:26:27;-1:-1:-1;;;;;4580:26:27;;;;;;;;;;;;:29;4607:1;4580:29;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4580:29:27;-1:-1:-1;;;;;4580:38:27;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4572:49;;;-1:-1:-1;4674:8:27;4641:13;4572:49;4641:2;:13;:::i;:::-;4640:22;;4658:4;4640:22;:::i;4423:369::-;-1:-1:-1;4806:7:27;-1:-1:-1;4815:12:27;;-1:-1:-1;;;;;3084:1749:27;;;;;;:::o;2321:198:1:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:1;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:1;;7887:2:31;2401:73:1::1;::::0;::::1;7869:21:31::0;7926:2;7906:18;;;7899:30;7965:34;7945:18;;;7938:62;-1:-1:-1;;;8016:18:31;;;8009:36;8062:19;;2401:73:1::1;7685:402:31::0;2401:73:1::1;2484:28;2503:8;2484:18;:28::i;1599:130::-:0;1513:6;;-1:-1:-1;;;;;1513:6:1;929:10:10;1662:23:1;1654:68;;;;-1:-1:-1;;;1654:68:1;;8294:2:31;1654:68:1;;;8276:21:31;;;8313:18;;;8306:30;8372:34;8352:18;;;8345:62;8424:18;;1654:68:1;8092:356:31;2375:542:27;-1:-1:-1;;;;;2518:22:27;;;2551:1;2518:22;;;:14;:22;;;;;;;;:30;;;;;;;;;;:34;2514:88;;2561:41;;-1:-1:-1;;;2561:41:27;;;;;;;;;;;2514:88;2629:1;2612:7;:14;:18;2608:70;;;2639:39;;-1:-1:-1;;;2639:39:27;;;;;;;;;;;2608:70;2732:14;;-1:-1:-1;;;;;2699:22:27;;;;;;;:14;:22;;;;;;;;:30;;;;;;;;;;;:47;;;;2752:112;2780:7;:14;2774:3;:20;2752:112;;;2845:7;2853:3;2845:12;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;2811:18:27;;;;;;;:10;:18;;;;;;:26;;;;;;;;;;:31;;;;;;;;;;:46;;-1:-1:-1;;;;;;2811:46:27;;;;;;;;;;;:31;2796:5;2811:31;2796:5;:::i;:::-;;;;2752:112;;;;2896:6;-1:-1:-1;;;;;2875:37:27;2888:6;-1:-1:-1;;;;;2875:37:27;;2904:7;2875:37;;;;;;:::i;:::-;;;;;;;;2375:542;;;:::o;2673:187:1:-;2765:6;;;-1:-1:-1;;;;;2781:17:1;;;-1:-1:-1;;;;;;2781:17:1;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;1003:95::-;5363:13:2;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:2;;;;;;;:::i;:::-;1065:26:1::1;5363:13:2::0;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:2;;;;;;;:::i;:::-;1176:32:1::1;929:10:10::0;1176:18:1::1;:32::i;14:367:31:-:0;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:31;;225:18;214:30;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;386:1143;599:6;607;615;623;631;639;692:2;680:9;671:7;667:23;663:32;660:52;;;708:1;705;698:12;660:52;748:9;735:23;777:18;818:2;810:6;807:14;804:34;;;834:1;831;824:12;804:34;873:70;935:7;926:6;915:9;911:22;873:70;:::i;:::-;962:8;;-1:-1:-1;847:96:31;-1:-1:-1;1050:2:31;1035:18;;1022:32;;-1:-1:-1;1066:16:31;;;1063:36;;;1095:1;1092;1085:12;1063:36;1134:72;1198:7;1187:8;1176:9;1172:24;1134:72;:::i;:::-;1225:8;;-1:-1:-1;1108:98:31;-1:-1:-1;1313:2:31;1298:18;;1285:32;;-1:-1:-1;1329:16:31;;;1326:36;;;1358:1;1355;1348:12;1326:36;;1397:72;1461:7;1450:8;1439:9;1435:24;1397:72;:::i;:::-;386:1143;;;;-1:-1:-1;386:1143:31;;-1:-1:-1;386:1143:31;;1488:8;;386:1143;-1:-1:-1;;;386:1143:31:o;1534:173::-;1602:20;;-1:-1:-1;;;;;1651:31:31;;1641:42;;1631:70;;1697:1;1694;1687:12;1631:70;1534:173;;;:::o;1712:328::-;1789:6;1797;1805;1858:2;1846:9;1837:7;1833:23;1829:32;1826:52;;;1874:1;1871;1864:12;1826:52;1897:29;1916:9;1897:29;:::i;:::-;1887:39;;1945:38;1979:2;1968:9;1964:18;1945:38;:::i;:::-;1935:48;;2030:2;2019:9;2015:18;2002:32;1992:42;;1712:328;;;;;:::o;2489:260::-;2557:6;2565;2618:2;2606:9;2597:7;2593:23;2589:32;2586:52;;;2634:1;2631;2624:12;2586:52;2657:29;2676:9;2657:29;:::i;:::-;2647:39;;2705:38;2739:2;2728:9;2724:18;2705:38;:::i;:::-;2695:48;;2489:260;;;;;:::o;3007:186::-;3066:6;3119:2;3107:9;3098:7;3094:23;3090:32;3087:52;;;3135:1;3132;3125:12;3087:52;3158:29;3177:9;3158:29;:::i;:::-;3148:39;3007:186;-1:-1:-1;;;3007:186:31:o;3380:127::-;3441:10;3436:3;3432:20;3429:1;3422:31;3472:4;3469:1;3462:15;3496:4;3493:1;3486:15;3512:573;3633:4;3639:6;3699:11;3686:25;3793:2;3789:7;3778:8;3762:14;3758:29;3754:43;3734:18;3730:68;3720:96;;3812:1;3809;3802:12;3720:96;3839:33;;3891:20;;;-1:-1:-1;3934:18:31;3923:30;;3920:50;;;3966:1;3963;3956:12;3920:50;3999:4;3987:17;;-1:-1:-1;4050:1:31;4046:14;;;4030;4026:35;4016:46;;4013:66;;;4075:1;4072;4065:12;4090:127;4151:10;4146:3;4142:20;4139:1;4132:31;4182:4;4179:1;4172:15;4206:4;4203:1;4196:15;4222:135;4261:3;-1:-1:-1;;4282:17:31;;4279:43;;;4302:18;;:::i;:::-;-1:-1:-1;4349:1:31;4338:13;;4222:135::o;4976:179::-;5054:13;;5107:22;5096:34;;5086:45;;5076:73;;5145:1;5142;5135:12;5160:473;5263:6;5271;5279;5287;5295;5348:3;5336:9;5327:7;5323:23;5319:33;5316:53;;;5365:1;5362;5355:12;5316:53;5388:39;5417:9;5388:39;:::i;:::-;5378:49;;5467:2;5456:9;5452:18;5446:25;5436:35;;5511:2;5500:9;5496:18;5490:25;5480:35;;5555:2;5544:9;5540:18;5534:25;5524:35;;5578:49;5622:3;5611:9;5607:19;5578:49;:::i;:::-;5568:59;;5160:473;;;;;;;;:::o;5638:273::-;5706:6;5759:2;5747:9;5738:7;5734:23;5730:32;5727:52;;;5775:1;5772;5765:12;5727:52;5807:9;5801:16;5857:4;5850:5;5846:16;5839:5;5836:27;5826:55;;5877:1;5874;5867:12;5916:422;6005:1;6048:5;6005:1;6062:270;6083:7;6073:8;6070:21;6062:270;;;6142:4;6138:1;6134:6;6130:17;6124:4;6121:27;6118:53;;;6151:18;;:::i;:::-;6201:7;6191:8;6187:22;6184:55;;;6221:16;;;;6184:55;6300:22;;;;6260:15;;;;6062:270;;;6066:3;5916:422;;;;;:::o;6343:806::-;6392:5;6422:8;6412:80;;-1:-1:-1;6463:1:31;6477:5;;6412:80;6511:4;6501:76;;-1:-1:-1;6548:1:31;6562:5;;6501:76;6593:4;6611:1;6606:59;;;;6679:1;6674:130;;;;6586:218;;6606:59;6636:1;6627:10;;6650:5;;;6674:130;6711:3;6701:8;6698:17;6695:43;;;6718:18;;:::i;:::-;-1:-1:-1;;6774:1:31;6760:16;;6789:5;;6586:218;;6888:2;6878:8;6875:16;6869:3;6863:4;6860:13;6856:36;6850:2;6840:8;6837:16;6832:2;6826:4;6823:12;6819:35;6816:77;6813:159;;;-1:-1:-1;6925:19:31;;;6957:5;;6813:159;7004:34;7029:8;7023:4;7004:34;:::i;:::-;7074:6;7070:1;7066:6;7062:19;7053:7;7050:32;7047:58;;;7085:18;;:::i;:::-;7123:20;;-1:-1:-1;6343:806:31;;;;;:::o;7154:131::-;7214:5;7243:36;7270:8;7264:4;7243:36;:::i;7290:168::-;7330:7;7396:1;7392;7388:6;7384:14;7381:1;7378:21;7373:1;7366:9;7359:17;7355:45;7352:71;;;7403:18;;:::i;:::-;-1:-1:-1;7443:9:31;;7290:168::o;7463:217::-;7503:1;7529;7519:132;;7573:10;7568:3;7564:20;7561:1;7554:31;7608:4;7605:1;7598:15;7636:4;7633:1;7626:15;7519:132;-1:-1:-1;7665:9:31;;7463:217::o;8453:686::-;8652:2;8704:21;;;8774:13;;8677:18;;;8796:22;;;8623:4;;8652:2;8875:15;;;;8849:2;8834:18;;;8623:4;8918:195;8932:6;8929:1;8926:13;8918:195;;;8997:13;;-1:-1:-1;;;;;8993:39:31;8981:52;;9088:15;;;;9053:12;;;;9029:1;8947:9;8918:195;;;-1:-1:-1;9130:3:31;;8453:686;-1:-1:-1;;;;;;8453:686:31:o;9144:407::-;9346:2;9328:21;;;9385:2;9365:18;;;9358:30;9424:34;9419:2;9404:18;;9397:62;-1:-1:-1;;;9490:2:31;9475:18;;9468:41;9541:3;9526:19;;9144:407::o", - "linkReferences": {} - }, - "methodIdentifiers": { - "getPrice(address,address)": "ac41865a", - "initialize()": "8129fc1c", - "owner()": "8da5cb5b", - "priceFeedCount(address,address)": "fe23ce53", - "priceFeeds(address,address,uint256)": "790a33fc", - "renounceOwnership()": "715018a6", - "setPriceFeeds(address[],address[],address[][])": "6fee810c", - "transferOwnership(address)": "f2fde38b" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.11+commit.d7f03943\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ChainlinkPriceOracle2_InconsistentLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ChainlinkPriceOracle2_InvalidPrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ChainlinkPriceOracle2_NoSource\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ChainlinkPriceOracle2_SourceExistedPair\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ChainlinkPriceOracle2_SourceOverLimit\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract AggregatorV3Interface[]\",\"name\":\"sources\",\"type\":\"address[]\"}],\"name\":\"SetPriceFeed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"}],\"name\":\"getPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"priceFeedCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"priceFeeds\",\"outputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"token0s\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"token1s\",\"type\":\"address[]\"},{\"internalType\":\"contract AggregatorV3Interface[][]\",\"name\":\"allSources\",\"type\":\"address[][]\"}],\"name\":\"setPriceFeeds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getPrice(address,address)\":{\"details\":\"Return the price of token0/token1, multiplied by 1e18\",\"params\":{\"token0\":\"Token0 to set oracle sources\",\"token1\":\"Token1 to set oracle sources\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setPriceFeeds(address[],address[],address[][])\":{\"details\":\"Set sources for multiple token pairs\",\"params\":{\"allSources\":\"source for the token pair\",\"token0s\":\"Token0 address to set source\",\"token1s\":\"Token1 address to set source\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"priceFeeds\":{\"details\":\"Mapping from token0, token1 to sources\"}},\"version\":1},\"userdoc\":{\"errors\":{\"ChainlinkPriceOracle2_InconsistentLength()\":[{\"notice\":\"--------------------------------------------------- Errors ---------------------------------------------------\"}]},\"kind\":\"user\",\"methods\":{\"priceFeeds(address,address,uint256)\":{\"notice\":\"--------------------------------------------------- Configurable variables ---------------------------------------------------\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solidity/contracts/8.11/protocol/price-oracle/ChainlinkPriceOracle2.sol\":\"ChainlinkPriceOracle2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=node_modules/@chainlink/\",\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":@rari-capital/=node_modules/@rari-capital/\",\":@scientix-finance/=node_modules/@scientix-finance/\",\":@solidity-parser/=node_modules/abi-to-sol/node_modules/@solidity-parser/\",\":@uniswap/=node_modules/@uniswap/\",\":hardhat-deploy/=node_modules/hardhat-deploy/\",\":hardhat/=node_modules/hardhat/\",\":prettier-plugin-solidity/=node_modules/abi-to-sol/node_modules/prettier-plugin-solidity/\"]},\"sources\":{\"node_modules/@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0x1862840d741dedb36e774534b877a13b5187555e3b78b8d2815f898b0dc02268\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://64a15f4349aea6e60703f581a6280b71d6adb35ee74d2f3c4f130a2adc3efee3\",\"dweb:/ipfs/QmdVoSQvGfJNPnjQsAs7ZN3ueWghzTa72jSqzhGiQNDpkL\"]},\"node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618\",\"dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"solidity/contracts/8.11/protocol/interfaces/IPriceOracle.sol\":{\"keccak256\":\"0x9648d5ceddd2b0e7db74a737c0083bda7d4e793c441b4e6ae456fa532e43dec3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09b50f688594471886615c7be8a473fa5573caa9a66439d53e6a7567a5d5e936\",\"dweb:/ipfs/QmQQKMeDxfvcLfG94YV4E5HXywpvgjKS71CUabeRtvtWec\"]},\"solidity/contracts/8.11/protocol/price-oracle/ChainlinkPriceOracle2.sol\":{\"keccak256\":\"0x277d548b09095f3481eb6282cd0700828b829aeaae3faac4144af0ead7ca0c2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://136f8b7cc7b92f5d9db3356aebc4585e86dc9cfc20853b007676a8bdd8c3d045\",\"dweb:/ipfs/QmdH78YGhc26uKgf4t7j3yprEV47333WMrUBNEwpH7SZkT\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.11+commit.d7f03943" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [], - "type": "error", - "name": "ChainlinkPriceOracle2_InconsistentLength" - }, - { - "inputs": [], - "type": "error", - "name": "ChainlinkPriceOracle2_InvalidPrice" - }, - { - "inputs": [], - "type": "error", - "name": "ChainlinkPriceOracle2_NoSource" - }, - { - "inputs": [], - "type": "error", - "name": "ChainlinkPriceOracle2_SourceExistedPair" - }, - { - "inputs": [], - "type": "error", - "name": "ChainlinkPriceOracle2_SourceOverLimit" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "version", - "type": "uint8", - "indexed": false - } - ], - "type": "event", - "name": "Initialized", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "previousOwner", - "type": "address", - "indexed": true - }, - { - "internalType": "address", - "name": "newOwner", - "type": "address", - "indexed": true - } - ], - "type": "event", - "name": "OwnershipTransferred", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token0", - "type": "address", - "indexed": true - }, - { - "internalType": "address", - "name": "token1", - "type": "address", - "indexed": true - }, - { - "internalType": "contract AggregatorV3Interface[]", - "name": "sources", - "type": "address[]", - "indexed": false - } - ], - "type": "event", - "name": "SetPriceFeed", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token0", - "type": "address" - }, - { - "internalType": "address", - "name": "token1", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "initialize" - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "name": "priceFeedCount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "name": "priceFeeds", - "outputs": [ - { - "internalType": "contract AggregatorV3Interface", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "renounceOwnership" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "token0s", - "type": "address[]" - }, - { - "internalType": "address[]", - "name": "token1s", - "type": "address[]" - }, - { - "internalType": "contract AggregatorV3Interface[][]", - "name": "allSources", - "type": "address[][]" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "setPriceFeeds" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "transferOwnership" - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "getPrice(address,address)": { - "details": "Return the price of token0/token1, multiplied by 1e18", - "params": { - "token0": "Token0 to set oracle sources", - "token1": "Token1 to set oracle sources" - } - }, - "owner()": { - "details": "Returns the address of the current owner." - }, - "renounceOwnership()": { - "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." - }, - "setPriceFeeds(address[],address[],address[][])": { - "details": "Set sources for multiple token pairs", - "params": { - "allSources": "source for the token pair", - "token0s": "Token0 address to set source", - "token1s": "Token1 address to set source" - } - }, - "transferOwnership(address)": { - "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": { - "priceFeeds(address,address,uint256)": { - "notice": "--------------------------------------------------- Configurable variables ---------------------------------------------------" - } - }, - "version": 1 - } - }, - "settings": { - "remappings": [ - ":@chainlink/=node_modules/@chainlink/", - ":@ensdomains/=node_modules/@ensdomains/", - ":@openzeppelin/=node_modules/@openzeppelin/", - ":@rari-capital/=node_modules/@rari-capital/", - ":@scientix-finance/=node_modules/@scientix-finance/", - ":@solidity-parser/=node_modules/abi-to-sol/node_modules/@solidity-parser/", - ":@uniswap/=node_modules/@uniswap/", - ":hardhat-deploy/=node_modules/hardhat-deploy/", - ":hardhat/=node_modules/hardhat/", - ":prettier-plugin-solidity/=node_modules/abi-to-sol/node_modules/prettier-plugin-solidity/" - ], - "optimizer": { - "enabled": true, - "runs": 200 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "solidity/contracts/8.11/protocol/price-oracle/ChainlinkPriceOracle2.sol": "ChainlinkPriceOracle2" - }, - "libraries": {} - }, - "sources": { - "node_modules/@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol": { - "keccak256": "0x1862840d741dedb36e774534b877a13b5187555e3b78b8d2815f898b0dc02268", - "urls": [ - "bzz-raw://64a15f4349aea6e60703f581a6280b71d6adb35ee74d2f3c4f130a2adc3efee3", - "dweb:/ipfs/QmdVoSQvGfJNPnjQsAs7ZN3ueWghzTa72jSqzhGiQNDpkL" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": { - "keccak256": "0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888", - "urls": [ - "bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a", - "dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { - "keccak256": "0x037c334add4b033ad3493038c25be1682d78c00992e1acb0e2795caff3925271", - "urls": [ - "bzz-raw://8a313cf42389440e2706837c91370323b85971c06afd6d056d21e2bc86459618", - "dweb:/ipfs/QmT8XUrUvQ9aZaPKrqgRU2JVGWnaxBcUYJA7Q7K5KcLBSZ" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol": { - "keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183", - "urls": [ - "bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06", - "dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879" - ], - "license": "MIT" - }, - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { - "keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149", - "urls": [ - "bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c", - "dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a" - ], - "license": "MIT" - }, - "solidity/contracts/8.11/protocol/interfaces/IPriceOracle.sol": { - "keccak256": "0x9648d5ceddd2b0e7db74a737c0083bda7d4e793c441b4e6ae456fa532e43dec3", - "urls": [ - "bzz-raw://09b50f688594471886615c7be8a473fa5573caa9a66439d53e6a7567a5d5e936", - "dweb:/ipfs/QmQQKMeDxfvcLfG94YV4E5HXywpvgjKS71CUabeRtvtWec" - ], - "license": "MIT" - }, - "solidity/contracts/8.11/protocol/price-oracle/ChainlinkPriceOracle2.sol": { - "keccak256": "0x277d548b09095f3481eb6282cd0700828b829aeaae3faac4144af0ead7ca0c2f", - "urls": [ - "bzz-raw://136f8b7cc7b92f5d9db3356aebc4585e86dc9cfc20853b007676a8bdd8c3d045", - "dweb:/ipfs/QmdH78YGhc26uKgf4t7j3yprEV47333WMrUBNEwpH7SZkT" - ], - "license": "MIT" - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "solidity/contracts/8.11/protocol/price-oracle/ChainlinkPriceOracle2.sol", - "id": 7827, - "exportedSymbols": { - "AddressUpgradeable": [ - 1735 - ], - "AggregatorV3Interface": [ - 45 - ], - "ChainlinkPriceOracle2": [ - 7826 - ], - "ContextUpgradeable": [ - 1777 - ], - "IPriceOracle": [ - 5854 - ], - "Initializable": [ - 346 - ], - "OwnableUpgradeable": [ - 177 - ] - }, - "nodeType": "SourceUnit", - "src": "232:4604:27", - "nodes": [ - { - "id": 7339, - "nodeType": "PragmaDirective", - "src": "232:23:27", - "nodes": [], - "literals": [ - "solidity", - "0.8", - ".11" - ] - }, - { - "id": 7340, - "nodeType": "ImportDirective", - "src": "257:75:27", - "nodes": [], - "absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "nameLocation": "-1:-1:-1", - "scope": 7827, - "sourceUnit": 347, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 7341, - "nodeType": "ImportDirective", - "src": "333:75:27", - "nodes": [], - "absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "file": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "nameLocation": "-1:-1:-1", - "scope": 7827, - "sourceUnit": 178, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 7342, - "nodeType": "ImportDirective", - "src": "410:76:27", - "nodes": [], - "absolutePath": "node_modules/@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol", - "file": "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol", - "nameLocation": "-1:-1:-1", - "scope": 7827, - "sourceUnit": 46, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 7343, - "nodeType": "ImportDirective", - "src": "488:40:27", - "nodes": [], - "absolutePath": "solidity/contracts/8.11/protocol/interfaces/IPriceOracle.sol", - "file": "../interfaces/IPriceOracle.sol", - "nameLocation": "-1:-1:-1", - "scope": 7827, - "sourceUnit": 5855, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 7826, - "nodeType": "ContractDefinition", - "src": "530:4305:27", - "nodes": [ - { - "id": 7350, - "nodeType": "ErrorDefinition", - "src": "730:49:27", - "nodes": [], - "documentation": { - "id": 7348, - "nodeType": "StructuredDocumentation", - "src": "601:126:27", - "text": "---------------------------------------------------\n Errors\n ---------------------------------------------------" - }, - "name": "ChainlinkPriceOracle2_InconsistentLength", - "nameLocation": "736:40:27", - "parameters": { - "id": 7349, - "nodeType": "ParameterList", - "parameters": [], - "src": "776:2:27" - } - }, - { - "id": 7352, - "nodeType": "ErrorDefinition", - "src": "782:43:27", - "nodes": [], - "name": "ChainlinkPriceOracle2_InvalidPrice", - "nameLocation": "788:34:27", - "parameters": { - "id": 7351, - "nodeType": "ParameterList", - "parameters": [], - "src": "822:2:27" - } - }, - { - "id": 7354, - "nodeType": "ErrorDefinition", - "src": "828:39:27", - "nodes": [], - "name": "ChainlinkPriceOracle2_NoSource", - "nameLocation": "834:30:27", - "parameters": { - "id": 7353, - "nodeType": "ParameterList", - "parameters": [], - "src": "864:2:27" - } - }, - { - "id": 7356, - "nodeType": "ErrorDefinition", - "src": "870:48:27", - "nodes": [], - "name": "ChainlinkPriceOracle2_SourceExistedPair", - "nameLocation": "876:39:27", - "parameters": { - "id": 7355, - "nodeType": "ParameterList", - "parameters": [], - "src": "915:2:27" - } - }, - { - "id": 7358, - "nodeType": "ErrorDefinition", - "src": "921:46:27", - "nodes": [], - "name": "ChainlinkPriceOracle2_SourceOverLimit", - "nameLocation": "927:37:27", - "parameters": { - "id": 7357, - "nodeType": "ParameterList", - "parameters": [], - "src": "964:2:27" - } - }, - { - "id": 7368, - "nodeType": "VariableDeclaration", - "src": "1166:99:27", - "nodes": [], - "constant": false, - "documentation": { - "id": 7359, - "nodeType": "StructuredDocumentation", - "src": "971:192:27", - "text": "---------------------------------------------------\n Configurable variables\n ---------------------------------------------------\n @dev Mapping from token0, token1 to sources" - }, - "functionSelector": "790a33fc", - "mutability": "mutable", - "name": "priceFeeds", - "nameLocation": "1255:10:27", - "scope": 7826, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$_$_$", - "typeString": "mapping(address => mapping(address => mapping(uint256 => contract AggregatorV3Interface)))" - }, - "typeName": { - "id": 7367, - "keyType": { - "id": 7360, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1174:7:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "1166:81:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$_$_$", - "typeString": "mapping(address => mapping(address => mapping(uint256 => contract AggregatorV3Interface)))" - }, - "valueType": { - "id": 7366, - "keyType": { - "id": 7361, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1193:7:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "1185:61:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$_$", - "typeString": "mapping(address => mapping(uint256 => contract AggregatorV3Interface))" - }, - "valueType": { - "id": 7365, - "keyType": { - "id": 7362, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1212:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Mapping", - "src": "1204:41:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$", - "typeString": "mapping(uint256 => contract AggregatorV3Interface)" - }, - "valueType": { - "id": 7364, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 7363, - "name": "AggregatorV3Interface", - "nodeType": "IdentifierPath", - "referencedDeclaration": 45, - "src": "1223:21:27" - }, - "referencedDeclaration": 45, - "src": "1223:21:27", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - } - } - } - }, - "visibility": "public" - }, - { - "id": 7374, - "nodeType": "VariableDeclaration", - "src": "1269:69:27", - "nodes": [], - "constant": false, - "functionSelector": "fe23ce53", - "mutability": "mutable", - "name": "priceFeedCount", - "nameLocation": "1324:14:27", - "scope": 7826, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - }, - "typeName": { - "id": 7373, - "keyType": { - "id": 7369, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1277:7:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "1269:47:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - }, - "valueType": { - "id": 7372, - "keyType": { - "id": 7370, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1296:7:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "1288:27:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - }, - "valueType": { - "id": 7371, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1307:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - }, - "visibility": "public" - }, - { - "id": 7384, - "nodeType": "EventDefinition", - "src": "1343:100:27", - "nodes": [], - "anonymous": false, - "name": "SetPriceFeed", - "nameLocation": "1349:12:27", - "parameters": { - "id": 7383, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7376, - "indexed": true, - "mutability": "mutable", - "name": "token0", - "nameLocation": "1378:6:27", - "nodeType": "VariableDeclaration", - "scope": 7384, - "src": "1362:22:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7375, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1362:7:27", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7378, - "indexed": true, - "mutability": "mutable", - "name": "token1", - "nameLocation": "1402:6:27", - "nodeType": "VariableDeclaration", - "scope": 7384, - "src": "1386:22:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7377, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1386:7:27", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7382, - "indexed": false, - "mutability": "mutable", - "name": "sources", - "nameLocation": "1434:7:27", - "nodeType": "VariableDeclaration", - "scope": 7384, - "src": "1410:31:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_AggregatorV3Interface_$45_$dyn_memory_ptr", - "typeString": "contract AggregatorV3Interface[]" - }, - "typeName": { - "baseType": { - "id": 7380, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 7379, - "name": "AggregatorV3Interface", - "nodeType": "IdentifierPath", - "referencedDeclaration": 45, - "src": "1410:21:27" - }, - "referencedDeclaration": 45, - "src": "1410:21:27", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "id": 7381, - "nodeType": "ArrayTypeName", - "src": "1410:23:27", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_AggregatorV3Interface_$45_$dyn_storage_ptr", - "typeString": "contract AggregatorV3Interface[]" - } - }, - "visibility": "internal" - } - ], - "src": "1361:81:27" - } - }, - { - "id": 7395, - "nodeType": "FunctionDefinition", - "src": "1447:89:27", - "nodes": [], - "body": { - "id": 7394, - "nodeType": "Block", - "src": "1490:46:27", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 7389, - "name": "OwnableUpgradeable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 177, - "src": "1496:18:27", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnableUpgradeable_$177_$", - "typeString": "type(contract OwnableUpgradeable)" - } - }, - "id": 7391, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "__Ownable_init", - "nodeType": "MemberAccess", - "referencedDeclaration": 72, - "src": "1496:33:27", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", - "typeString": "function ()" - } - }, - "id": 7392, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1496:35:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7393, - "nodeType": "ExpressionStatement", - "src": "1496:35:27" - } - ] - }, - "functionSelector": "8129fc1c", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 7387, - "kind": "modifierInvocation", - "modifierName": { - "id": 7386, - "name": "initializer", - "nodeType": "IdentifierPath", - "referencedDeclaration": 248, - "src": "1478:11:27" - }, - "nodeType": "ModifierInvocation", - "src": "1478:11:27" - } - ], - "name": "initialize", - "nameLocation": "1456:10:27", - "parameters": { - "id": 7385, - "nodeType": "ParameterList", - "parameters": [], - "src": "1466:2:27" - }, - "returnParameters": { - "id": 7388, - "nodeType": "ParameterList", - "parameters": [], - "src": "1490:0:27" - }, - "scope": 7826, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 7453, - "nodeType": "FunctionDefinition", - "src": "1738:447:27", - "nodes": [], - "body": { - "id": 7452, - "nodeType": "Block", - "src": "1899:286:27", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 7422, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7416, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 7412, - "name": "token0s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7399, - "src": "1922:7:27", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[] calldata" - } - }, - "id": 7413, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1922:14:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "id": 7414, - "name": "token1s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7402, - "src": "1940:7:27", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[] calldata" - } - }, - "id": 7415, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1940:14:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1922:32:27", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7421, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 7417, - "name": "token0s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7399, - "src": "1958:7:27", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[] calldata" - } - }, - "id": 7418, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1958:14:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "id": 7419, - "name": "allSources", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7407, - "src": "1976:10:27", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_contract$_AggregatorV3Interface_$45_$dyn_calldata_ptr_$dyn_calldata_ptr", - "typeString": "contract AggregatorV3Interface[] calldata[] calldata" - } - }, - "id": 7420, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1976:17:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1958:35:27", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "1922:71:27", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7426, - "nodeType": "IfStatement", - "src": "1918:132:27", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 7423, - "name": "ChainlinkPriceOracle2_InconsistentLength", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7350, - "src": "2008:40:27", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 7424, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2008:42:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7425, - "nodeType": "RevertStatement", - "src": "2001:49:27" - } - }, - { - "body": { - "id": 7450, - "nodeType": "Block", - "src": "2108:73:27", - "statements": [ - { - "expression": { - "arguments": [ - { - "baseExpression": { - "id": 7439, - "name": "token0s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7399, - "src": "2130:7:27", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[] calldata" - } - }, - "id": 7441, - "indexExpression": { - "id": 7440, - "name": "idx", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7428, - "src": "2138:3:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2130:12:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "baseExpression": { - "id": 7442, - "name": "token1s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7402, - "src": "2144:7:27", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[] calldata" - } - }, - "id": 7444, - "indexExpression": { - "id": 7443, - "name": "idx", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7428, - "src": "2152:3:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2144:12:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "baseExpression": { - "id": 7445, - "name": "allSources", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7407, - "src": "2158:10:27", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_contract$_AggregatorV3Interface_$45_$dyn_calldata_ptr_$dyn_calldata_ptr", - "typeString": "contract AggregatorV3Interface[] calldata[] calldata" - } - }, - "id": 7447, - "indexExpression": { - "id": 7446, - "name": "idx", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7428, - "src": "2169:3:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2158:15:27", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_AggregatorV3Interface_$45_$dyn_calldata_ptr", - "typeString": "contract AggregatorV3Interface[] calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_array$_t_contract$_AggregatorV3Interface_$45_$dyn_calldata_ptr", - "typeString": "contract AggregatorV3Interface[] calldata" - } - ], - "id": 7438, - "name": "_setPriceFeed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7525, - "src": "2116:13:27", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_contract$_AggregatorV3Interface_$45_$dyn_memory_ptr_$returns$__$", - "typeString": "function (address,address,contract AggregatorV3Interface[] memory)" - } - }, - "id": 7448, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2116:58:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7449, - "nodeType": "ExpressionStatement", - "src": "2116:58:27" - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7434, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7431, - "name": "idx", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7428, - "src": "2079:3:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "expression": { - "id": 7432, - "name": "token0s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7399, - "src": "2085:7:27", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[] calldata" - } - }, - "id": 7433, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "src": "2085:14:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2079:20:27", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7451, - "initializationExpression": { - "assignments": [ - 7428 - ], - "declarations": [ - { - "constant": false, - "id": 7428, - "mutability": "mutable", - "name": "idx", - "nameLocation": "2070:3:27", - "nodeType": "VariableDeclaration", - "scope": 7451, - "src": "2062:11:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7427, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2062:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 7430, - "initialValue": { - "hexValue": "30", - "id": 7429, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2076:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2062:15:27" - }, - "loopExpression": { - "expression": { - "id": 7436, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2101:5:27", - "subExpression": { - "id": 7435, - "name": "idx", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7428, - "src": "2101:3:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7437, - "nodeType": "ExpressionStatement", - "src": "2101:5:27" - }, - "nodeType": "ForStatement", - "src": "2057:124:27" - } - ] - }, - "documentation": { - "id": 7396, - "nodeType": "StructuredDocumentation", - "src": "1540:195:27", - "text": "@dev Set sources for multiple token pairs\n @param token0s Token0 address to set source\n @param token1s Token1 address to set source\n @param allSources source for the token pair" - }, - "functionSelector": "6fee810c", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 7410, - "kind": "modifierInvocation", - "modifierName": { - "id": 7409, - "name": "onlyOwner", - "nodeType": "IdentifierPath", - "referencedDeclaration": 91, - "src": "1889:9:27" - }, - "nodeType": "ModifierInvocation", - "src": "1889:9:27" - } - ], - "name": "setPriceFeeds", - "nameLocation": "1747:13:27", - "parameters": { - "id": 7408, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7399, - "mutability": "mutable", - "name": "token0s", - "nameLocation": "1785:7:27", - "nodeType": "VariableDeclaration", - "scope": 7453, - "src": "1766:26:27", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 7397, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1766:7:27", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 7398, - "nodeType": "ArrayTypeName", - "src": "1766:9:27", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7402, - "mutability": "mutable", - "name": "token1s", - "nameLocation": "1817:7:27", - "nodeType": "VariableDeclaration", - "scope": 7453, - "src": "1798:26:27", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 7400, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1798:7:27", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 7401, - "nodeType": "ArrayTypeName", - "src": "1798:9:27", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7407, - "mutability": "mutable", - "name": "allSources", - "nameLocation": "1865:10:27", - "nodeType": "VariableDeclaration", - "scope": 7453, - "src": "1830:45:27", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_contract$_AggregatorV3Interface_$45_$dyn_calldata_ptr_$dyn_calldata_ptr", - "typeString": "contract AggregatorV3Interface[][]" - }, - "typeName": { - "baseType": { - "baseType": { - "id": 7404, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 7403, - "name": "AggregatorV3Interface", - "nodeType": "IdentifierPath", - "referencedDeclaration": 45, - "src": "1830:21:27" - }, - "referencedDeclaration": 45, - "src": "1830:21:27", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "id": 7405, - "nodeType": "ArrayTypeName", - "src": "1830:23:27", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_AggregatorV3Interface_$45_$dyn_storage_ptr", - "typeString": "contract AggregatorV3Interface[]" - } - }, - "id": 7406, - "nodeType": "ArrayTypeName", - "src": "1830:25:27", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_array$_t_contract$_AggregatorV3Interface_$45_$dyn_storage_$dyn_storage_ptr", - "typeString": "contract AggregatorV3Interface[][]" - } - }, - "visibility": "internal" - } - ], - "src": "1760:119:27" - }, - "returnParameters": { - "id": 7411, - "nodeType": "ParameterList", - "parameters": [], - "src": "1899:0:27" - }, - "scope": 7826, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 7525, - "nodeType": "FunctionDefinition", - "src": "2375:542:27", - "nodes": [], - "body": { - "id": 7524, - "nodeType": "Block", - "src": "2495:422:27", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7471, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "baseExpression": { - "id": 7465, - "name": "priceFeedCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7374, - "src": "2518:14:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - } - }, - "id": 7467, - "indexExpression": { - "id": 7466, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7458, - "src": "2533:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2518:22:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 7469, - "indexExpression": { - "id": 7468, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7456, - "src": "2541:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2518:30:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 7470, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2551:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2518:34:27", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7475, - "nodeType": "IfStatement", - "src": "2514:88:27", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 7472, - "name": "ChainlinkPriceOracle2_SourceExistedPair", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7356, - "src": "2561:39:27", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 7473, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2561:41:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7474, - "nodeType": "RevertStatement", - "src": "2554:48:27" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7479, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 7476, - "name": "sources", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7462, - "src": "2612:7:27", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_AggregatorV3Interface_$45_$dyn_memory_ptr", - "typeString": "contract AggregatorV3Interface[] memory" - } - }, - "id": 7477, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "src": "2612:14:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "32", - "id": 7478, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2629:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "2612:18:27", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7483, - "nodeType": "IfStatement", - "src": "2608:70:27", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 7480, - "name": "ChainlinkPriceOracle2_SourceOverLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7358, - "src": "2639:37:27", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 7481, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2639:39:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7482, - "nodeType": "RevertStatement", - "src": "2632:46:27" - } - }, - { - "expression": { - "id": 7491, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "baseExpression": { - "id": 7484, - "name": "priceFeedCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7374, - "src": "2699:14:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - } - }, - "id": 7487, - "indexExpression": { - "id": 7485, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7456, - "src": "2714:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2699:22:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 7488, - "indexExpression": { - "id": 7486, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7458, - "src": "2722:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2699:30:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 7489, - "name": "sources", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7462, - "src": "2732:7:27", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_AggregatorV3Interface_$45_$dyn_memory_ptr", - "typeString": "contract AggregatorV3Interface[] memory" - } - }, - "id": 7490, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "src": "2732:14:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2699:47:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7492, - "nodeType": "ExpressionStatement", - "src": "2699:47:27" - }, - { - "body": { - "id": 7516, - "nodeType": "Block", - "src": "2803:61:27", - "statements": [ - { - "expression": { - "id": 7514, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "baseExpression": { - "baseExpression": { - "id": 7504, - "name": "priceFeeds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7368, - "src": "2811:10:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$_$_$", - "typeString": "mapping(address => mapping(address => mapping(uint256 => contract AggregatorV3Interface)))" - } - }, - "id": 7508, - "indexExpression": { - "id": 7505, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7456, - "src": "2822:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2811:18:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$_$", - "typeString": "mapping(address => mapping(uint256 => contract AggregatorV3Interface))" - } - }, - "id": 7509, - "indexExpression": { - "id": 7506, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7458, - "src": "2830:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2811:26:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$", - "typeString": "mapping(uint256 => contract AggregatorV3Interface)" - } - }, - "id": 7510, - "indexExpression": { - "id": 7507, - "name": "idx", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7494, - "src": "2838:3:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2811:31:27", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "baseExpression": { - "id": 7511, - "name": "sources", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7462, - "src": "2845:7:27", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_AggregatorV3Interface_$45_$dyn_memory_ptr", - "typeString": "contract AggregatorV3Interface[] memory" - } - }, - "id": 7513, - "indexExpression": { - "id": 7512, - "name": "idx", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7494, - "src": "2853:3:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2845:12:27", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "src": "2811:46:27", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "id": 7515, - "nodeType": "ExpressionStatement", - "src": "2811:46:27" - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7500, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7497, - "name": "idx", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7494, - "src": "2774:3:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "expression": { - "id": 7498, - "name": "sources", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7462, - "src": "2780:7:27", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_AggregatorV3Interface_$45_$dyn_memory_ptr", - "typeString": "contract AggregatorV3Interface[] memory" - } - }, - "id": 7499, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "src": "2780:14:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2774:20:27", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7517, - "initializationExpression": { - "assignments": [ - 7494 - ], - "declarations": [ - { - "constant": false, - "id": 7494, - "mutability": "mutable", - "name": "idx", - "nameLocation": "2765:3:27", - "nodeType": "VariableDeclaration", - "scope": 7517, - "src": "2757:11:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7493, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2757:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 7496, - "initialValue": { - "hexValue": "30", - "id": 7495, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2771:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2757:15:27" - }, - "loopExpression": { - "expression": { - "id": 7502, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2796:5:27", - "subExpression": { - "id": 7501, - "name": "idx", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7494, - "src": "2796:3:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7503, - "nodeType": "ExpressionStatement", - "src": "2796:5:27" - }, - "nodeType": "ForStatement", - "src": "2752:112:27" - }, - { - "eventCall": { - "arguments": [ - { - "id": 7519, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7456, - "src": "2888:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 7520, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7458, - "src": "2896:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 7521, - "name": "sources", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7462, - "src": "2904:7:27", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_AggregatorV3Interface_$45_$dyn_memory_ptr", - "typeString": "contract AggregatorV3Interface[] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_array$_t_contract$_AggregatorV3Interface_$45_$dyn_memory_ptr", - "typeString": "contract AggregatorV3Interface[] memory" - } - ], - "id": 7518, - "name": "SetPriceFeed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7384, - "src": "2875:12:27", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_array$_t_contract$_AggregatorV3Interface_$45_$dyn_memory_ptr_$returns$__$", - "typeString": "function (address,address,contract AggregatorV3Interface[] memory)" - } - }, - "id": 7522, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2875:37:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7523, - "nodeType": "EmitStatement", - "src": "2870:42:27" - } - ] - }, - "documentation": { - "id": 7454, - "nodeType": "StructuredDocumentation", - "src": "2189:183:27", - "text": "@dev Set source for the token pair\n @param token0 Token0 address to set source\n @param token1 Token1 address to set source\n @param sources source for the token pair" - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_setPriceFeed", - "nameLocation": "2384:13:27", - "parameters": { - "id": 7463, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7456, - "mutability": "mutable", - "name": "token0", - "nameLocation": "2411:6:27", - "nodeType": "VariableDeclaration", - "scope": 7525, - "src": "2403:14:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7455, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2403:7:27", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7458, - "mutability": "mutable", - "name": "token1", - "nameLocation": "2431:6:27", - "nodeType": "VariableDeclaration", - "scope": 7525, - "src": "2423:14:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7457, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2423:7:27", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7462, - "mutability": "mutable", - "name": "sources", - "nameLocation": "2474:7:27", - "nodeType": "VariableDeclaration", - "scope": 7525, - "src": "2443:38:27", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_AggregatorV3Interface_$45_$dyn_memory_ptr", - "typeString": "contract AggregatorV3Interface[]" - }, - "typeName": { - "baseType": { - "id": 7460, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 7459, - "name": "AggregatorV3Interface", - "nodeType": "IdentifierPath", - "referencedDeclaration": 45, - "src": "2443:21:27" - }, - "referencedDeclaration": 45, - "src": "2443:21:27", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "id": 7461, - "nodeType": "ArrayTypeName", - "src": "2443:23:27", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_AggregatorV3Interface_$45_$dyn_storage_ptr", - "typeString": "contract AggregatorV3Interface[]" - } - }, - "visibility": "internal" - } - ], - "src": "2397:88:27" - }, - "returnParameters": { - "id": 7464, - "nodeType": "ParameterList", - "parameters": [], - "src": "2495:0:27" - }, - "scope": 7826, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "id": 7825, - "nodeType": "FunctionDefinition", - "src": "3084:1749:27", - "nodes": [], - "body": { - "id": 7824, - "nodeType": "Block", - "src": "3184:1649:27", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 7552, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7544, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "baseExpression": { - "id": 7538, - "name": "priceFeedCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7374, - "src": "3194:14:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - } - }, - "id": 7540, - "indexExpression": { - "id": 7539, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7528, - "src": "3209:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3194:22:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 7542, - "indexExpression": { - "id": 7541, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7530, - "src": "3217:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3194:30:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 7543, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3228:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3194:35:27", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7551, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "baseExpression": { - "id": 7545, - "name": "priceFeedCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7374, - "src": "3233:14:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - } - }, - "id": 7547, - "indexExpression": { - "id": 7546, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7530, - "src": "3248:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3233:22:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 7549, - "indexExpression": { - "id": 7548, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7528, - "src": "3256:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3233:30:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 7550, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3267:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3233:35:27", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3194:74:27", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7556, - "nodeType": "IfStatement", - "src": "3190:125:27", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 7553, - "name": "ChainlinkPriceOracle2_NoSource", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7354, - "src": "3283:30:27", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 7554, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3283:32:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7555, - "nodeType": "RevertStatement", - "src": "3276:39:27" - } - }, - { - "assignments": [ - 7558 - ], - "declarations": [ - { - "constant": false, - "id": 7558, - "mutability": "mutable", - "name": "_answer1", - "nameLocation": "3329:8:27", - "nodeType": "VariableDeclaration", - "scope": 7824, - "src": "3322:15:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 7557, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "3322:6:27", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - } - ], - "id": 7560, - "initialValue": { - "hexValue": "30", - "id": 7559, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3340:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "3322:19:27" - }, - { - "assignments": [ - 7562 - ], - "declarations": [ - { - "constant": false, - "id": 7562, - "mutability": "mutable", - "name": "_lastUpdate1", - "nameLocation": "3355:12:27", - "nodeType": "VariableDeclaration", - "scope": 7824, - "src": "3347:20:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7561, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3347:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 7564, - "initialValue": { - "hexValue": "30", - "id": 7563, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3370:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "3347:24:27" - }, - { - "assignments": [ - 7566 - ], - "declarations": [ - { - "constant": false, - "id": 7566, - "mutability": "mutable", - "name": "_answer2", - "nameLocation": "3384:8:27", - "nodeType": "VariableDeclaration", - "scope": 7824, - "src": "3377:15:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 7565, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "3377:6:27", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - } - ], - "id": 7568, - "initialValue": { - "hexValue": "30", - "id": 7567, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3395:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "3377:19:27" - }, - { - "assignments": [ - 7570 - ], - "declarations": [ - { - "constant": false, - "id": 7570, - "mutability": "mutable", - "name": "_lastUpdate2", - "nameLocation": "3410:12:27", - "nodeType": "VariableDeclaration", - "scope": 7824, - "src": "3402:20:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7569, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3402:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 7572, - "initialValue": { - "hexValue": "30", - "id": 7571, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3425:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "3402:24:27" - }, - { - "assignments": [ - 7574 - ], - "declarations": [ - { - "constant": false, - "id": 7574, - "mutability": "mutable", - "name": "_decimals", - "nameLocation": "3440:9:27", - "nodeType": "VariableDeclaration", - "scope": 7824, - "src": "3432:17:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7573, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3432:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 7576, - "initialValue": { - "hexValue": "30", - "id": 7575, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3452:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "3432:21:27" - }, - { - "assignments": [ - 7578 - ], - "declarations": [ - { - "constant": false, - "id": 7578, - "mutability": "mutable", - "name": "_price1", - "nameLocation": "3467:7:27", - "nodeType": "VariableDeclaration", - "scope": 7824, - "src": "3459:15:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7577, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3459:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 7580, - "initialValue": { - "hexValue": "30", - "id": 7579, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3477:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "3459:19:27" - }, - { - "assignments": [ - 7582 - ], - "declarations": [ - { - "constant": false, - "id": 7582, - "mutability": "mutable", - "name": "_price2", - "nameLocation": "3492:7:27", - "nodeType": "VariableDeclaration", - "scope": 7824, - "src": "3484:15:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7581, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3484:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 7584, - "initialValue": { - "hexValue": "30", - "id": 7583, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3502:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "3484:19:27" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7591, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "baseExpression": { - "id": 7585, - "name": "priceFeedCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7374, - "src": "3514:14:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - } - }, - "id": 7587, - "indexExpression": { - "id": 7586, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7528, - "src": "3529:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3514:22:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 7589, - "indexExpression": { - "id": 7588, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7530, - "src": "3537:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3514:30:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7590, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3548:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3514:35:27", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7708, - "nodeType": "IfStatement", - "src": "3510:693:27", - "trueBody": { - "id": 7707, - "nodeType": "Block", - "src": "3551:652:27", - "statements": [ - { - "expression": { - "id": 7604, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - null, - { - "id": 7592, - "name": "_answer1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7558, - "src": "3562:8:27", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - null, - { - "id": 7593, - "name": "_lastUpdate1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7562, - "src": "3574:12:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - null - ], - "id": 7594, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "3559:30:27", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$_t_int256_$__$_t_uint256_$__$", - "typeString": "tuple(,int256,,uint256,)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "baseExpression": { - "baseExpression": { - "baseExpression": { - "id": 7595, - "name": "priceFeeds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7368, - "src": "3592:10:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$_$_$", - "typeString": "mapping(address => mapping(address => mapping(uint256 => contract AggregatorV3Interface)))" - } - }, - "id": 7597, - "indexExpression": { - "id": 7596, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7528, - "src": "3603:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3592:18:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$_$", - "typeString": "mapping(address => mapping(uint256 => contract AggregatorV3Interface))" - } - }, - "id": 7599, - "indexExpression": { - "id": 7598, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7530, - "src": "3611:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3592:26:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$", - "typeString": "mapping(uint256 => contract AggregatorV3Interface)" - } - }, - "id": 7601, - "indexExpression": { - "hexValue": "30", - "id": 7600, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3619:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3592:29:27", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "id": 7602, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "latestRoundData", - "nodeType": "MemberAccess", - "referencedDeclaration": 44, - "src": "3592:45:27", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$", - "typeString": "function () view external returns (uint80,int256,uint256,uint256,uint80)" - } - }, - "id": 7603, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3592:47:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$", - "typeString": "tuple(uint80,int256,uint256,uint256,uint80)" - } - }, - "src": "3559:80:27", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7605, - "nodeType": "ExpressionStatement", - "src": "3559:80:27" - }, - { - "expression": { - "id": 7619, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7606, - "name": "_decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7574, - "src": "3647:9:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "baseExpression": { - "baseExpression": { - "baseExpression": { - "id": 7609, - "name": "priceFeeds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7368, - "src": "3667:10:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$_$_$", - "typeString": "mapping(address => mapping(address => mapping(uint256 => contract AggregatorV3Interface)))" - } - }, - "id": 7611, - "indexExpression": { - "id": 7610, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7528, - "src": "3678:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3667:18:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$_$", - "typeString": "mapping(address => mapping(uint256 => contract AggregatorV3Interface))" - } - }, - "id": 7613, - "indexExpression": { - "id": 7612, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7530, - "src": "3686:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3667:26:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$", - "typeString": "mapping(uint256 => contract AggregatorV3Interface)" - } - }, - "id": 7615, - "indexExpression": { - "hexValue": "30", - "id": 7614, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3694:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3667:29:27", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "id": 7616, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "decimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 6, - "src": "3667:38:27", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", - "typeString": "function () view external returns (uint8)" - } - }, - "id": 7617, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3667:40:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 7608, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3659:7:27", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 7607, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3659:7:27", - "typeDescriptions": {} - } - }, - "id": 7618, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3659:49:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3647:61:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7620, - "nodeType": "ExpressionStatement", - "src": "3647:61:27" - }, - { - "expression": { - "id": 7634, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7621, - "name": "_price1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7578, - "src": "3716:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7633, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7627, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 7624, - "name": "_answer1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7558, - "src": "3735:8:27", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 7623, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3727:7:27", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 7622, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3727:7:27", - "typeDescriptions": {} - } - }, - "id": 7625, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3727:17:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "31653138", - "id": 7626, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3747:4:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_1000000000000000000_by_1", - "typeString": "int_const 1000000000000000000" - }, - "value": "1e18" - }, - "src": "3727:24:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7628, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3726:26:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7631, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "hexValue": "3130", - "id": 7629, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3756:2:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "nodeType": "BinaryOperation", - "operator": "**", - "rightExpression": { - "id": 7630, - "name": "_decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7574, - "src": "3760:9:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3756:13:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7632, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3755:15:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3726:44:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3716:54:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7635, - "nodeType": "ExpressionStatement", - "src": "3716:54:27" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7642, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "baseExpression": { - "id": 7636, - "name": "priceFeedCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7374, - "src": "3783:14:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - } - }, - "id": 7638, - "indexExpression": { - "id": 7637, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7528, - "src": "3798:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3783:22:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 7640, - "indexExpression": { - "id": 7639, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7530, - "src": "3806:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3783:30:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "32", - "id": 7641, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3817:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "3783:35:27", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7702, - "nodeType": "IfStatement", - "src": "3779:379:27", - "trueBody": { - "id": 7701, - "nodeType": "Block", - "src": "3820:338:27", - "statements": [ - { - "expression": { - "id": 7655, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - null, - { - "id": 7643, - "name": "_answer2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7566, - "src": "3833:8:27", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - null, - { - "id": 7644, - "name": "_lastUpdate2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7570, - "src": "3845:12:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - null - ], - "id": 7645, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "3830:30:27", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$_t_int256_$__$_t_uint256_$__$", - "typeString": "tuple(,int256,,uint256,)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "baseExpression": { - "baseExpression": { - "baseExpression": { - "id": 7646, - "name": "priceFeeds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7368, - "src": "3863:10:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$_$_$", - "typeString": "mapping(address => mapping(address => mapping(uint256 => contract AggregatorV3Interface)))" - } - }, - "id": 7648, - "indexExpression": { - "id": 7647, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7528, - "src": "3874:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3863:18:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$_$", - "typeString": "mapping(address => mapping(uint256 => contract AggregatorV3Interface))" - } - }, - "id": 7650, - "indexExpression": { - "id": 7649, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7530, - "src": "3882:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3863:26:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$", - "typeString": "mapping(uint256 => contract AggregatorV3Interface)" - } - }, - "id": 7652, - "indexExpression": { - "hexValue": "31", - "id": 7651, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3890:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3863:29:27", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "id": 7653, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "latestRoundData", - "nodeType": "MemberAccess", - "referencedDeclaration": 44, - "src": "3863:45:27", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$", - "typeString": "function () view external returns (uint80,int256,uint256,uint256,uint80)" - } - }, - "id": 7654, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3863:47:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$", - "typeString": "tuple(uint80,int256,uint256,uint256,uint80)" - } - }, - "src": "3830:80:27", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7656, - "nodeType": "ExpressionStatement", - "src": "3830:80:27" - }, - { - "expression": { - "id": 7670, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7657, - "name": "_decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7574, - "src": "3920:9:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "baseExpression": { - "baseExpression": { - "baseExpression": { - "id": 7660, - "name": "priceFeeds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7368, - "src": "3940:10:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$_$_$", - "typeString": "mapping(address => mapping(address => mapping(uint256 => contract AggregatorV3Interface)))" - } - }, - "id": 7662, - "indexExpression": { - "id": 7661, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7528, - "src": "3951:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3940:18:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$_$", - "typeString": "mapping(address => mapping(uint256 => contract AggregatorV3Interface))" - } - }, - "id": 7664, - "indexExpression": { - "id": 7663, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7530, - "src": "3959:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3940:26:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$", - "typeString": "mapping(uint256 => contract AggregatorV3Interface)" - } - }, - "id": 7666, - "indexExpression": { - "hexValue": "31", - "id": 7665, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3967:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3940:29:27", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "id": 7667, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "decimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 6, - "src": "3940:38:27", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", - "typeString": "function () view external returns (uint8)" - } - }, - "id": 7668, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3940:40:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 7659, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3932:7:27", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 7658, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3932:7:27", - "typeDescriptions": {} - } - }, - "id": 7669, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3932:49:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3920:61:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7671, - "nodeType": "ExpressionStatement", - "src": "3920:61:27" - }, - { - "expression": { - "id": 7685, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7672, - "name": "_price2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7582, - "src": "3991:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7684, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7678, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 7675, - "name": "_answer2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7566, - "src": "4010:8:27", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 7674, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4002:7:27", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 7673, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4002:7:27", - "typeDescriptions": {} - } - }, - "id": 7676, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4002:17:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "31653138", - "id": 7677, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4022:4:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_1000000000000000000_by_1", - "typeString": "int_const 1000000000000000000" - }, - "value": "1e18" - }, - "src": "4002:24:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7679, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4001:26:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7682, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "hexValue": "3130", - "id": 7680, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4031:2:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "nodeType": "BinaryOperation", - "operator": "**", - "rightExpression": { - "id": 7681, - "name": "_decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7574, - "src": "4035:9:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4031:13:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7683, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4030:15:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4001:44:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3991:54:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7686, - "nodeType": "ExpressionStatement", - "src": "3991:54:27" - }, - { - "expression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7692, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7689, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7687, - "name": "_price1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7578, - "src": "4064:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "31653138", - "id": 7688, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4074:4:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_1000000000000000000_by_1", - "typeString": "int_const 1000000000000000000" - }, - "value": "1e18" - }, - "src": "4064:14:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7690, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4063:16:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 7691, - "name": "_price2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7582, - "src": "4082:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4063:26:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7695, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7693, - "name": "_lastUpdate2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7570, - "src": "4091:12:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 7694, - "name": "_lastUpdate1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7562, - "src": "4106:12:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4091:27:27", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "id": 7697, - "name": "_lastUpdate1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7562, - "src": "4136:12:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7698, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "4091:57:27", - "trueExpression": { - "id": 7696, - "name": "_lastUpdate2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7570, - "src": "4121:12:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7699, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4062:87:27", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "functionReturnParameters": 7537, - "id": 7700, - "nodeType": "Return", - "src": "4055:94:27" - } - ] - } - }, - { - "expression": { - "components": [ - { - "id": 7703, - "name": "_price1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7578, - "src": "4174:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 7704, - "name": "_lastUpdate1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7562, - "src": "4183:12:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7705, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4173:23:27", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "functionReturnParameters": 7537, - "id": 7706, - "nodeType": "Return", - "src": "4166:30:27" - } - ] - } - }, - { - "expression": { - "id": 7721, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - null, - { - "id": 7709, - "name": "_answer1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7558, - "src": "4212:8:27", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - null, - { - "id": 7710, - "name": "_lastUpdate1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7562, - "src": "4224:12:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - null - ], - "id": 7711, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "4209:30:27", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$_t_int256_$__$_t_uint256_$__$", - "typeString": "tuple(,int256,,uint256,)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "baseExpression": { - "baseExpression": { - "baseExpression": { - "id": 7712, - "name": "priceFeeds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7368, - "src": "4242:10:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$_$_$", - "typeString": "mapping(address => mapping(address => mapping(uint256 => contract AggregatorV3Interface)))" - } - }, - "id": 7714, - "indexExpression": { - "id": 7713, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7530, - "src": "4253:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4242:18:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$_$", - "typeString": "mapping(address => mapping(uint256 => contract AggregatorV3Interface))" - } - }, - "id": 7716, - "indexExpression": { - "id": 7715, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7528, - "src": "4261:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4242:26:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$", - "typeString": "mapping(uint256 => contract AggregatorV3Interface)" - } - }, - "id": 7718, - "indexExpression": { - "hexValue": "30", - "id": 7717, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4269:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4242:29:27", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "id": 7719, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "latestRoundData", - "nodeType": "MemberAccess", - "referencedDeclaration": 44, - "src": "4242:45:27", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$", - "typeString": "function () view external returns (uint80,int256,uint256,uint256,uint80)" - } - }, - "id": 7720, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4242:47:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$", - "typeString": "tuple(uint80,int256,uint256,uint256,uint80)" - } - }, - "src": "4209:80:27", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7722, - "nodeType": "ExpressionStatement", - "src": "4209:80:27" - }, - { - "expression": { - "id": 7736, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7723, - "name": "_decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7574, - "src": "4295:9:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "baseExpression": { - "baseExpression": { - "baseExpression": { - "id": 7726, - "name": "priceFeeds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7368, - "src": "4315:10:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$_$_$", - "typeString": "mapping(address => mapping(address => mapping(uint256 => contract AggregatorV3Interface)))" - } - }, - "id": 7728, - "indexExpression": { - "id": 7727, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7530, - "src": "4326:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4315:18:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$_$", - "typeString": "mapping(address => mapping(uint256 => contract AggregatorV3Interface))" - } - }, - "id": 7730, - "indexExpression": { - "id": 7729, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7528, - "src": "4334:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4315:26:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$", - "typeString": "mapping(uint256 => contract AggregatorV3Interface)" - } - }, - "id": 7732, - "indexExpression": { - "hexValue": "30", - "id": 7731, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4342:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4315:29:27", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "id": 7733, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "decimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 6, - "src": "4315:38:27", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", - "typeString": "function () view external returns (uint8)" - } - }, - "id": 7734, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4315:40:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 7725, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4307:7:27", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 7724, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4307:7:27", - "typeDescriptions": {} - } - }, - "id": 7735, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4307:49:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4295:61:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7737, - "nodeType": "ExpressionStatement", - "src": "4295:61:27" - }, - { - "expression": { - "id": 7751, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7738, - "name": "_price1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7578, - "src": "4362:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7750, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7744, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7741, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "hexValue": "3130", - "id": 7739, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4374:2:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "nodeType": "BinaryOperation", - "operator": "**", - "rightExpression": { - "id": 7740, - "name": "_decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7574, - "src": "4378:9:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4374:13:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7742, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4373:15:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "31653138", - "id": 7743, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4391:4:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_1000000000000000000_by_1", - "typeString": "int_const 1000000000000000000" - }, - "value": "1e18" - }, - "src": "4373:22:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7745, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4372:24:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "arguments": [ - { - "id": 7748, - "name": "_answer1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7558, - "src": "4407:8:27", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 7747, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4399:7:27", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 7746, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4399:7:27", - "typeDescriptions": {} - } - }, - "id": 7749, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4399:17:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4372:44:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4362:54:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7752, - "nodeType": "ExpressionStatement", - "src": "4362:54:27" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7759, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "baseExpression": { - "id": 7753, - "name": "priceFeedCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7374, - "src": "4427:14:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - } - }, - "id": 7755, - "indexExpression": { - "id": 7754, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7530, - "src": "4442:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4427:22:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 7757, - "indexExpression": { - "id": 7756, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7528, - "src": "4450:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4427:30:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "32", - "id": 7758, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4461:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "4427:35:27", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7819, - "nodeType": "IfStatement", - "src": "4423:369:27", - "trueBody": { - "id": 7818, - "nodeType": "Block", - "src": "4464:328:27", - "statements": [ - { - "expression": { - "id": 7772, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - null, - { - "id": 7760, - "name": "_answer2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7566, - "src": "4475:8:27", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - null, - { - "id": 7761, - "name": "_lastUpdate2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7570, - "src": "4487:12:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - null - ], - "id": 7762, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "4472:30:27", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$_t_int256_$__$_t_uint256_$__$", - "typeString": "tuple(,int256,,uint256,)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "baseExpression": { - "baseExpression": { - "baseExpression": { - "id": 7763, - "name": "priceFeeds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7368, - "src": "4505:10:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$_$_$", - "typeString": "mapping(address => mapping(address => mapping(uint256 => contract AggregatorV3Interface)))" - } - }, - "id": 7765, - "indexExpression": { - "id": 7764, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7530, - "src": "4516:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4505:18:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$_$", - "typeString": "mapping(address => mapping(uint256 => contract AggregatorV3Interface))" - } - }, - "id": 7767, - "indexExpression": { - "id": 7766, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7528, - "src": "4524:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4505:26:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$", - "typeString": "mapping(uint256 => contract AggregatorV3Interface)" - } - }, - "id": 7769, - "indexExpression": { - "hexValue": "31", - "id": 7768, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4532:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4505:29:27", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "id": 7770, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "latestRoundData", - "nodeType": "MemberAccess", - "referencedDeclaration": 44, - "src": "4505:45:27", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$", - "typeString": "function () view external returns (uint80,int256,uint256,uint256,uint80)" - } - }, - "id": 7771, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4505:47:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$", - "typeString": "tuple(uint80,int256,uint256,uint256,uint80)" - } - }, - "src": "4472:80:27", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7773, - "nodeType": "ExpressionStatement", - "src": "4472:80:27" - }, - { - "expression": { - "id": 7787, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7774, - "name": "_decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7574, - "src": "4560:9:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "baseExpression": { - "baseExpression": { - "baseExpression": { - "id": 7777, - "name": "priceFeeds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7368, - "src": "4580:10:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$_$_$", - "typeString": "mapping(address => mapping(address => mapping(uint256 => contract AggregatorV3Interface)))" - } - }, - "id": 7779, - "indexExpression": { - "id": 7778, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7530, - "src": "4591:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4580:18:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$_$", - "typeString": "mapping(address => mapping(uint256 => contract AggregatorV3Interface))" - } - }, - "id": 7781, - "indexExpression": { - "id": 7780, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7528, - "src": "4599:6:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4580:26:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_contract$_AggregatorV3Interface_$45_$", - "typeString": "mapping(uint256 => contract AggregatorV3Interface)" - } - }, - "id": 7783, - "indexExpression": { - "hexValue": "31", - "id": 7782, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4607:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4580:29:27", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "id": 7784, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "decimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 6, - "src": "4580:38:27", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", - "typeString": "function () view external returns (uint8)" - } - }, - "id": 7785, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4580:40:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 7776, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4572:7:27", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 7775, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4572:7:27", - "typeDescriptions": {} - } - }, - "id": 7786, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4572:49:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4560:61:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7788, - "nodeType": "ExpressionStatement", - "src": "4560:61:27" - }, - { - "expression": { - "id": 7802, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7789, - "name": "_price2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7582, - "src": "4629:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7801, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7795, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7792, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "hexValue": "3130", - "id": 7790, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4641:2:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "nodeType": "BinaryOperation", - "operator": "**", - "rightExpression": { - "id": 7791, - "name": "_decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7574, - "src": "4645:9:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4641:13:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7793, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4640:15:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "31653138", - "id": 7794, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4658:4:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_1000000000000000000_by_1", - "typeString": "int_const 1000000000000000000" - }, - "value": "1e18" - }, - "src": "4640:22:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7796, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4639:24:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "arguments": [ - { - "id": 7799, - "name": "_answer2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7566, - "src": "4674:8:27", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 7798, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4666:7:27", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 7797, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4666:7:27", - "typeDescriptions": {} - } - }, - "id": 7800, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4666:17:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4639:44:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4629:54:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7803, - "nodeType": "ExpressionStatement", - "src": "4629:54:27" - }, - { - "expression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7809, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7806, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7804, - "name": "_price1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7578, - "src": "4700:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "31653138", - "id": 7805, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4710:4:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_1000000000000000000_by_1", - "typeString": "int_const 1000000000000000000" - }, - "value": "1e18" - }, - "src": "4700:14:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7807, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4699:16:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 7808, - "name": "_price2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7582, - "src": "4718:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4699:26:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7812, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7810, - "name": "_lastUpdate2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7570, - "src": "4727:12:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 7811, - "name": "_lastUpdate1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7562, - "src": "4742:12:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4727:27:27", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "id": 7814, - "name": "_lastUpdate1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7562, - "src": "4772:12:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7815, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "4727:57:27", - "trueExpression": { - "id": 7813, - "name": "_lastUpdate2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7570, - "src": "4757:12:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7816, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4698:87:27", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "functionReturnParameters": 7537, - "id": 7817, - "nodeType": "Return", - "src": "4691:94:27" - } - ] - } - }, - { - "expression": { - "components": [ - { - "id": 7820, - "name": "_price1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7578, - "src": "4806:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 7821, - "name": "_lastUpdate1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7562, - "src": "4815:12:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7822, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4805:23:27", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "functionReturnParameters": 7537, - "id": 7823, - "nodeType": "Return", - "src": "4798:30:27" - } - ] - }, - "baseFunctions": [ - 5853 - ], - "documentation": { - "id": 7526, - "nodeType": "StructuredDocumentation", - "src": "2921:160:27", - "text": "@dev Return the price of token0/token1, multiplied by 1e18\n @param token0 Token0 to set oracle sources\n @param token1 Token1 to set oracle sources" - }, - "functionSelector": "ac41865a", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getPrice", - "nameLocation": "3093:8:27", - "overrides": { - "id": 7532, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "3148:8:27" - }, - "parameters": { - "id": 7531, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7528, - "mutability": "mutable", - "name": "token0", - "nameLocation": "3110:6:27", - "nodeType": "VariableDeclaration", - "scope": 7825, - "src": "3102:14:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7527, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3102:7:27", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7530, - "mutability": "mutable", - "name": "token1", - "nameLocation": "3126:6:27", - "nodeType": "VariableDeclaration", - "scope": 7825, - "src": "3118:14:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7529, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3118:7:27", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "3101:32:27" - }, - "returnParameters": { - "id": 7537, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7534, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 7825, - "src": "3166:7:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7533, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3166:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7536, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 7825, - "src": "3175:7:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7535, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3175:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3165:18:27" - }, - "scope": 7826, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - } - ], - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 7344, - "name": "OwnableUpgradeable", - "nodeType": "IdentifierPath", - "referencedDeclaration": 177, - "src": "564:18:27" - }, - "id": 7345, - "nodeType": "InheritanceSpecifier", - "src": "564:18:27" - }, - { - "baseName": { - "id": 7346, - "name": "IPriceOracle", - "nodeType": "IdentifierPath", - "referencedDeclaration": 5854, - "src": "584:12:27" - }, - "id": 7347, - "nodeType": "InheritanceSpecifier", - "src": "584:12:27" - } - ], - "canonicalName": "ChainlinkPriceOracle2", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "linearizedBaseContracts": [ - 7826, - 5854, - 177, - 1777, - 346 - ], - "name": "ChainlinkPriceOracle2", - "nameLocation": "539:21:27", - "scope": 7827, - "usedErrors": [ - 7350, - 7352, - 7354, - 7356, - 7358 - ] - } - ], - "license": "MIT" - }, - "id": 27 -} \ No newline at end of file diff --git a/script/deployments/ChainLinkOracle2/deploy/ChainlinkPriceOracle2.s.sol b/script/deployments/ChainLinkOracle2/deploy/ChainlinkPriceOracle2.s.sol deleted file mode 100644 index 3476f88a..00000000 --- a/script/deployments/ChainLinkOracle2/deploy/ChainlinkPriceOracle2.s.sol +++ /dev/null @@ -1,48 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.19; - -import "../../../BaseScript.sol"; - -import { TransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; - -contract DeployChainlinkPriceOracle2Script is BaseScript { - using stdJson for string; - - function run() public { - /* - ░██╗░░░░░░░██╗░█████╗░██████╗░███╗░░██╗██╗███╗░░██╗░██████╗░ - ░██║░░██╗░░██║██╔══██╗██╔══██╗████╗░██║██║████╗░██║██╔════╝░ - ░╚██╗████╗██╔╝███████║██████╔╝██╔██╗██║██║██╔██╗██║██║░░██╗░ - ░░████╔═████║░██╔══██║██╔══██╗██║╚████║██║██║╚████║██║░░╚██╗ - ░░╚██╔╝░╚██╔╝░██║░░██║██║░░██║██║░╚███║██║██║░╚███║╚██████╔╝ - ░░░╚═╝░░░╚═╝░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝╚═╝╚═╝░░╚══╝░╚═════╝░ - Check all variables below before execute the deployment script - */ - - bytes memory _logicBytecode = abi.encodePacked( - vm.getCode("./script/deployments/ChainLinkOracle2/deploy/ChainlinkPriceOracle2.json") - ); - - bytes memory data = abi.encodeWithSelector(bytes4(keccak256("initialize()"))); - - address _chainLinkPriceOracle2Implementation; - _startDeployerBroadcast(); - - // deploy implementation - assembly { - _chainLinkPriceOracle2Implementation := create(0, add(_logicBytecode, 0x20), mload(_logicBytecode)) - if iszero(extcodesize(_chainLinkPriceOracle2Implementation)) { - revert(0, 0) - } - } - - // deploy proxy - address proxy = address( - new TransparentUpgradeableProxy(_chainLinkPriceOracle2Implementation, proxyAdminAddress, data) - ); - _stopBroadcast(); - - console.log("_chainLinkPriceOracle2Implementation", _chainLinkPriceOracle2Implementation); - console.log("_chainLinkPriceOracle2Proxy", proxy); - } -} diff --git a/solidity/contracts/oracle/ChainLinkPriceOracle2.sol b/solidity/contracts/oracle/ChainLinkPriceOracle2.sol deleted file mode 100644 index 1c0b8a93..00000000 --- a/solidity/contracts/oracle/ChainLinkPriceOracle2.sol +++ /dev/null @@ -1,142 +0,0 @@ -// SPDX-License-Identifier: BUSL -/** - ∩~~~~∩ - ξ ・×・ ξ - ξ ~ ξ - ξ   ξ - ξ   “~~~~〇 - ξ       ξ - ξ ξ ξ~~~ξ ξ ξ -  ξ_ξξ_ξ ξ_ξξ_ξ -Alpaca Fin Corporation -*/ -pragma solidity 0.8.19; - -import { OwnableUpgradeable } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; - -import { IChainLinkPriceOracle2 } from "./interfaces/IChainLinkPriceOracle2.sol"; -import { IAggregatorV3 } from "./interfaces/IAggregatorV3.sol"; - -contract ChainLinkPriceOracle2 is OwnableUpgradeable, IChainLinkPriceOracle2 { - /// --------------------------------------------------- - /// Errors - /// --------------------------------------------------- - error ChainlinkPriceOracle_InconsistentLength(); - error ChainlinkPriceOracle_InvalidPrice(); - error ChainlinkPriceOracle_NoSource(); - error ChainlinkPriceOracle_SourceExistedPair(); - error ChainlinkPriceOracle_SourceOverLimit(); - - /// --------------------------------------------------- - /// State - /// --------------------------------------------------- - /// @dev Mapping from token0, token1 to sources - mapping(address => mapping(address => mapping(uint256 => IAggregatorV3))) public priceFeeds; - mapping(address => mapping(address => uint256)) public priceFeedCount; - - /// --------------------------------------------------- - /// Event - /// --------------------------------------------------- - event LogSetPriceFeed(address indexed token0, address indexed token1, IAggregatorV3[] sources); - - constructor() { - _disableInitializers(); - } - - function initialize() external initializer { - OwnableUpgradeable.__Ownable_init(); - } - - /// @dev Set sources for multiple token pairs - /// @param token0s Token0 address to set source - /// @param token1s Token1 address to set source - /// @param allSources source for the token pair - function setPriceFeeds( - address[] calldata token0s, - address[] calldata token1s, - IAggregatorV3[][] calldata allSources - ) external onlyOwner { - // Check - if (token0s.length != token1s.length || token0s.length != allSources.length) - revert ChainlinkPriceOracle_InconsistentLength(); - - for (uint256 _i; _i < token0s.length; ) { - _setPriceFeed(token0s[_i], token1s[_i], allSources[_i]); - unchecked { - ++_i; - } - } - } - - /// @dev Set source for the token pair - /// @param token0 Token0 address to set source - /// @param token1 Token1 address to set source - /// @param sources source for the token pair - function _setPriceFeed( - address token0, - address token1, - IAggregatorV3[] memory sources - ) internal { - // Check - if (priceFeedCount[token1][token0] > 0) revert ChainlinkPriceOracle_SourceExistedPair(); - if (sources.length > 2) revert ChainlinkPriceOracle_SourceOverLimit(); - - // Effect - priceFeedCount[token0][token1] = sources.length; - for (uint256 _i; _i < sources.length; ) { - priceFeeds[token0][token1][_i] = sources[_i]; - unchecked { - ++_i; - } - } - - emit LogSetPriceFeed(token0, token1, sources); - } - - /// @dev Return the price of token0/token1, multiplied by 1e18 - /// @param token0 Token0 to set oracle sources - /// @param token1 Token1 to set oracle sources - function getPrice(address token0, address token1) public view override returns (uint256, uint256) { - if (uint256(priceFeedCount[token0][token1]) == 0 && uint256(priceFeedCount[token1][token0]) == 0) - revert ChainlinkPriceOracle_NoSource(); - - uint256 _price1 = 0; - uint256 _price2 = 0; - uint256 _lastUpdate1 = 0; - uint256 _lastUpdate2 = 0; - - if (priceFeedCount[token0][token1] != 0) { - (_price1, _lastUpdate1) = _extractPriceFeeds(token0, token1, 0, false); - if (priceFeedCount[token0][token1] == 2) { - (_price2, _lastUpdate2) = _extractPriceFeeds(token0, token1, 1, false); - return ((_price1 * 1e18) / _price2, _lastUpdate2 < _lastUpdate1 ? _lastUpdate2 : _lastUpdate1); - } - return (_price1, _lastUpdate1); - } - - (_price1, _lastUpdate1) = _extractPriceFeeds(token1, token0, 0, true); - if (priceFeedCount[token1][token0] == 2) { - (_price2, _lastUpdate2) = _extractPriceFeeds(token1, token0, 1, true); - return ((_price1 * 1e18) / _price2, _lastUpdate2 < _lastUpdate1 ? _lastUpdate2 : _lastUpdate1); - } - - return (_price1, _lastUpdate1); - } - - function _extractPriceFeeds( - address token0, - address token1, - uint8 index, - bool reversedPair - ) internal view returns (uint256, uint256) { - IAggregatorV3 priceFeed = priceFeeds[token0][token1][index]; - (, int256 answer, , uint256 lastUpdate, ) = priceFeed.latestRoundData(); - uint256 decimals = uint256(priceFeed.decimals()); - - uint256 price = reversedPair - ? ((10**decimals) * 1e18) / uint256(answer) - : ((uint256(answer) * 1e18) / (10**decimals)); - - return (price, lastUpdate); - } -} diff --git a/solidity/contracts/upgradable/AdminUpgradeabilityProxy.sol b/solidity/contracts/upgradable/AdminUpgradeabilityProxy.sol deleted file mode 100644 index cc7afe63..00000000 --- a/solidity/contracts/upgradable/AdminUpgradeabilityProxy.sol +++ /dev/null @@ -1,485 +0,0 @@ -// SPDX-License-Identifier: MIT -// File: MasterChef/contracts-proxy/Proxy.sol - -pragma solidity ^0.6.0; - -/** - * @title Proxy - * @dev Implements delegation of calls to other contracts, with proper - * forwarding of return values and bubbling of failures. - * It defines a fallback function that delegates all calls to the address - * returned by the abstract _implementation() internal function. - */ -abstract contract Proxy { - /** - * @dev Fallback function. - * Implemented entirely in `_fallback`. - */ - fallback() external payable { - _fallback(); - } - - /** - * @dev Receive function. - * Implemented entirely in `_fallback`. - */ - receive() external payable { - _fallback(); - } - - /** - * @return The Address of the implementation. - */ - function _implementation() internal view virtual returns (address); - - /** - * @dev Delegates execution to an implementation contract. - * This is a low level function that doesn't return to its internal call site. - * It will return to the external caller whatever the implementation returns. - * @param implementation Address to delegate. - */ - function _delegate(address implementation) internal { - assembly { - // Copy msg.data. We take full control of memory in this inline assembly - // block because it will not return to Solidity code. We overwrite the - // Solidity scratch pad at memory position 0. - calldatacopy(0, 0, calldatasize()) - - // Call the implementation. - // out and outsize are 0 because we don't know the size yet. - let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0) - - // Copy the returned data. - returndatacopy(0, 0, returndatasize()) - - switch result - // delegatecall returns 0 on error. - case 0 { - revert(0, returndatasize()) - } - default { - return(0, returndatasize()) - } - } - } - - /** - * @dev Function that is run as the first thing in the fallback function. - * Can be redefined in derived contracts to add functionality. - * Redefinitions must call super._willFallback(). - */ - function _willFallback() internal virtual {} - - /** - * @dev fallback implementation. - * Extracted to enable manual triggering. - */ - function _fallback() internal { - _willFallback(); - _delegate(_implementation()); - } -} - -// File: @openzeppelin/contracts/utils/Address.sol - -pragma solidity >=0.6.2 <0.8.0; - -/** - * @dev Collection of functions related to the address type - */ -library Address { - /** - * @dev Returns true if `account` is a contract. - * - * [IMPORTANT] - * ==== - * It is unsafe to assume that an address for which this function returns - * false is an externally-owned account (EOA) and not a contract. - * - * Among others, `isContract` will return false for the following - * types of addresses: - * - * - an externally-owned account - * - a contract in construction - * - an address where a contract will be created - * - an address where a contract lived, but was destroyed - * ==== - */ - function isContract(address account) internal view returns (bool) { - // This method relies on extcodesize, which returns 0 for contracts in - // construction, since the code is only stored at the end of the - // constructor execution. - - uint256 size; - // solhint-disable-next-line no-inline-assembly - assembly { - size := extcodesize(account) - } - return size > 0; - } - - /** - * @dev Replacement for Solidity's `transfer`: sends `amount` wei to - * `recipient`, forwarding all available gas and reverting on errors. - * - * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost - * of certain opcodes, possibly making contracts go over the 2300 gas limit - * imposed by `transfer`, making them unable to receive funds via - * `transfer`. {sendValue} removes this limitation. - * - * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. - * - * IMPORTANT: because control is transferred to `recipient`, care must be - * taken to not create reentrancy vulnerabilities. Consider using - * {ReentrancyGuard} or the - * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. - */ - function sendValue(address payable recipient, uint256 amount) internal { - require(address(this).balance >= amount, "Address: insufficient balance"); - - // solhint-disable-next-line avoid-low-level-calls, avoid-call-value - (bool success, ) = recipient.call{ value: amount }(""); - require(success, "Address: unable to send value, recipient may have reverted"); - } - - /** - * @dev Performs a Solidity function call using a low level `call`. A - * plain`call` is an unsafe replacement for a function call: use this - * function instead. - * - * If `target` reverts with a revert reason, it is bubbled up by this - * function (like regular Solidity function calls). - * - * Returns the raw returned data. To convert to the expected return value, - * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. - * - * Requirements: - * - * - `target` must be a contract. - * - calling `target` with `data` must not revert. - * - * _Available since v3.1._ - */ - function functionCall(address target, bytes memory data) internal returns (bytes memory) { - return functionCall(target, data, "Address: low-level call failed"); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with - * `errorMessage` as a fallback revert reason when `target` reverts. - * - * _Available since v3.1._ - */ - function functionCall( - address target, - bytes memory data, - string memory errorMessage - ) internal returns (bytes memory) { - return functionCallWithValue(target, data, 0, errorMessage); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], - * but also transferring `value` wei to `target`. - * - * Requirements: - * - * - the calling contract must have an ETH balance of at least `value`. - * - the called Solidity function must be `payable`. - * - * _Available since v3.1._ - */ - function functionCallWithValue( - address target, - bytes memory data, - uint256 value - ) internal returns (bytes memory) { - return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); - } - - /** - * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but - * with `errorMessage` as a fallback revert reason when `target` reverts. - * - * _Available since v3.1._ - */ - function functionCallWithValue( - address target, - bytes memory data, - uint256 value, - string memory errorMessage - ) internal returns (bytes memory) { - require(address(this).balance >= value, "Address: insufficient balance for call"); - require(isContract(target), "Address: call to non-contract"); - - // solhint-disable-next-line avoid-low-level-calls - (bool success, bytes memory returndata) = target.call{ value: value }(data); - return _verifyCallResult(success, returndata, errorMessage); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], - * but performing a static call. - * - * _Available since v3.3._ - */ - function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { - return functionStaticCall(target, data, "Address: low-level static call failed"); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], - * but performing a static call. - * - * _Available since v3.3._ - */ - function functionStaticCall( - address target, - bytes memory data, - string memory errorMessage - ) internal view returns (bytes memory) { - require(isContract(target), "Address: static call to non-contract"); - - // solhint-disable-next-line avoid-low-level-calls - (bool success, bytes memory returndata) = target.staticcall(data); - return _verifyCallResult(success, returndata, errorMessage); - } - - function _verifyCallResult( - bool success, - bytes memory returndata, - string memory errorMessage - ) private pure returns (bytes memory) { - if (success) { - return returndata; - } else { - // Look for revert reason and bubble it up if present - if (returndata.length > 0) { - // The easiest way to bubble the revert reason is using memory via assembly - - // solhint-disable-next-line no-inline-assembly - assembly { - let returndata_size := mload(returndata) - revert(add(32, returndata), returndata_size) - } - } else { - revert(errorMessage); - } - } - } -} - -// File: MasterChef/contracts-proxy/UpgradeabilityProxy.sol - -pragma solidity ^0.6.0; - -/** - * @title UpgradeabilityProxy - * @dev This contract implements a proxy that allows to change the - * implementation address to which it will delegate. - * Such a change is called an implementation upgrade. - */ -contract UpgradeabilityProxy is Proxy { - /** - * @dev Contract constructor. - * @param _logic Address of the initial implementation. - * @param _data Data to send as msg.data to the implementation to initialize the proxied contract. - * It should include the signature and the parameters of the function to be called, as described in - * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. - * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. - */ - constructor(address _logic, bytes memory _data) public payable { - assert(IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1)); - _setImplementation(_logic); - if (_data.length > 0) { - (bool success, ) = _logic.delegatecall(_data); - require(success); - } - } - - /** - * @dev Emitted when the implementation is upgraded. - * @param implementation Address of the new implementation. - */ - event Upgraded(address indexed implementation); - - /** - * @dev Storage slot with the address of the current implementation. - * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is - * validated in the constructor. - */ - bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; - - /** - * @dev Returns the current implementation. - * @return impl Address of the current implementation - */ - function _implementation() internal view override returns (address impl) { - bytes32 slot = IMPLEMENTATION_SLOT; - assembly { - impl := sload(slot) - } - } - - /** - * @dev Upgrades the proxy to a new implementation. - * @param newImplementation Address of the new implementation. - */ - function _upgradeTo(address newImplementation) internal { - _setImplementation(newImplementation); - emit Upgraded(newImplementation); - } - - /** - * @dev Sets the implementation address of the proxy. - * @param newImplementation Address of the new implementation. - */ - function _setImplementation(address newImplementation) internal { - require(Address.isContract(newImplementation), "Cannot set a proxy implementation to a non-contract address"); - - bytes32 slot = IMPLEMENTATION_SLOT; - - assembly { - sstore(slot, newImplementation) - } - } -} - -// File: MasterChef/contracts-proxy/AdminUpgradeabilityProxy.sol - -pragma solidity ^0.6.0; - -/** - * @title AdminUpgradeabilityProxy - * @dev This contract combines an upgradeability proxy with an authorization - * mechanism for administrative tasks. - * All external functions in this contract must be guarded by the - * `ifAdmin` modifier. See ethereum/solidity#3864 for a Solidity - * feature proposal that would enable this to be done automatically. - */ -contract AdminUpgradeabilityProxy is UpgradeabilityProxy { - /** - * Contract constructor. - * @param _logic address of the initial implementation. - * @param _admin Address of the proxy administrator. - * @param _data Data to send as msg.data to the implementation to initialize the proxied contract. - * It should include the signature and the parameters of the function to be called, as described in - * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. - * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. - */ - constructor( - address _logic, - address _admin, - bytes memory _data - ) public payable UpgradeabilityProxy(_logic, _data) { - assert(ADMIN_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1)); - _setAdmin(_admin); - } - - /** - * @dev Emitted when the administration has been transferred. - * @param previousAdmin Address of the previous admin. - * @param newAdmin Address of the new admin. - */ - event AdminChanged(address previousAdmin, address newAdmin); - - /** - * @dev Storage slot with the admin of the contract. - * This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1, and is - * validated in the constructor. - */ - - bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103; - - /** - * @dev Modifier to check whether the `msg.sender` is the admin. - * If it is, it will run the function. Otherwise, it will delegate the call - * to the implementation. - */ - modifier ifAdmin() { - if (msg.sender == _admin()) { - _; - } else { - _fallback(); - } - } - - /** - * @return The address of the proxy admin. - */ - function admin() external ifAdmin returns (address) { - return _admin(); - } - - /** - * @return The address of the implementation. - */ - function implementation() external ifAdmin returns (address) { - return _implementation(); - } - - /** - * @dev Changes the admin of the proxy. - * Only the current admin can call this function. - * @param newAdmin Address to transfer proxy administration to. - */ - function changeAdmin(address newAdmin) external ifAdmin { - require(newAdmin != address(0), "Cannot change the admin of a proxy to the zero address"); - emit AdminChanged(_admin(), newAdmin); - _setAdmin(newAdmin); - } - - /** - * @dev Upgrade the backing implementation of the proxy. - * Only the admin can call this function. - * @param newImplementation Address of the new implementation. - */ - function upgradeTo(address newImplementation) external ifAdmin { - _upgradeTo(newImplementation); - } - - /** - * @dev Upgrade the backing implementation of the proxy and call a function - * on the new implementation. - * This is useful to initialize the proxied contract. - * @param newImplementation Address of the new implementation. - * @param data Data to send as msg.data in the low level call. - * It should include the signature and the parameters of the function to be called, as described in - * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. - */ - function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin { - _upgradeTo(newImplementation); - (bool success, ) = newImplementation.delegatecall(data); - require(success); - } - - /** - * @return adm The admin slot. - */ - function _admin() internal view returns (address adm) { - bytes32 slot = ADMIN_SLOT; - assembly { - adm := sload(slot) - } - } - - /** - * @dev Sets the address of the proxy admin. - * @param newAdmin Address of the new proxy admin. - */ - function _setAdmin(address newAdmin) internal { - bytes32 slot = ADMIN_SLOT; - - assembly { - sstore(slot, newAdmin) - } - } - - /** - * @dev Only fall back when the sender is not the admin. - */ - function _willFallback() internal virtual override { - require(msg.sender != _admin(), "Cannot call fallback function from the proxy admin"); - super._willFallback(); - } -} diff --git a/solidity/contracts/upgradable/ProxyAdmin.sol b/solidity/contracts/upgradable/ProxyAdmin.sol deleted file mode 100644 index b5c543f9..00000000 --- a/solidity/contracts/upgradable/ProxyAdmin.sol +++ /dev/null @@ -1,649 +0,0 @@ -// SPDX-License-Identifier: MIT -// File: @openzeppelin/contracts/GSN/Context.sol - -pragma solidity >=0.6.0 <0.8.0; - -/* - * @dev Provides information about the current execution context, including the - * sender of the transaction and its data. While these are generally available - * via msg.sender and msg.data, they should not be accessed in such a direct - * manner, since when dealing with GSN meta-transactions the account sending and - * paying for execution may not be the actual sender (as far as an application - * is concerned). - * - * This contract is only required for intermediate, library-like contracts. - */ -abstract contract Context { - function _msgSender() internal view virtual returns (address payable) { - return msg.sender; - } - - function _msgData() internal view virtual returns (bytes memory) { - this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 - return msg.data; - } -} - -// File: @openzeppelin/contracts/access/Ownable.sol - -pragma solidity >=0.6.0 <0.8.0; - -/** - * @dev Contract module which provides a basic access control mechanism, where - * there is an account (an owner) that can be granted exclusive access to - * specific functions. - * - * By default, the owner account will be the one that deploys the contract. This - * can later be changed with {transferOwnership}. - * - * This module is used through inheritance. It will make available the modifier - * `onlyOwner`, which can be applied to your functions to restrict their use to - * the owner. - */ -abstract contract Ownable is Context { - address private _owner; - - event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); - - /** - * @dev Initializes the contract setting the deployer as the initial owner. - */ - constructor() internal { - address msgSender = _msgSender(); - _owner = msgSender; - emit OwnershipTransferred(address(0), msgSender); - } - - /** - * @dev Returns the address of the current owner. - */ - function owner() public view returns (address) { - return _owner; - } - - /** - * @dev Throws if called by any account other than the owner. - */ - modifier onlyOwner() { - require(_owner == _msgSender(), "Ownable: caller is not the owner"); - _; - } - - /** - * @dev Leaves the contract without owner. It will not be possible to call - * `onlyOwner` functions anymore. Can only be called by the current owner. - * - * NOTE: Renouncing ownership will leave the contract without an owner, - * thereby removing any functionality that is only available to the owner. - */ - function renounceOwnership() public virtual onlyOwner { - emit OwnershipTransferred(_owner, address(0)); - _owner = address(0); - } - - /** - * @dev Transfers ownership of the contract to a new account (`newOwner`). - * Can only be called by the current owner. - */ - function transferOwnership(address newOwner) public virtual onlyOwner { - require(newOwner != address(0), "Ownable: new owner is the zero address"); - emit OwnershipTransferred(_owner, newOwner); - _owner = newOwner; - } -} - -// File: MasterChef/contracts-proxy/Proxy.sol - -pragma solidity ^0.6.0; - -/** - * @title Proxy - * @dev Implements delegation of calls to other contracts, with proper - * forwarding of return values and bubbling of failures. - * It defines a fallback function that delegates all calls to the address - * returned by the abstract _implementation() internal function. - */ -abstract contract Proxy { - /** - * @dev Fallback function. - * Implemented entirely in `_fallback`. - */ - fallback() external payable { - _fallback(); - } - - /** - * @dev Receive function. - * Implemented entirely in `_fallback`. - */ - receive() external payable { - _fallback(); - } - - /** - * @return The Address of the implementation. - */ - function _implementation() internal view virtual returns (address); - - /** - * @dev Delegates execution to an implementation contract. - * This is a low level function that doesn't return to its internal call site. - * It will return to the external caller whatever the implementation returns. - * @param implementation Address to delegate. - */ - function _delegate(address implementation) internal { - assembly { - // Copy msg.data. We take full control of memory in this inline assembly - // block because it will not return to Solidity code. We overwrite the - // Solidity scratch pad at memory position 0. - calldatacopy(0, 0, calldatasize()) - - // Call the implementation. - // out and outsize are 0 because we don't know the size yet. - let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0) - - // Copy the returned data. - returndatacopy(0, 0, returndatasize()) - - switch result - // delegatecall returns 0 on error. - case 0 { - revert(0, returndatasize()) - } - default { - return(0, returndatasize()) - } - } - } - - /** - * @dev Function that is run as the first thing in the fallback function. - * Can be redefined in derived contracts to add functionality. - * Redefinitions must call super._willFallback(). - */ - function _willFallback() internal virtual {} - - /** - * @dev fallback implementation. - * Extracted to enable manual triggering. - */ - function _fallback() internal { - _willFallback(); - _delegate(_implementation()); - } -} - -// File: @openzeppelin/contracts/utils/Address.sol - -pragma solidity >=0.6.2 <0.8.0; - -/** - * @dev Collection of functions related to the address type - */ -library Address { - /** - * @dev Returns true if `account` is a contract. - * - * [IMPORTANT] - * ==== - * It is unsafe to assume that an address for which this function returns - * false is an externally-owned account (EOA) and not a contract. - * - * Among others, `isContract` will return false for the following - * types of addresses: - * - * - an externally-owned account - * - a contract in construction - * - an address where a contract will be created - * - an address where a contract lived, but was destroyed - * ==== - */ - function isContract(address account) internal view returns (bool) { - // This method relies on extcodesize, which returns 0 for contracts in - // construction, since the code is only stored at the end of the - // constructor execution. - - uint256 size; - // solhint-disable-next-line no-inline-assembly - assembly { - size := extcodesize(account) - } - return size > 0; - } - - /** - * @dev Replacement for Solidity's `transfer`: sends `amount` wei to - * `recipient`, forwarding all available gas and reverting on errors. - * - * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost - * of certain opcodes, possibly making contracts go over the 2300 gas limit - * imposed by `transfer`, making them unable to receive funds via - * `transfer`. {sendValue} removes this limitation. - * - * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. - * - * IMPORTANT: because control is transferred to `recipient`, care must be - * taken to not create reentrancy vulnerabilities. Consider using - * {ReentrancyGuard} or the - * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. - */ - function sendValue(address payable recipient, uint256 amount) internal { - require(address(this).balance >= amount, "Address: insufficient balance"); - - // solhint-disable-next-line avoid-low-level-calls, avoid-call-value - (bool success, ) = recipient.call{ value: amount }(""); - require(success, "Address: unable to send value, recipient may have reverted"); - } - - /** - * @dev Performs a Solidity function call using a low level `call`. A - * plain`call` is an unsafe replacement for a function call: use this - * function instead. - * - * If `target` reverts with a revert reason, it is bubbled up by this - * function (like regular Solidity function calls). - * - * Returns the raw returned data. To convert to the expected return value, - * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. - * - * Requirements: - * - * - `target` must be a contract. - * - calling `target` with `data` must not revert. - * - * _Available since v3.1._ - */ - function functionCall(address target, bytes memory data) internal returns (bytes memory) { - return functionCall(target, data, "Address: low-level call failed"); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with - * `errorMessage` as a fallback revert reason when `target` reverts. - * - * _Available since v3.1._ - */ - function functionCall( - address target, - bytes memory data, - string memory errorMessage - ) internal returns (bytes memory) { - return functionCallWithValue(target, data, 0, errorMessage); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], - * but also transferring `value` wei to `target`. - * - * Requirements: - * - * - the calling contract must have an ETH balance of at least `value`. - * - the called Solidity function must be `payable`. - * - * _Available since v3.1._ - */ - function functionCallWithValue( - address target, - bytes memory data, - uint256 value - ) internal returns (bytes memory) { - return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); - } - - /** - * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but - * with `errorMessage` as a fallback revert reason when `target` reverts. - * - * _Available since v3.1._ - */ - function functionCallWithValue( - address target, - bytes memory data, - uint256 value, - string memory errorMessage - ) internal returns (bytes memory) { - require(address(this).balance >= value, "Address: insufficient balance for call"); - require(isContract(target), "Address: call to non-contract"); - - // solhint-disable-next-line avoid-low-level-calls - (bool success, bytes memory returndata) = target.call{ value: value }(data); - return _verifyCallResult(success, returndata, errorMessage); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], - * but performing a static call. - * - * _Available since v3.3._ - */ - function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { - return functionStaticCall(target, data, "Address: low-level static call failed"); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], - * but performing a static call. - * - * _Available since v3.3._ - */ - function functionStaticCall( - address target, - bytes memory data, - string memory errorMessage - ) internal view returns (bytes memory) { - require(isContract(target), "Address: static call to non-contract"); - - // solhint-disable-next-line avoid-low-level-calls - (bool success, bytes memory returndata) = target.staticcall(data); - return _verifyCallResult(success, returndata, errorMessage); - } - - function _verifyCallResult( - bool success, - bytes memory returndata, - string memory errorMessage - ) private pure returns (bytes memory) { - if (success) { - return returndata; - } else { - // Look for revert reason and bubble it up if present - if (returndata.length > 0) { - // The easiest way to bubble the revert reason is using memory via assembly - - // solhint-disable-next-line no-inline-assembly - assembly { - let returndata_size := mload(returndata) - revert(add(32, returndata), returndata_size) - } - } else { - revert(errorMessage); - } - } - } -} - -// File: MasterChef/contracts-proxy/UpgradeabilityProxy.sol - -pragma solidity ^0.6.0; - -/** - * @title UpgradeabilityProxy - * @dev This contract implements a proxy that allows to change the - * implementation address to which it will delegate. - * Such a change is called an implementation upgrade. - */ -contract UpgradeabilityProxy is Proxy { - /** - * @dev Contract constructor. - * @param _logic Address of the initial implementation. - * @param _data Data to send as msg.data to the implementation to initialize the proxied contract. - * It should include the signature and the parameters of the function to be called, as described in - * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. - * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. - */ - constructor(address _logic, bytes memory _data) public payable { - assert(IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1)); - _setImplementation(_logic); - if (_data.length > 0) { - (bool success, ) = _logic.delegatecall(_data); - require(success); - } - } - - /** - * @dev Emitted when the implementation is upgraded. - * @param implementation Address of the new implementation. - */ - event Upgraded(address indexed implementation); - - /** - * @dev Storage slot with the address of the current implementation. - * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is - * validated in the constructor. - */ - bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; - - /** - * @dev Returns the current implementation. - * @return impl Address of the current implementation - */ - function _implementation() internal view override returns (address impl) { - bytes32 slot = IMPLEMENTATION_SLOT; - assembly { - impl := sload(slot) - } - } - - /** - * @dev Upgrades the proxy to a new implementation. - * @param newImplementation Address of the new implementation. - */ - function _upgradeTo(address newImplementation) internal { - _setImplementation(newImplementation); - emit Upgraded(newImplementation); - } - - /** - * @dev Sets the implementation address of the proxy. - * @param newImplementation Address of the new implementation. - */ - function _setImplementation(address newImplementation) internal { - require(Address.isContract(newImplementation), "Cannot set a proxy implementation to a non-contract address"); - - bytes32 slot = IMPLEMENTATION_SLOT; - - assembly { - sstore(slot, newImplementation) - } - } -} - -// File: MasterChef/contracts-proxy/AdminUpgradeabilityProxy.sol - -pragma solidity ^0.6.0; - -/** - * @title AdminUpgradeabilityProxy - * @dev This contract combines an upgradeability proxy with an authorization - * mechanism for administrative tasks. - * All external functions in this contract must be guarded by the - * `ifAdmin` modifier. See ethereum/solidity#3864 for a Solidity - * feature proposal that would enable this to be done automatically. - */ -contract AdminUpgradeabilityProxy is UpgradeabilityProxy { - /** - * Contract constructor. - * @param _logic address of the initial implementation. - * @param _admin Address of the proxy administrator. - * @param _data Data to send as msg.data to the implementation to initialize the proxied contract. - * It should include the signature and the parameters of the function to be called, as described in - * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. - * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. - */ - constructor( - address _logic, - address _admin, - bytes memory _data - ) public payable UpgradeabilityProxy(_logic, _data) { - assert(ADMIN_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1)); - _setAdmin(_admin); - } - - /** - * @dev Emitted when the administration has been transferred. - * @param previousAdmin Address of the previous admin. - * @param newAdmin Address of the new admin. - */ - event AdminChanged(address previousAdmin, address newAdmin); - - /** - * @dev Storage slot with the admin of the contract. - * This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1, and is - * validated in the constructor. - */ - - bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103; - - /** - * @dev Modifier to check whether the `msg.sender` is the admin. - * If it is, it will run the function. Otherwise, it will delegate the call - * to the implementation. - */ - modifier ifAdmin() { - if (msg.sender == _admin()) { - _; - } else { - _fallback(); - } - } - - /** - * @return The address of the proxy admin. - */ - function admin() external ifAdmin returns (address) { - return _admin(); - } - - /** - * @return The address of the implementation. - */ - function implementation() external ifAdmin returns (address) { - return _implementation(); - } - - /** - * @dev Changes the admin of the proxy. - * Only the current admin can call this function. - * @param newAdmin Address to transfer proxy administration to. - */ - function changeAdmin(address newAdmin) external ifAdmin { - require(newAdmin != address(0), "Cannot change the admin of a proxy to the zero address"); - emit AdminChanged(_admin(), newAdmin); - _setAdmin(newAdmin); - } - - /** - * @dev Upgrade the backing implementation of the proxy. - * Only the admin can call this function. - * @param newImplementation Address of the new implementation. - */ - function upgradeTo(address newImplementation) external ifAdmin { - _upgradeTo(newImplementation); - } - - /** - * @dev Upgrade the backing implementation of the proxy and call a function - * on the new implementation. - * This is useful to initialize the proxied contract. - * @param newImplementation Address of the new implementation. - * @param data Data to send as msg.data in the low level call. - * It should include the signature and the parameters of the function to be called, as described in - * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. - */ - function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin { - _upgradeTo(newImplementation); - (bool success, ) = newImplementation.delegatecall(data); - require(success); - } - - /** - * @return adm The admin slot. - */ - function _admin() internal view returns (address adm) { - bytes32 slot = ADMIN_SLOT; - assembly { - adm := sload(slot) - } - } - - /** - * @dev Sets the address of the proxy admin. - * @param newAdmin Address of the new proxy admin. - */ - function _setAdmin(address newAdmin) internal { - bytes32 slot = ADMIN_SLOT; - - assembly { - sstore(slot, newAdmin) - } - } - - /** - * @dev Only fall back when the sender is not the admin. - */ - function _willFallback() internal virtual override { - require(msg.sender != _admin(), "Cannot call fallback function from the proxy admin"); - super._willFallback(); - } -} - -// File: MasterChef/contracts-proxy/ProxyAdmin.sol - -pragma solidity ^0.6.0; - -/** - * @title ProxyAdmin - * @dev This contract is the admin of a proxy, and is in charge - * of upgrading it as well as transferring it to another admin. - */ -contract ProxyAdmin is Ownable { - /** - * @dev Returns the current implementation of a proxy. - * This is needed because only the proxy admin can query it. - * @return The address of the current implementation of the proxy. - */ - function getProxyImplementation(AdminUpgradeabilityProxy proxy) public view returns (address) { - // We need to manually run the static call since the getter cannot be flagged as view - // bytes4(keccak256("implementation()")) == 0x5c60da1b - (bool success, bytes memory returndata) = address(proxy).staticcall(hex"5c60da1b"); - require(success); - return abi.decode(returndata, (address)); - } - - /** - * @dev Returns the admin of a proxy. Only the admin can query it. - * @return The address of the current admin of the proxy. - */ - function getProxyAdmin(AdminUpgradeabilityProxy proxy) public view returns (address) { - // We need to manually run the static call since the getter cannot be flagged as view - // bytes4(keccak256("admin()")) == 0xf851a440 - (bool success, bytes memory returndata) = address(proxy).staticcall(hex"f851a440"); - require(success); - return abi.decode(returndata, (address)); - } - - /** - * @dev Changes the admin of a proxy. - * @param proxy Proxy to change admin. - * @param newAdmin Address to transfer proxy administration to. - */ - function changeProxyAdmin(AdminUpgradeabilityProxy proxy, address newAdmin) public onlyOwner { - proxy.changeAdmin(newAdmin); - } - - /** - * @dev Upgrades a proxy to the newest implementation of a contract. - * @param proxy Proxy to be upgraded. - * @param implementation the address of the Implementation. - */ - function upgrade(AdminUpgradeabilityProxy proxy, address implementation) public onlyOwner { - proxy.upgradeTo(implementation); - } - - /** - * @dev Upgrades a proxy to the newest implementation of a contract and forwards a function call to it. - * This is useful to initialize the proxied contract. - * @param proxy Proxy to be upgraded. - * @param implementation Address of the Implementation. - * @param data Data to send as msg.data in the low level call. - * It should include the signature and the parameters of the function to be called, as described in - * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. - */ - function upgradeAndCall( - AdminUpgradeabilityProxy proxy, - address implementation, - bytes memory data - ) public payable onlyOwner { - proxy.upgradeToAndCall{ value: msg.value }(implementation, data); - } -} diff --git a/solidity/tests/base/BaseTest.sol b/solidity/tests/base/BaseTest.sol index 89fd206e..743aa804 100644 --- a/solidity/tests/base/BaseTest.sol +++ b/solidity/tests/base/BaseTest.sol @@ -20,7 +20,6 @@ import { InterestBearingToken } from "../../contracts/money-market/InterestBeari // oracle import { SimplePriceOracle } from "../../contracts/oracle/SimplePriceOracle.sol"; -import { ChainLinkPriceOracle2 } from "../../contracts/oracle/ChainLinkPriceOracle2.sol"; import { AlpacaV2Oracle, IAlpacaV2Oracle } from "../../contracts/oracle/AlpacaV2Oracle.sol"; import { OracleMedianizer } from "../../contracts/oracle/OracleMedianizer.sol"; @@ -138,7 +137,7 @@ contract BaseTest is DSTest, StdUtils, StdAssertions, StdCheats { // miniFL - _setupProxyAdmin(); + proxyAdmin = _setupProxyAdmin(); vm.label(DEPLOYER, "DEPLOYER"); vm.label(ALICE, "ALICE"); @@ -241,7 +240,7 @@ contract BaseTest is DSTest, StdUtils, StdAssertions, StdCheats { function _setupUpgradeable(bytes memory _logicBytecode, bytes memory _initializer) internal returns (address) { bytes memory _proxyBytecode = abi.encodePacked( - vm.getCode("./out/AdminUpgradeabilityProxy.sol/AdminUpgradeabilityProxy.json") + vm.getCode("./out/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json") ); address _logic; diff --git a/solidity/tests/oracle/Oracle_ChainLink2Test.t.sol b/solidity/tests/oracle/Oracle_ChainLink2Test.t.sol deleted file mode 100644 index ea54cac6..00000000 --- a/solidity/tests/oracle/Oracle_ChainLink2Test.t.sol +++ /dev/null @@ -1,122 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.19; - -import { BaseTest, console, MockERC20 } from "../base/BaseTest.sol"; - -import { ChainLinkPriceOracle2 } from "../../contracts/oracle/ChainLinkPriceOracle2.sol"; -import { IAggregatorV3 } from "../../contracts/oracle/interfaces/IAggregatorV3.sol"; -import { IPriceOracle } from "../../contracts/oracle/interfaces/IPriceOracle.sol"; -import { MockChainLinkAggregator } from "../mocks/MockChainLinkAggregator.sol"; - -contract Oracle_ChainLinkPriceOracleTest is BaseTest { - IAggregatorV3[] _fakeAggregatorWETHUSD; - IAggregatorV3[] _fakeAggregatorUSDCUSD; - IAggregatorV3[] _fakeAggregatorWETHUSDC; - - function setUp() public virtual { - _fakeAggregatorWETHUSD = new IAggregatorV3[](1); - _fakeAggregatorWETHUSD[0] = new MockChainLinkAggregator(1500e18, 18); - - _fakeAggregatorUSDCUSD = new IAggregatorV3[](1); - _fakeAggregatorUSDCUSD[0] = new MockChainLinkAggregator(1e18, 18); - - _fakeAggregatorWETHUSDC = new IAggregatorV3[](2); - _fakeAggregatorWETHUSDC[0] = new MockChainLinkAggregator(1500e18, 18); - _fakeAggregatorWETHUSDC[1] = new MockChainLinkAggregator(1e18, 18); - - ChainLinkPriceOracle2 chainLinkPriceOracle = new ChainLinkPriceOracle2(); - address oldOwner = chainLinkPriceOracle.owner(); - vm.prank(oldOwner); - chainLinkPriceOracle.transferOwnership(DEPLOYER); - - oracle = IPriceOracle(address(chainLinkPriceOracle)); - } - - function testCorrectness_NotOwner_setPriceFeed_shouldRevertCallerIsNotOwner() external { - address[] memory t0 = new address[](1); - t0[0] = address(weth); - - address[] memory t1 = new address[](1); - t1[0] = address(usd); - - IAggregatorV3[][] memory sources = new IAggregatorV3[][](1); - sources[0] = _fakeAggregatorWETHUSD; - - vm.startPrank(ALICE); - try ChainLinkPriceOracle2(address(oracle)).setPriceFeeds(t0, t1, sources) { - fail(); - } catch Error(string memory reason) { - assertEq(reason, "Ownable: caller is not the owner", "upgrade not owner"); - } - vm.stopPrank(); - } - - function testCorrectness_setPriceFeed_shouldPass() external { - address[] memory t0 = new address[](2); - t0[0] = address(weth); - t0[1] = address(usdc); - - address[] memory t1 = new address[](2); - t1[0] = address(usd); - t1[1] = address(usd); - - IAggregatorV3[][] memory sources = new IAggregatorV3[][](2); - - sources[0] = _fakeAggregatorWETHUSD; - sources[1] = _fakeAggregatorUSDCUSD; - - vm.prank(DEPLOYER); - ChainLinkPriceOracle2(address(oracle)).setPriceFeeds(t0, t1, sources); - - uint256 wethCount = ChainLinkPriceOracle2(address(oracle)).priceFeedCount(address(weth), address(usd)); - uint256 usdcCount = ChainLinkPriceOracle2(address(oracle)).priceFeedCount(address(usdc), address(usd)); - assertEq(wethCount, 1); - assertEq(usdcCount, 1); - } - - function testCorrectness_getPriceBeforeSet_shouldRevertNoSource() external { - address[] memory t0 = new address[](1); - t0[0] = address(weth); - - address[] memory t1 = new address[](1); - t1[0] = address(usdc); - - IAggregatorV3[][] memory sources = new IAggregatorV3[][](1); - sources[0] = _fakeAggregatorWETHUSD; - - vm.prank(DEPLOYER); - ChainLinkPriceOracle2(address(oracle)).setPriceFeeds(t0, t1, sources); - - vm.expectRevert(ChainLinkPriceOracle2.ChainlinkPriceOracle_NoSource.selector); - ChainLinkPriceOracle2(address(oracle)).getPrice(address(weth), address(usd)); - } - - function testCorrectness_getPrice_shouldPass() external { - address[] memory t0 = new address[](3); - t0[0] = address(weth); - t0[1] = address(usdc); - t0[2] = address(weth); - - address[] memory t1 = new address[](3); - t1[0] = address(usd); - t1[1] = address(usd); - t1[2] = address(usdc); - - IAggregatorV3[][] memory sources = new IAggregatorV3[][](3); - sources[0] = _fakeAggregatorWETHUSD; - sources[1] = _fakeAggregatorUSDCUSD; - sources[2] = _fakeAggregatorWETHUSDC; - - vm.prank(DEPLOYER); - ChainLinkPriceOracle2(address(oracle)).setPriceFeeds(t0, t1, sources); - - (uint256 wethPrice, ) = oracle.getPrice(address(weth), address(usd)); - assertEq(wethPrice, 1500 ether); - - (uint256 usdcPrice, ) = oracle.getPrice(address(usdc), address(usd)); - assertEq(usdcPrice, 1 ether); - - (uint256 wethUsdcPrice, ) = oracle.getPrice(address(weth), address(usdc)); - assertEq(wethUsdcPrice, 1500 ether); - } -} From afe6eb04adad2ecb46af3756ded8ef7eb13083cc Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Tue, 9 May 2023 16:54:35 +0700 Subject: [PATCH 55/87] test: add mock failed swap case --- .../smart-treasury/ISmartTreasury.sol | 3 - .../smart-treasury/SmartTreasury.sol | 65 +++++++---- solidity/tests/smart-treasury/BaseFork.sol | 61 +++++----- .../SmartTreasury_Distribute.t.sol | 106 +++++++++++++++-- .../SmartTreasury_SetConfigs.t.sol | 108 +++++++++++++++--- solidity/tests/utils/VM.sol | 14 +++ 6 files changed, 279 insertions(+), 78 deletions(-) diff --git a/solidity/contracts/smart-treasury/ISmartTreasury.sol b/solidity/contracts/smart-treasury/ISmartTreasury.sol index aaf6f862..9b7300da 100644 --- a/solidity/contracts/smart-treasury/ISmartTreasury.sol +++ b/solidity/contracts/smart-treasury/ISmartTreasury.sol @@ -2,7 +2,6 @@ pragma solidity 0.8.19; interface ISmartTreasury { - error SmartTreasury_AmountTooLow(); error SmartTreasury_PathConfigNotFound(); error SmartTreasury_Unauthorized(); @@ -18,6 +17,4 @@ interface ISmartTreasury { function setRevenueToken(address _revenueToken) external; function setWhitelistedCallers(address[] calldata _callers, bool _allow) external; - - function whitelistedCallers(address _caller) external view returns (bool _allow); } diff --git a/solidity/contracts/smart-treasury/SmartTreasury.sol b/solidity/contracts/smart-treasury/SmartTreasury.sol index c0dfc12b..ba48b9ce 100644 --- a/solidity/contracts/smart-treasury/SmartTreasury.sol +++ b/solidity/contracts/smart-treasury/SmartTreasury.sol @@ -94,6 +94,21 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { emit LogSetRevenueToken(_revenueToken); } + /// @notice Set treasury addresses + /// @dev The destination addresses for distribution + /// @param _revenueTreasury An address of revenue treasury + /// @param _devTreasury An address of dev treasury + /// @param _burnTreasury An address of burn treasury + function setTreasuryAddresses( + address _revenueTreasury, + address _devTreasury, + address _burnTreasury + ) external onlyWhitelisted { + revenueTreasury = _revenueTreasury; + devTreasury = _devTreasury; + burnTreasury = _burnTreasury; + } + /// @notice Set whitelisted callers /// @param _callers The addresses of the callers that are going to be whitelisted. /// @param _allow Whether to allow or disallow callers. @@ -110,26 +125,35 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { } function _distribute(address _token) internal { - uint256 _amount = IERC20(_token).balanceOf(address(this)); - (uint256 _revenueAmount, uint256 _devAmount, uint256 _burnAmount) = _splitPayment(_amount); - bytes memory _path = pathReader.paths(_token, revenueToken); if (_path.length == 0) revert SmartTreasury_PathConfigNotFound(); - IPancakeSwapRouterV3.ExactInputParams memory params = IPancakeSwapRouterV3.ExactInputParams({ - path: _path, - recipient: revenueTreasury, - deadline: block.timestamp, - amountIn: _revenueAmount, - amountOutMinimum: 0 - }); + uint256 _amount = IERC20(_token).balanceOf(address(this)); + (uint256 _revenueAmount, uint256 _devAmount, uint256 _burnAmount) = _splitPayment(_amount); - // Direct send to revenue treasury - IERC20(_token).safeApprove(address(PCS_V3_ROUTER), _revenueAmount); - PCS_V3_ROUTER.exactInput(params); + if (_revenueAmount != 0) { + IPancakeSwapRouterV3.ExactInputParams memory params = IPancakeSwapRouterV3.ExactInputParams({ + path: _path, + recipient: revenueTreasury, + deadline: block.timestamp, + amountIn: _revenueAmount, + amountOutMinimum: 0 + }); + + // Direct send to revenue treasury + IERC20(_token).safeApprove(address(PCS_V3_ROUTER), _revenueAmount); + try PCS_V3_ROUTER.exactInput(params) {} catch { + return; + } + } - IERC20(_token).safeTransfer(devTreasury, _devAmount); - IERC20(_token).safeTransfer(burnTreasury, _burnAmount); + if (_devAmount != 0) { + IERC20(_token).safeTransfer(devTreasury, _devAmount); + } + + if (_burnAmount != 0) { + IERC20(_token).safeTransfer(burnTreasury, _burnAmount); + } emit LogDistribute(_token, _amount); } @@ -143,11 +167,12 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { uint256 _burnAmount ) { - _devAmount = (_amount * devAlloc) / totalAlloc; - _burnAmount = (_amount * burnAlloc) / totalAlloc; - unchecked { - _revenueAmount = _amount - _devAmount - _burnAmount; + if (_amount != 0) { + _devAmount = (_amount * devAlloc) / totalAlloc; + _burnAmount = (_amount * burnAlloc) / totalAlloc; + unchecked { + _revenueAmount = _amount - _devAmount - _burnAmount; + } } - if (_devAmount == 0 || _burnAmount == 0 || _revenueAmount == 0) revert SmartTreasury_AmountTooLow(); } } diff --git a/solidity/tests/smart-treasury/BaseFork.sol b/solidity/tests/smart-treasury/BaseFork.sol index d5cafb85..d7051817 100644 --- a/solidity/tests/smart-treasury/BaseFork.sol +++ b/solidity/tests/smart-treasury/BaseFork.sol @@ -7,11 +7,12 @@ import { ProxyAdminLike } from "../interfaces/ProxyAdminLike.sol"; // implementation import { PCSV3PathReader } from "solidity/contracts/reader/PCSV3PathReader.sol"; +import { SmartTreasury } from "solidity/contracts/smart-treasury/SmartTreasury.sol"; // interfaces import { IERC20 } from "solidity/contracts/money-market/interfaces/IERC20.sol"; import { IPancakeSwapRouterV3 } from "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol"; -import { ISmartTreasury } from "solidity/contracts/smart-treasury/ISmartTreasury.sol"; +import { IQuoterV2 } from "solidity/tests/interfaces/IQuoterV2.sol"; contract BaseFork is DSTest, StdUtils, StdAssertions, StdCheats { using stdStorage for StdStorage; @@ -39,14 +40,21 @@ contract BaseFork is DSTest, StdUtils, StdAssertions, StdCheats { IPancakeSwapRouterV3 internal router = IPancakeSwapRouterV3(0x1b81D678ffb9C0263b24A97847620C99d213eB14); PCSV3PathReader internal pathReader; - ISmartTreasury internal smartTreasury; + SmartTreasury internal smartTreasury; + IQuoterV2 internal quoterV2 = IQuoterV2(0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997); function setUp() public virtual { vm.createSelectFork("bsc_mainnet", 27_515_914); pathReader = new PCSV3PathReader(); + // set path for + bytes[] memory _paths = new bytes[](1); + _paths[0] = abi.encodePacked(address(wbnb), uint24(500), address(usdt)); + + pathReader.setPaths(_paths); + vm.startPrank(DEPLOYER); - _setupProxyAdmin(); + proxyAdmin = _setupProxyAdmin(); smartTreasury = deploySmartTreasury(address(router), address(pathReader)); vm.stopPrank(); @@ -67,31 +75,38 @@ contract BaseFork is DSTest, StdUtils, StdAssertions, StdCheats { vm.label(address(smartTreasury), "SmartTreasury"); } - function deployUpgradeable(string memory contractName, bytes memory initializer) internal returns (address) { - // Deploy implementation contract - bytes memory logicBytecode = abi.encodePacked( - vm.getCode(string(abi.encodePacked("./out/", contractName, ".sol/", contractName, ".json"))) + function deploySmartTreasury(address _router, address _pathReader) internal returns (SmartTreasury) { + bytes memory _logicBytecode = abi.encodePacked(vm.getCode("./out/SmartTreasury.sol/SmartTreasury.json")); + bytes memory _initializer = abi.encodeWithSelector( + bytes4(keccak256("initialize(address,address)")), + _router, + _pathReader ); - address logic; - assembly { - logic := create(0, add(logicBytecode, 0x20), mload(logicBytecode)) - } + address _proxy = _setupUpgradeable(_logicBytecode, _initializer); + return SmartTreasury(_proxy); + } - // Deploy proxy - bytes memory proxyBytecode = abi.encodePacked( + function _setupUpgradeable(bytes memory _logicBytecode, bytes memory _initializer) internal returns (address) { + bytes memory _proxyBytecode = abi.encodePacked( vm.getCode("./out/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json") ); - proxyBytecode = abi.encodePacked(proxyBytecode, abi.encode(logic, address(proxyAdmin), initializer)); - address proxy; + address _logic; assembly { - proxy := create(0, add(proxyBytecode, 0x20), mload(proxyBytecode)) - if iszero(extcodesize(proxy)) { + _logic := create(0, add(_logicBytecode, 0x20), mload(_logicBytecode)) + } + + _proxyBytecode = abi.encodePacked(_proxyBytecode, abi.encode(_logic, address(proxyAdmin), _initializer)); + + address _proxy; + assembly { + _proxy := create(0, add(_proxyBytecode, 0x20), mload(_proxyBytecode)) + if iszero(extcodesize(_proxy)) { revert(0, 0) } } - return proxy; + return _proxy; } function _setupProxyAdmin() internal returns (ProxyAdminLike) { @@ -103,16 +118,6 @@ contract BaseFork is DSTest, StdUtils, StdAssertions, StdCheats { return ProxyAdminLike(address(_address)); } - function deploySmartTreasury(address _router, address _pathReader) internal returns (ISmartTreasury) { - return - ISmartTreasury( - deployUpgradeable( - "SmartTreasury", - abi.encodeWithSelector(bytes4(keccak256("initialize(address,address)")), _router, _pathReader) - ) - ); - } - function normalizeEther(uint256 _ether, uint256 _decimal) internal pure returns (uint256 _normalizedEther) { _normalizedEther = _ether / 10**(18 - _decimal); } diff --git a/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol b/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol index 6a46d437..42c3493a 100644 --- a/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol +++ b/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol @@ -2,25 +2,115 @@ pragma solidity 0.8.19; import { BaseFork } from "./BaseFork.sol"; +import { ISmartTreasury } from "solidity/contracts/smart-treasury/ISmartTreasury.sol"; +import { IPancakeSwapRouterV3 } from "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol"; +import { IERC20 } from "solidity/contracts/money-market/interfaces/IERC20.sol"; contract SmartTreasury_Distribute is BaseFork { function setUp() public override { super.setUp(); // setup whitelisted caller - // setup revenue token - // setup allocation point + address[] memory _callers = new address[](1); + _callers[0] = ALICE; + vm.prank(DEPLOYER); + smartTreasury.setWhitelistedCallers(_callers, true); + + vm.startPrank(ALICE); + // setup revenue token, alloc points and treasury address + smartTreasury.setRevenueToken(address(usdt)); + smartTreasury.setAllocs(100, 100, 100); + smartTreasury.setTreasuryAddresses(REVENUE_TREASURY, DEV_TREASURY, BURN_TREASURY); + vm.stopPrank(); } function testCorrectness_CallDistribute_ShouldWork() external { - // rev treasury - // dev treasury - // burn treasury + // state before distribute + uint256 _revenueBalanceBefore = IERC20(address(usdt)).balanceOf(REVENUE_TREASURY); + uint256 _devBalanceBefore = IERC20(address(wbnb)).balanceOf(DEV_TREASURY); + uint256 _burnBalanceBefore = IERC20(address(wbnb)).balanceOf(BURN_TREASURY); + + // top up balance smart treasury + // top up wbnb + deal(address(wbnb), address(smartTreasury), 30 ether); + + address[] memory _tokens = new address[](1); + _tokens[0] = address(wbnb); + vm.prank(ALICE); + smartTreasury.distribute(_tokens); + + // expect amount + (uint256 _expectedAmountOut, , , ) = quoterV2.quoteExactInput( + abi.encodePacked(address(wbnb), uint24(500), address(usdt)), + 10 ether + ); + + // state after distribute + uint256 _revenueBalanceAfter = IERC20(address(usdt)).balanceOf(REVENUE_TREASURY); + uint256 _devBalanceAfter = IERC20(address(wbnb)).balanceOf(DEV_TREASURY); + uint256 _burnBalanceAfter = IERC20(address(wbnb)).balanceOf(BURN_TREASURY); + + // rev treasury (get usdt) + // tolerance ~5% + assertCloseBps(_revenueBalanceAfter, _revenueBalanceBefore + _expectedAmountOut, 500); + // dev treasury (get wbnb) + assertEq(_devBalanceAfter, _devBalanceBefore + 10 ether, "Dev Treasury Balance (WBNB)"); + + // burn treasury (get wbnb) + assertEq(_burnBalanceAfter, _burnBalanceBefore + 10 ether, "Burn Treasury Balance (WBNB)"); } - function testRevert_UnauthorizedCallDistribute_ShouldRevert() external {} + function testRevert_UnauthorizedCallDistribute_ShouldRevert() external { + deal(address(wbnb), address(smartTreasury), 30 ether); + + address[] memory _tokens = new address[](1); + _tokens[0] = address(wbnb); + + vm.prank(BOB); + vm.expectRevert(ISmartTreasury.SmartTreasury_Unauthorized.selector); + smartTreasury.distribute(_tokens); + } - function testRevert_DistributeWithNonExistingRevenueToken_ShouldRevert() external {} + function testRevert_DistributeWithNonExistingRevenueToken_ShouldRevert() external { + deal(address(wbnb), address(smartTreasury), 30 ether); - function testRevert_DistributeWhenAmountTooLow_ShouldRevert() external {} + address[] memory _tokens = new address[](1); + _tokens[0] = address(cake); + + vm.prank(ALICE); + vm.expectRevert(ISmartTreasury.SmartTreasury_PathConfigNotFound.selector); + smartTreasury.distribute(_tokens); + } + + function testCorrectness_DistributeFailedFromSwap_ShouldNotDistribute() external { + // state before distribute + uint256 _revenueBalanceBefore = IERC20(address(usdt)).balanceOf(REVENUE_TREASURY); + uint256 _devBalanceBefore = IERC20(address(wbnb)).balanceOf(DEV_TREASURY); + uint256 _burnBalanceBefore = IERC20(address(wbnb)).balanceOf(BURN_TREASURY); + + // top up balance smart treasury + // top up wbnb + deal(address(wbnb), address(smartTreasury), 30 ether); + + vm.mockCallRevert( + address(router), + abi.encodeWithSelector(IPancakeSwapRouterV3.exactInput.selector), + abi.encode("Failed swap") + ); + + address[] memory _tokens = new address[](1); + _tokens[0] = address(wbnb); + vm.prank(ALICE); + smartTreasury.distribute(_tokens); + + // state after distribute + uint256 _revenueBalanceAfter = IERC20(address(usdt)).balanceOf(REVENUE_TREASURY); + uint256 _devBalanceAfter = IERC20(address(wbnb)).balanceOf(DEV_TREASURY); + uint256 _burnBalanceAfter = IERC20(address(wbnb)).balanceOf(BURN_TREASURY); + + // after should be equal to before + assertEq(_revenueBalanceAfter, _revenueBalanceBefore, "Revenue Treasury Balance (USDT)"); + assertEq(_devBalanceAfter, _devBalanceBefore, "Dev Treasury Balance (WBNB)"); + assertEq(_burnBalanceAfter, _burnBalanceBefore, "Burn Treasury Balance (WBNB)"); + } } diff --git a/solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol b/solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol index 7fdc843d..e33cd0b9 100644 --- a/solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol +++ b/solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol @@ -1,43 +1,113 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.19; -import { BaseFork, console } from "./BaseFork.sol"; +import { BaseFork } from "./BaseFork.sol"; +import { ISmartTreasury } from "solidity/contracts/smart-treasury/ISmartTreasury.sol"; contract SmartTreasury_SetConfigs is BaseFork { function setUp() public override { super.setUp(); } + // test set whitelist + // - called by deployer + // - called by unauthorized user + function testCorrectness_SetWhitelist_ShouldWork() external { - address[] memory _callers = new address[](2); + address[] memory _callers = new address[](1); _callers[0] = ALICE; - _callers[1] = BOB; vm.prank(DEPLOYER); smartTreasury.setWhitelistedCallers(_callers, true); - assertEq(smartTreasury.whitelistedCallers(ALICE), true); - assertEq(smartTreasury.whitelistedCallers(BOB), true); + assertEq(smartTreasury.whitelistedCallers(ALICE), true, "Set Whitelist"); } - function testRevert_NonOwnerSetWhitelist_ShouldRevert() external {} - - // test set whitelist - // - by deployer - // - by unauthorized user + function testRevert_NonOwnerSetWhitelist_ShouldRevert() external { + address[] memory _callers = new address[](1); + _callers[0] = ALICE; + vm.expectRevert("Ownable: caller is not the owner"); + smartTreasury.setWhitelistedCallers(_callers, true); + } - function testCorrectness_SetRevenueToken_ShouldWork() external {} + // test correctness revenue token + // - called by whitelisted user + // - called by unauthorized user - function testRevert_UnauthorizedCallerSetRevenueToken_ShouldRevert() external {} + function testCorrectness_SetRevenueToken_ShouldWork() external { + address[] memory _callers = new address[](1); + _callers[0] = ALICE; + vm.prank(DEPLOYER); + smartTreasury.setWhitelistedCallers(_callers, true); - // test correctness revenue token - // - by whitelisted user - // - by unauthorized user + vm.prank(ALICE); + smartTreasury.setRevenueToken(address(wbnb)); + assertEq(smartTreasury.revenueToken(), address(wbnb), "Set Revenue Token"); + } - function testCorrectness_SetAlloc_ShouldWork() external {} + function testRevert_UnauthorizedCallerSetRevenueToken_ShouldRevert() external { + address[] memory _callers = new address[](1); + _callers[0] = ALICE; + vm.prank(DEPLOYER); + smartTreasury.setWhitelistedCallers(_callers, true); - function testRevert_UnauthorizedCallerSetAlloc_ShouldRevert() external {} + vm.prank(BOB); + vm.expectRevert(ISmartTreasury.SmartTreasury_Unauthorized.selector); + smartTreasury.setRevenueToken(address(wbnb)); + } // test correctness allocation point - // - by whitelisted user - // - by unauthorized user + // - called by whitelisted user + // - called by unauthorized user + + function testCorrectness_SetAlloc_ShouldWork() external { + address[] memory _callers = new address[](1); + _callers[0] = ALICE; + vm.prank(DEPLOYER); + smartTreasury.setWhitelistedCallers(_callers, true); + + vm.prank(ALICE); + smartTreasury.setAllocs(100, 100, 100); + assertEq(smartTreasury.revenueAlloc(), 100, "Set Revenue Allocation"); + assertEq(smartTreasury.devAlloc(), 100, "Set Dev Allocation"); + assertEq(smartTreasury.burnAlloc(), 100, "Set Burn Allocation"); + } + + function testRevert_UnauthorizedCallerSetAlloc_ShouldRevert() external { + address[] memory _callers = new address[](1); + _callers[0] = ALICE; + vm.prank(DEPLOYER); + smartTreasury.setWhitelistedCallers(_callers, true); + + vm.prank(BOB); + vm.expectRevert(ISmartTreasury.SmartTreasury_Unauthorized.selector); + smartTreasury.setAllocs(100, 100, 100); + } + + // test correctness treasury address + // - called by whitelisted user + // - called by unauthorized user + + function testCorrectness_SetTreasuryAddresses_ShouldWork() external { + address[] memory _callers = new address[](1); + _callers[0] = ALICE; + vm.prank(DEPLOYER); + smartTreasury.setWhitelistedCallers(_callers, true); + + vm.prank(ALICE); + smartTreasury.setTreasuryAddresses(REVENUE_TREASURY, DEV_TREASURY, BURN_TREASURY); + assertEq(smartTreasury.revenueTreasury(), REVENUE_TREASURY, "Set Revenue treasury address"); + assertEq(smartTreasury.devTreasury(), DEV_TREASURY, "Set Dev treasury address"); + assertEq(smartTreasury.burnTreasury(), BURN_TREASURY, "Set Burn treasury address"); + } + + function testRevert_UnauthorizedCallerSetTreasuryAddresses_ShouldRevert() external { + address[] memory _callers = new address[](1); + _callers[0] = ALICE; + vm.prank(DEPLOYER); + smartTreasury.setWhitelistedCallers(_callers, true); + + vm.prank(BOB); + vm.expectRevert(ISmartTreasury.SmartTreasury_Unauthorized.selector); + smartTreasury.setTreasuryAddresses(REVENUE_TREASURY, DEV_TREASURY, BURN_TREASURY); + } } diff --git a/solidity/tests/utils/VM.sol b/solidity/tests/utils/VM.sol index cf8d2671..45ec8f64 100644 --- a/solidity/tests/utils/VM.sol +++ b/solidity/tests/utils/VM.sol @@ -434,6 +434,20 @@ interface VM is VmSafe { bytes calldata ) external; + function mockCallRevert( + address callee, + bytes calldata data, + bytes calldata revertData + ) external; + + // Reverts a call to an address with a specific msg.value, with specified revert data. + function mockCallRevert( + address callee, + uint256 msgValue, + bytes calldata data, + bytes calldata revertData + ) external; + // Clears all mocked calls function clearMockedCalls() external; From 837c9f9d918620424eeee1ae976e68a721f1176a Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Tue, 9 May 2023 18:19:09 +0700 Subject: [PATCH 56/87] test: add test skip token --- .../SmartTreasury_Distribute.t.sol | 123 +++++++++++++++++- 1 file changed, 117 insertions(+), 6 deletions(-) diff --git a/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol b/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol index 42c3493a..fc1d7a54 100644 --- a/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol +++ b/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol @@ -19,7 +19,7 @@ contract SmartTreasury_Distribute is BaseFork { vm.startPrank(ALICE); // setup revenue token, alloc points and treasury address smartTreasury.setRevenueToken(address(usdt)); - smartTreasury.setAllocs(100, 100, 100); + smartTreasury.setAllocPoints(100, 100, 100); smartTreasury.setTreasuryAddresses(REVENUE_TREASURY, DEV_TREASURY, BURN_TREASURY); vm.stopPrank(); } @@ -58,10 +58,15 @@ contract SmartTreasury_Distribute is BaseFork { // burn treasury (get wbnb) assertEq(_burnBalanceAfter, _burnBalanceBefore + 10 ether, "Burn Treasury Balance (WBNB)"); + + // Smart treasury after must equal to before + uint256 _WBNBTreasuryBalanceAfter = IERC20(address(wbnb)).balanceOf(address(smartTreasury)); + assertEq(_WBNBTreasuryBalanceAfter, 0, "Smart treasury balance (WBNB)"); } function testRevert_UnauthorizedCallDistribute_ShouldRevert() external { deal(address(wbnb), address(smartTreasury), 30 ether); + uint256 _WBNBTreasuryBalanceBefore = IERC20(address(wbnb)).balanceOf(address(smartTreasury)); address[] memory _tokens = new address[](1); _tokens[0] = address(wbnb); @@ -69,10 +74,15 @@ contract SmartTreasury_Distribute is BaseFork { vm.prank(BOB); vm.expectRevert(ISmartTreasury.SmartTreasury_Unauthorized.selector); smartTreasury.distribute(_tokens); + + // Smart treasury must have nothing left + uint256 _WBNBTreasuryBalanceAfter = IERC20(address(wbnb)).balanceOf(address(smartTreasury)); + assertEq(_WBNBTreasuryBalanceAfter, _WBNBTreasuryBalanceBefore, "Smart treasury balance (WBNB)"); } function testRevert_DistributeWithNonExistingRevenueToken_ShouldRevert() external { - deal(address(wbnb), address(smartTreasury), 30 ether); + deal(address(cake), address(smartTreasury), 30 ether); + uint256 _cakeTreasuryBalanceBefore = IERC20(address(cake)).balanceOf(address(smartTreasury)); address[] memory _tokens = new address[](1); _tokens[0] = address(cake); @@ -80,18 +90,23 @@ contract SmartTreasury_Distribute is BaseFork { vm.prank(ALICE); vm.expectRevert(ISmartTreasury.SmartTreasury_PathConfigNotFound.selector); smartTreasury.distribute(_tokens); + + // Smart treasury after must equal to before + uint256 _cakeTreasuryBalanceAfter = IERC20(address(cake)).balanceOf(address(smartTreasury)); + assertEq(_cakeTreasuryBalanceAfter, _cakeTreasuryBalanceBefore, "Smart treasury balance (Cake)"); } function testCorrectness_DistributeFailedFromSwap_ShouldNotDistribute() external { + // top up balance smart treasury + // top up wbnb + deal(address(wbnb), address(smartTreasury), 30 ether); + uint256 _WBNBTreasuryBalanceBefore = IERC20(address(wbnb)).balanceOf(address(smartTreasury)); + // state before distribute uint256 _revenueBalanceBefore = IERC20(address(usdt)).balanceOf(REVENUE_TREASURY); uint256 _devBalanceBefore = IERC20(address(wbnb)).balanceOf(DEV_TREASURY); uint256 _burnBalanceBefore = IERC20(address(wbnb)).balanceOf(BURN_TREASURY); - // top up balance smart treasury - // top up wbnb - deal(address(wbnb), address(smartTreasury), 30 ether); - vm.mockCallRevert( address(router), abi.encodeWithSelector(IPancakeSwapRouterV3.exactInput.selector), @@ -112,5 +127,101 @@ contract SmartTreasury_Distribute is BaseFork { assertEq(_revenueBalanceAfter, _revenueBalanceBefore, "Revenue Treasury Balance (USDT)"); assertEq(_devBalanceAfter, _devBalanceBefore, "Dev Treasury Balance (WBNB)"); assertEq(_burnBalanceAfter, _burnBalanceBefore, "Burn Treasury Balance (WBNB)"); + + // Smart treasury after must equal to before + uint256 _WBNBTreasuryBalanceAfter = IERC20(address(wbnb)).balanceOf(address(smartTreasury)); + assertEq(_WBNBTreasuryBalanceAfter, _WBNBTreasuryBalanceBefore, "Smart treasury balance (WBNB)"); + } + + struct CacheState { + uint256 _rev; + uint256 _dev; + uint256 _burn; + } + + function testCorrectness_WhenSwapFailedOtherDistribution_ShoulWork() external { + // set path for cake to usdt + bytes[] memory _paths = new bytes[](1); + _paths[0] = abi.encodePacked(address(cake), uint24(2500), address(usdt)); + pathReader.setPaths(_paths); + + // top up 2 tokens + // wbnb + // cake + deal(address(wbnb), address(smartTreasury), 30 ether); + deal(address(cake), address(smartTreasury), 30 ether); + + uint256 _WBNBTreasuryBalanceBefore = IERC20(address(wbnb)).balanceOf(address(smartTreasury)); + + CacheState memory _stateWBNBBefore = CacheState( + IERC20(address(usdt)).balanceOf(REVENUE_TREASURY), + IERC20(address(wbnb)).balanceOf(DEV_TREASURY), + IERC20(address(wbnb)).balanceOf(BURN_TREASURY) + ); + + CacheState memory _stateCakeBefore = CacheState( + IERC20(address(usdt)).balanceOf(REVENUE_TREASURY), + IERC20(address(cake)).balanceOf(DEV_TREASURY), + IERC20(address(cake)).balanceOf(BURN_TREASURY) + ); + + // mock fail for wbnb + // *cake must work normally + IPancakeSwapRouterV3.ExactInputParams memory _params = IPancakeSwapRouterV3.ExactInputParams({ + path: abi.encodePacked(address(wbnb), uint24(500), address(usdt)), + recipient: REVENUE_TREASURY, + deadline: block.timestamp, + amountIn: 10 ether, + amountOutMinimum: 0 + }); + + vm.mockCallRevert( + address(router), + abi.encodeWithSelector(IPancakeSwapRouterV3.exactInput.selector, _params), + abi.encode("WBNB to USDT Failed swap") + ); + + (uint256 _expectedAmountOut, , , ) = quoterV2.quoteExactInput( + abi.encodePacked(address(cake), uint24(2500), address(usdt)), + 10 ether + ); + + // call distribute + address[] memory _tokens = new address[](2); + _tokens[0] = address(wbnb); + _tokens[1] = address(cake); + vm.prank(ALICE); + smartTreasury.distribute(_tokens); + + // state after distribution + CacheState memory _stateWBNBAfter = CacheState( + IERC20(address(usdt)).balanceOf(REVENUE_TREASURY), + IERC20(address(wbnb)).balanceOf(DEV_TREASURY), + IERC20(address(wbnb)).balanceOf(BURN_TREASURY) + ); + + CacheState memory _stateCakeAfter = CacheState( + IERC20(address(usdt)).balanceOf(REVENUE_TREASURY), + IERC20(address(cake)).balanceOf(DEV_TREASURY), + IERC20(address(cake)).balanceOf(BURN_TREASURY) + ); + + // 1. wbnb balance after must equal to balance before + // Note: usdt balance = wbnb distribution (0) + cake distribution (expectAmountOut) + // Then we have to deduct the increased amount from cake distribution + assertCloseBps(_stateWBNBAfter._rev, _stateWBNBBefore._rev + _expectedAmountOut, 500); + assertEq(_stateWBNBAfter._dev, _stateWBNBBefore._dev, "Dev treasury balance (WBNB)"); + assertEq(_stateWBNBAfter._burn, _stateWBNBBefore._burn, "Burn treasury balance (WBNB)"); + + // 2. cake balanace after must work normally + assertGt(_stateCakeAfter._rev, _stateCakeBefore._rev, "(CAKE) Revenue treasury balance (USDT)"); + assertEq(_stateCakeAfter._dev, _stateCakeBefore._dev + 10 ether, "Dev treasury balance (Cake)"); + assertEq(_stateCakeAfter._burn, _stateCakeBefore._burn + 10 ether, "Burn treasury balance (Cake)"); + + // Smart Treasury balance test + uint256 _WBNBTreasuryBalanceAfter = IERC20(address(wbnb)).balanceOf(address(smartTreasury)); + assertEq(_WBNBTreasuryBalanceAfter, _WBNBTreasuryBalanceBefore, "Smart treasury balance (WBNB)"); + uint256 _CakeTreasuryBalanceAfter = IERC20(address(cake)).balanceOf(address(smartTreasury)); + assertEq(_CakeTreasuryBalanceAfter, 0, "Smart treasury balance (Cake)"); } } From 0389382671036a2fc2d754d5c25694cbcdf43531 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Tue, 9 May 2023 18:19:17 +0700 Subject: [PATCH 57/87] fix: revise variable --- .../smart-treasury/ISmartTreasury.sol | 8 +-- .../smart-treasury/SmartTreasury.sol | 64 +++++++++++-------- .../SmartTreasury_SetConfigs.t.sol | 10 +-- 3 files changed, 45 insertions(+), 37 deletions(-) diff --git a/solidity/contracts/smart-treasury/ISmartTreasury.sol b/solidity/contracts/smart-treasury/ISmartTreasury.sol index 9b7300da..c89f1624 100644 --- a/solidity/contracts/smart-treasury/ISmartTreasury.sol +++ b/solidity/contracts/smart-treasury/ISmartTreasury.sol @@ -8,10 +8,10 @@ interface ISmartTreasury { // call to auto split target token to each destination function distribute(address[] calldata _tokens) external; - function setAllocs( - uint256 _revenueAlloc, - uint256 _devAlloc, - uint256 _burnAlloc + function setAllocPoints( + uint256 _revenueAllocPoint, + uint256 _devAllocPoint, + uint256 _burnAllocPoint ) external; function setRevenueToken(address _revenueToken) external; diff --git a/solidity/contracts/smart-treasury/SmartTreasury.sol b/solidity/contracts/smart-treasury/SmartTreasury.sol index ba48b9ce..572959d8 100644 --- a/solidity/contracts/smart-treasury/SmartTreasury.sol +++ b/solidity/contracts/smart-treasury/SmartTreasury.sol @@ -3,11 +3,9 @@ pragma solidity 0.8.19; // ---- External Libraries ---- // import { OwnableUpgradeable } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; -import { Initializable } from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; // ---- Libraries ---- // import { LibSafeToken } from "../money-market/libraries/LibSafeToken.sol"; -import { LibConstant } from "solidity/contracts/money-market/libraries/LibConstant.sol"; // ---- Interfaces ---- // import { IUniSwapV3PathReader } from "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol"; @@ -25,16 +23,27 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { mapping(address => bool) public whitelistedCallers; - uint256 public revenueAlloc; - uint256 public devAlloc; - uint256 public burnAlloc; - uint256 public totalAlloc; + uint256 public revenueAllocPoint; + uint256 public devAllocPoint; + uint256 public burnAllocPoint; + uint256 public totalAllocPoint; - IPancakeSwapRouterV3 public PCS_V3_ROUTER; + IPancakeSwapRouterV3 public router; IUniSwapV3PathReader public pathReader; - event LogDistribute(address _token, uint256 _amount); - event LogSetAllocs(uint256 _revenueAlloc, uint256 _devAlloc, uint256 _burnAlloc, uint256 totalAlloc); + event LogDistribute( + address _token, + uint256 _revenueAmount, + uint256 _devAmount, + uint256 _burnAmount, + uint256 _totalAmount + ); + event LogSetAllocs( + uint256 _revenueAllocPoint, + uint256 _devAllocPoint, + uint256 _burnAllocPoint, + uint256 totalAllocPoint + ); event LogSetRevenueToken(address _revenueToken); event LogSetWhitelistedCaller(address indexed _caller, bool _allow); @@ -51,7 +60,7 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { function initialize(address _router, address _pathReader) external initializer { OwnableUpgradeable.__Ownable_init(); - PCS_V3_ROUTER = IPancakeSwapRouterV3(_router); + router = IPancakeSwapRouterV3(_router); pathReader = IUniSwapV3PathReader(_pathReader); } @@ -61,7 +70,6 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { function distribute(address[] calldata _tokens) external onlyWhitelisted { uint256 _length = _tokens.length; for (uint256 _i; _i < _length; ) { - // should try catch? _distribute(_tokens[_i]); unchecked { ++_i; @@ -70,20 +78,20 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { } /// @notice Set allocation points - /// @param _revenueAlloc An allocation point for revenue treasury. - /// @param _devAlloc An allocation point for dev treasury. - /// @param _burnAlloc An allocation point for burn treasury. - function setAllocs( - uint256 _revenueAlloc, - uint256 _devAlloc, - uint256 _burnAlloc + /// @param _revenueAllocPoint An allocation point for revenue treasury. + /// @param _devAllocPoint An allocation point for dev treasury. + /// @param _burnAllocPoint An allocation point for burn treasury. + function setAllocPoints( + uint256 _revenueAllocPoint, + uint256 _devAllocPoint, + uint256 _burnAllocPoint ) external onlyWhitelisted { - totalAlloc = _revenueAlloc + _devAlloc + _burnAlloc; - revenueAlloc = _revenueAlloc; - devAlloc = _devAlloc; - burnAlloc = _burnAlloc; + totalAllocPoint = _revenueAllocPoint + _devAllocPoint + _burnAllocPoint; + revenueAllocPoint = _revenueAllocPoint; + devAllocPoint = _devAllocPoint; + burnAllocPoint = _burnAllocPoint; - emit LogSetAllocs(_revenueAlloc, _devAlloc, _burnAlloc, totalAlloc); + emit LogSetAllocs(_revenueAllocPoint, _devAllocPoint, _burnAllocPoint, totalAllocPoint); } /// @notice Set revenue token @@ -141,8 +149,8 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { }); // Direct send to revenue treasury - IERC20(_token).safeApprove(address(PCS_V3_ROUTER), _revenueAmount); - try PCS_V3_ROUTER.exactInput(params) {} catch { + IERC20(_token).safeApprove(address(router), _revenueAmount); + try router.exactInput(params) {} catch { return; } } @@ -155,7 +163,7 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { IERC20(_token).safeTransfer(burnTreasury, _burnAmount); } - emit LogDistribute(_token, _amount); + emit LogDistribute(_token, _revenueAmount, _devAmount, _burnAmount, _amount); } function _splitPayment(uint256 _amount) @@ -168,8 +176,8 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { ) { if (_amount != 0) { - _devAmount = (_amount * devAlloc) / totalAlloc; - _burnAmount = (_amount * burnAlloc) / totalAlloc; + _devAmount = (_amount * devAllocPoint) / totalAllocPoint; + _burnAmount = (_amount * burnAllocPoint) / totalAllocPoint; unchecked { _revenueAmount = _amount - _devAmount - _burnAmount; } diff --git a/solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol b/solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol index e33cd0b9..4f968732 100644 --- a/solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol +++ b/solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol @@ -66,10 +66,10 @@ contract SmartTreasury_SetConfigs is BaseFork { smartTreasury.setWhitelistedCallers(_callers, true); vm.prank(ALICE); - smartTreasury.setAllocs(100, 100, 100); - assertEq(smartTreasury.revenueAlloc(), 100, "Set Revenue Allocation"); - assertEq(smartTreasury.devAlloc(), 100, "Set Dev Allocation"); - assertEq(smartTreasury.burnAlloc(), 100, "Set Burn Allocation"); + smartTreasury.setAllocPoints(100, 100, 100); + assertEq(smartTreasury.revenueAllocPoint(), 100, "Set Revenue Allocation"); + assertEq(smartTreasury.devAllocPoint(), 100, "Set Dev Allocation"); + assertEq(smartTreasury.burnAllocPoint(), 100, "Set Burn Allocation"); } function testRevert_UnauthorizedCallerSetAlloc_ShouldRevert() external { @@ -80,7 +80,7 @@ contract SmartTreasury_SetConfigs is BaseFork { vm.prank(BOB); vm.expectRevert(ISmartTreasury.SmartTreasury_Unauthorized.selector); - smartTreasury.setAllocs(100, 100, 100); + smartTreasury.setAllocPoints(100, 100, 100); } // test correctness treasury address From 56a2b583d0e67998baf6c47c8caec36ed868394c Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Wed, 10 May 2023 10:53:40 +0700 Subject: [PATCH 58/87] fix: revise event name --- solidity/contracts/smart-treasury/SmartTreasury.sol | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/solidity/contracts/smart-treasury/SmartTreasury.sol b/solidity/contracts/smart-treasury/SmartTreasury.sol index 572959d8..2acebfe8 100644 --- a/solidity/contracts/smart-treasury/SmartTreasury.sol +++ b/solidity/contracts/smart-treasury/SmartTreasury.sol @@ -38,11 +38,11 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { uint256 _burnAmount, uint256 _totalAmount ); - event LogSetAllocs( + event LogSetAllocPoints( uint256 _revenueAllocPoint, uint256 _devAllocPoint, uint256 _burnAllocPoint, - uint256 totalAllocPoint + uint256 _totalAllocPoint ); event LogSetRevenueToken(address _revenueToken); event LogSetWhitelistedCaller(address indexed _caller, bool _allow); @@ -91,7 +91,7 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { devAllocPoint = _devAllocPoint; burnAllocPoint = _burnAllocPoint; - emit LogSetAllocs(_revenueAllocPoint, _devAllocPoint, _burnAllocPoint, totalAllocPoint); + emit LogSetAllocPoints(_revenueAllocPoint, _devAllocPoint, _burnAllocPoint, totalAllocPoint); } /// @notice Set revenue token @@ -137,7 +137,7 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { if (_path.length == 0) revert SmartTreasury_PathConfigNotFound(); uint256 _amount = IERC20(_token).balanceOf(address(this)); - (uint256 _revenueAmount, uint256 _devAmount, uint256 _burnAmount) = _splitPayment(_amount); + (uint256 _revenueAmount, uint256 _devAmount, uint256 _burnAmount) = _allocate(_amount); if (_revenueAmount != 0) { IPancakeSwapRouterV3.ExactInputParams memory params = IPancakeSwapRouterV3.ExactInputParams({ @@ -166,7 +166,7 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { emit LogDistribute(_token, _revenueAmount, _devAmount, _burnAmount, _amount); } - function _splitPayment(uint256 _amount) + function _allocate(uint256 _amount) internal view returns ( From e0df15616654737aca48a09cff4356880558b8e5 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Wed, 10 May 2023 11:31:57 +0700 Subject: [PATCH 59/87] feat: add getter, setter in view and admin facet --- .../libraries/LibMoneyMarketDeployment.sol | 2 +- .../money-market/facets/ViewFacet.sol | 52 ++++++++++++++++++- .../money-market/interfaces/IViewFacet.sol | 19 ++++++- 3 files changed, 70 insertions(+), 3 deletions(-) diff --git a/script/deployments/libraries/LibMoneyMarketDeployment.sol b/script/deployments/libraries/LibMoneyMarketDeployment.sol index 3fcde928..d4ebcbc6 100644 --- a/script/deployments/libraries/LibMoneyMarketDeployment.sol +++ b/script/deployments/libraries/LibMoneyMarketDeployment.sol @@ -209,7 +209,7 @@ library LibMoneyMarketDeployment { _selectors[39] = IViewFacet.getOverCollatPendingInterest.selector; _selectors[40] = IViewFacet.getOverCollatInterestModel.selector; _selectors[41] = IViewFacet.getOverCollatInterestRate.selector; - _selectors[42] = IViewFacet.getFlashloanFeeParams.selector; + _selectors[42] = IViewFacet.getFlashloanParams.selector; } function getLendFacetSelectors() internal pure returns (bytes4[] memory _selectors) { diff --git a/solidity/contracts/money-market/facets/ViewFacet.sol b/solidity/contracts/money-market/facets/ViewFacet.sol index c187a4ce..cc3064a0 100644 --- a/solidity/contracts/money-market/facets/ViewFacet.sol +++ b/solidity/contracts/money-market/facets/ViewFacet.sol @@ -419,10 +419,20 @@ contract ViewFacet is IViewFacet { /// @notice Get flashloan fees /// @return _flashloanFeeBps the flashloan fee collected by protocol /// @return _lenderFlashloanBps the portion that lenders will receive from _flashloanFeeBps - function getFlashloanFeeParams() external view returns (uint16 _flashloanFeeBps, uint16 _lenderFlashloanBps) { + /// @return _flashloanTreasury Flashloan treasury address + function getFlashloanParams() + external + view + returns ( + uint16 _flashloanFeeBps, + uint16 _lenderFlashloanBps, + address _flashloanTreasury + ) + { LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); _flashloanFeeBps = moneyMarketDs.flashloanFeeBps; _lenderFlashloanBps = moneyMarketDs.lenderFlashloanBps; + _flashloanTreasury = moneyMarketDs.flashloanTreasury; } /// @notice Get the address of repurchase reward model @@ -465,4 +475,44 @@ contract ViewFacet is IViewFacet { function getMiniFL() external view returns (address) { return address(LibMoneyMarket01.moneyMarketDiamondStorage().miniFL); } + + /// @notice Check given address is in liquidationStrat whitelist + /// @param _strat Strat address + /// @return Bool True if address is in liquidationStrat whitelist + function isLiquidationStratOk(address _strat) external view returns (bool) { + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + return moneyMarketDs.liquidationStratOk[_strat]; + } + + /// @notice Check given address is in liquidator whitelist + /// @param _liquidator Liquidator address + /// @return Bool True if address is in liquidator whitelist + function isLiquidatorOk(address _liquidator) external view returns (bool) { + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + return moneyMarketDs.liquidatorsOk[_liquidator]; + } + + /// @notice Check given address is in account manager whitelist + /// @param _accountManger account manager address + /// @return Bool True if address is in account manager whitelist + function isAccountManagersOk(address _accountManger) external view returns (bool) { + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + return moneyMarketDs.accountManagersOk[_accountManger]; + } + + /// @notice Check given address is in risk manager whitelist + /// @param _riskManager risk manager address + /// @return Bool True if address is in risk manager whitelist + function isRiskManagersOk(address _riskManager) external view returns (bool) { + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + return moneyMarketDs.riskManagersOk[_riskManager]; + } + + /// @notice Check given address is in operator whitelist + /// @param _operator operator address + /// @return Bool True if address is in operator whitelist + function isOperatorsOk(address _operator) external view returns (bool) { + LibMoneyMarket01.MoneyMarketDiamondStorage storage moneyMarketDs = LibMoneyMarket01.moneyMarketDiamondStorage(); + return moneyMarketDs.operatorsOk[_operator]; + } } diff --git a/solidity/contracts/money-market/interfaces/IViewFacet.sol b/solidity/contracts/money-market/interfaces/IViewFacet.sol index daae62ed..38d87a8a 100644 --- a/solidity/contracts/money-market/interfaces/IViewFacet.sol +++ b/solidity/contracts/money-market/interfaces/IViewFacet.sol @@ -115,7 +115,14 @@ interface IViewFacet { uint16 _liquidationFeeBps ); - function getFlashloanFeeParams() external view returns (uint16 _flashloanFeeBps, uint16 _lenderFlashloanBps); + function getFlashloanParams() + external + view + returns ( + uint16 _flashloanFeeBps, + uint16 _lenderFlashloanBps, + address _flashloanTreasury + ); function getRepurchaseRewardModel() external view returns (address); @@ -130,4 +137,14 @@ interface IViewFacet { function getOracle() external view returns (address); function getMiniFL() external view returns (address); + + function isLiquidationStratOk(address _strat) external view returns (bool); + + function isLiquidatorOk(address _liquidator) external view returns (bool); + + function isAccountManagersOk(address _accountManger) external view returns (bool); + + function isRiskManagersOk(address _riskManager) external view returns (bool); + + function isOperatorsOk(address _operator) external view returns (bool); } From 55d427b800e9b55ca4adc2169d9ac852b0d744b4 Mon Sep 17 00:00:00 2001 From: jr-alpaca Date: Wed, 10 May 2023 11:39:58 +0700 Subject: [PATCH 60/87] feat: add upgrade diamond script --- .gitignore | 2 +- .mainnet.json | 3 +- .../facets/diamond-cut/execute-diamond.ts | 155 ++++++++++++++++++ .../file-helper.ts/config-file.helper.ts | 4 + {type-script => deploy}/interfaces.ts | 14 ++ deploy/utils/deployer-helper.ts | 26 +++ deploy/utils/diamond.ts | 23 +++ foundry.toml | 1 + hardhat.config.ts | 36 +--- package.json | 25 ++- .../MoneyMarket/deploy/AdminFacet.s.sol | 30 ++++ .../MoneyMarket/deploy/FlashloanFacet.s.sol | 30 ++++ .../MoneyMarket/deploy/MoneyMarket.s.sol | 2 +- .../MoneyMarket/deploy/ViewFacet.s.sol | 30 ++++ .../diamond-cut/FlashloanFacetCut.s.sol | 44 +++++ tsconfig.json | 2 +- type-script/scripts/write-mini-fl-pool.ts | 4 +- type-script/scripts/write-new-market.ts | 4 +- yarn.lock | 17 +- 19 files changed, 411 insertions(+), 41 deletions(-) create mode 100644 deploy/core/facets/diamond-cut/execute-diamond.ts rename {type-script => deploy}/file-helper.ts/config-file.helper.ts (93%) rename {type-script => deploy}/interfaces.ts (66%) create mode 100644 deploy/utils/deployer-helper.ts create mode 100644 deploy/utils/diamond.ts create mode 100644 script/deployments/MoneyMarket/deploy/AdminFacet.s.sol create mode 100644 script/deployments/MoneyMarket/deploy/FlashloanFacet.s.sol create mode 100644 script/deployments/MoneyMarket/deploy/ViewFacet.s.sol create mode 100644 script/deployments/MoneyMarket/diamond-cut/FlashloanFacetCut.s.sol diff --git a/.gitignore b/.gitignore index 67cbd11e..3df06607 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ .vscode .env -cache/ +forge_cache/ out/ artifacts/ diff --git a/.mainnet.json b/.mainnet.json index 18ca62d0..8742bc46 100644 --- a/.mainnet.json +++ b/.mainnet.json @@ -52,6 +52,7 @@ "collateralFacet": "0x8cE125c65605f937AE16645a3642d3A335852936", "diamondCutFacet": "0x2E28CbF8995969d4ea1F03FfB6f25dab8afEE45C", "diamondLoupeFacet": "0xaDB5Be7b114Ca6721e00778F97e615B85D095952", + "flashloanFacet": "", "lendFacet": "0x0d8AE68ee3eE728Ed7AE9E99Edc10f2cfc3959b1", "liquidationFacet": "0xaB530549D03AE12A96292d749c75f7f719EA2f9D", "nonCollatBorrowFacet": "0xF22133299081534780777D1504A6B38955195b03", @@ -195,4 +196,4 @@ ] }, "moneyMarketReader": "0x1d3cb2f91207afDA9E9baB89caDE1a4c3222cf6a" -} \ No newline at end of file +} diff --git a/deploy/core/facets/diamond-cut/execute-diamond.ts b/deploy/core/facets/diamond-cut/execute-diamond.ts new file mode 100644 index 00000000..9ef3fd7e --- /dev/null +++ b/deploy/core/facets/diamond-cut/execute-diamond.ts @@ -0,0 +1,155 @@ +import { HardhatRuntimeEnvironment } from "hardhat/types"; +import { DeployFunction } from "hardhat-deploy/types"; +import { ethers } from "hardhat"; + +import * as readlineSync from "readline-sync"; +import { ConfigFileHelper } from "../../../file-helper.ts/config-file.helper"; +import { getDeployer } from "../../../utils/deployer-helper"; +import { facetContractNameToAddress, getSelectors } from "../../../utils/diamond"; +import { IMMDiamondCut, MMDiamondCutFacet__factory, MMDiamondLoupeFacet__factory } from "../../../../typechain"; + +enum FacetCutAction { + Add, + Replace, + Remove, +} + +const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { + /* + ░██╗░░░░░░░██╗░█████╗░██████╗░███╗░░██╗██╗███╗░░██╗░██████╗░ + ░██║░░██╗░░██║██╔══██╗██╔══██╗████╗░██║██║████╗░██║██╔════╝░ + ░╚██╗████╗██╔╝███████║██████╔╝██╔██╗██║██║██╔██╗██║██║░░██╗░ + ░░████╔═████║░██╔══██║██╔══██╗██║╚████║██║██║╚████║██║░░╚██╗ + ░░╚██╔╝░╚██╔╝░██║░░██║██║░░██║██║░╚███║██║██║░╚███║╚██████╔╝ + ░░░╚═╝░░░╚═╝░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝╚═╝╚═╝░░╚══╝░╚═════╝░ + Check all variables below before execute the deployment script + */ + + const FACET = "ViewFacet"; + const INITIALIZER_ADDRESS = ethers.constants.AddressZero; + const OLD_FACET_ADDRESS = "0xA7D618BF3880f146Bbc0F0d18eB6f13F59d3D339"; + + const deployer = await getDeployer(); + + const configFileHelper = new ConfigFileHelper(); + const config = configFileHelper.getConfig(); + + const diamondLoupeFacet = MMDiamondLoupeFacet__factory.connect(config.moneyMarket.moneyMarketDiamond, deployer); + + const diamondCutFacet = MMDiamondCutFacet__factory.connect(config.moneyMarket.moneyMarketDiamond, deployer); + + console.log(`> Diamond cutting ${FACET}`); + + // Build the facetCuts array + console.log(`> Build the action selectors array from ${FACET} contract`); + const contractFactory = await ethers.getContractFactory(FACET); + const facetAddress = facetContractNameToAddress(FACET); + const existedFacetCuts = (await diamondLoupeFacet.facets()) + .map((each) => each.functionSelectors) + .reduce((result, array) => result.concat(array), []); + + const previousFacet = (await diamondLoupeFacet.facets()).find((each) => each.facetAddress == OLD_FACET_ADDRESS); + if (!previousFacet) { + console.log("Previous facet not found"); + return; + } + + const facetCuts: Array = []; + const replaceSelectors: Array = []; + const addSelectors: Array = []; + const removeSelectors: Array = []; + const functionSelectors = getSelectors(contractFactory); + // Loop through each selector to find out if it needs to replace or add + for (const selector of functionSelectors) { + if (existedFacetCuts.includes(selector)) { + replaceSelectors.push(selector); + } else { + addSelectors.push(selector); + } + } + // Loop through existed facet cuts to find out selectors to remove + for (const selector of previousFacet.functionSelectors) { + if (!functionSelectors.includes(selector)) { + removeSelectors.push(selector); + } + } + + console.log(`> Build the facetCuts array from ${FACET} contract`); + // Put the replaceSelectors and addSelectors into facetCuts + if (replaceSelectors.length > 0) { + facetCuts.push({ + facetAddress, + action: FacetCutAction.Replace, + functionSelectors: replaceSelectors, + }); + } + if (addSelectors.length > 0) { + facetCuts.push({ + facetAddress, + action: FacetCutAction.Add, + functionSelectors: addSelectors, + }); + } + if (removeSelectors.length > 0) { + // Get the old facet address based on the selector + facetCuts.push({ + facetAddress: ethers.constants.AddressZero, + action: FacetCutAction.Remove, + functionSelectors: removeSelectors, + }); + } + + console.log(`> Found ${replaceSelectors.length} selectors to replace`); + console.log(`> Methods to replace:`); + console.table( + replaceSelectors.map((each) => { + return { + functionName: contractFactory.interface.getFunction(each).name, + selector: each, + }; + }) + ); + console.log(`> Found ${addSelectors.length} selectors to add`); + console.log(`> Methods to add:`); + console.table( + addSelectors.map((each) => { + return { + functionName: contractFactory.interface.getFunction(each).name, + selector: each, + }; + }) + ); + console.log(`> Found ${removeSelectors.length} selectors to remove`); + console.log(`> Methods to remove:`); + console.table( + removeSelectors.map((each) => { + return { + functionName: "unknown (TODO: integrate with 4bytes dictionary)", + selector: each, + }; + }) + ); + + // Ask for confirmation + const confirmExecuteDiamondCut = readlineSync.question("Confirm? (y/n): "); + switch (confirmExecuteDiamondCut.toLowerCase()) { + case "y": + break; + case "n": + console.log("Aborting"); + return; + default: + console.log("Invalid input"); + return; + } + + console.log("> Executing diamond cut"); + const tx = await diamondCutFacet.diamondCut(facetCuts, INITIALIZER_ADDRESS, "0x", { gasLimit: 10000000 }); + console.log(`> Tx is submitted: ${tx.hash}`); + console.log(`> Waiting for tx to be mined`); + await tx.wait(); + console.log(`> Tx is mined`); +}; + +export default func; +func.tags = ["ExecuteDiamondCut"]; diff --git a/type-script/file-helper.ts/config-file.helper.ts b/deploy/file-helper.ts/config-file.helper.ts similarity index 93% rename from type-script/file-helper.ts/config-file.helper.ts rename to deploy/file-helper.ts/config-file.helper.ts index 2f44c7e1..93e1d808 100644 --- a/type-script/file-helper.ts/config-file.helper.ts +++ b/deploy/file-helper.ts/config-file.helper.ts @@ -20,6 +20,10 @@ export class ConfigFileHelper { this._writeConfigFile(this.config); } + public getConfig() { + return this.config; + } + private _writeConfigFile(config: Config) { console.log(`>> Writing ${this.filePath}`); fs.writeFileSync(this.filePath, JSON.stringify(config, null, 2)); diff --git a/type-script/interfaces.ts b/deploy/interfaces.ts similarity index 66% rename from type-script/interfaces.ts rename to deploy/interfaces.ts index c804a8f7..6a57b818 100644 --- a/type-script/interfaces.ts +++ b/deploy/interfaces.ts @@ -4,6 +4,20 @@ export interface Config { } export interface MoneyMarket { + moneyMarketDiamond: string; + facets: { + adminFacet: string; + borrowFacet: string; + collateralFacet: string; + diamondCutFacet: string; + diamondLoupeFacet: string; + flashloanFacet: string; + lendFacet: string; + liquidationFacet: string; + nonCollatBorrowFacet: string; + ownershipFacet: string; + viewFacet: string; + }; markets: Market[]; } diff --git a/deploy/utils/deployer-helper.ts b/deploy/utils/deployer-helper.ts new file mode 100644 index 00000000..ce73bb72 --- /dev/null +++ b/deploy/utils/deployer-helper.ts @@ -0,0 +1,26 @@ +import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; +import { ethers, network } from "hardhat"; +import { JsonRpcProvider } from "@ethersproject/providers"; +import { HttpNetworkUserConfig } from "hardhat/types"; + +export async function getDeployer(): Promise { + const [defaultDeployer] = await ethers.getSigners(); + + if (isFork()) { + const provider = ethers.getDefaultProvider((network.config as HttpNetworkUserConfig).url) as JsonRpcProvider; + const signer = provider.getSigner("0xC44f82b07Ab3E691F826951a6E335E1bC1bB0B51"); + const mainnetForkDeployer = await SignerWithAddress.create(signer); + + return mainnetForkDeployer; + } + + return defaultDeployer; +} + +export function isFork() { + const networkUrl = (network.config as HttpNetworkUserConfig).url; + if (networkUrl) { + return networkUrl.indexOf("https://rpc.tenderly.co/fork/") !== -1; + } + throw new Error("invalid Network Url"); +} diff --git a/deploy/utils/diamond.ts b/deploy/utils/diamond.ts new file mode 100644 index 00000000..bfa1e744 --- /dev/null +++ b/deploy/utils/diamond.ts @@ -0,0 +1,23 @@ +import { ContractFactory } from "ethers"; +import _ from "lodash"; +import { ConfigFileHelper } from "../file-helper.ts/config-file.helper"; + +export function getSelectors(contract: ContractFactory): Array { + const signatures = Object.keys(contract.interface.functions); + const selectors = signatures.reduce((acc, val) => { + acc.push(contract.interface.getSighash(val)); + return acc; + }, [] as Array); + return selectors; +} + +export function facetContractNameToAddress(contractName: string): string { + const config = new ConfigFileHelper().getConfig(); + const facetList = config.moneyMarket.facets as any; + contractName = _.camelCase(contractName); + const address = facetList[contractName]; + if (!address) { + throw new Error(`${contractName} not found in config`); + } + return address; +} diff --git a/foundry.toml b/foundry.toml index 17c11736..71a9a307 100644 --- a/foundry.toml +++ b/foundry.toml @@ -3,6 +3,7 @@ optimizer = true optimizer-runs = 1 src = 'solidity/contracts' out = 'out' +cache_path = './forge_cache' libs = ['node_modules'] test = 'solidity/tests' fs_permissions = [{ access = "read-write", path = "./" }] diff --git a/hardhat.config.ts b/hardhat.config.ts index 0ce6c019..0ad246cd 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -1,6 +1,5 @@ -import fs from "fs"; -import { HardhatUserConfig } from "hardhat/config"; import { config as dotEnvConfig } from "dotenv"; +import { HardhatUserConfig } from "hardhat/config"; dotEnvConfig(); import "@openzeppelin/hardhat-upgrades"; @@ -8,18 +7,10 @@ import "@nomiclabs/hardhat-ethers"; import "@typechain/hardhat"; import "hardhat-deploy"; -function getRemappings() { - return fs - .readFileSync("remappings.txt", "utf8") - .split("\n") - .filter(Boolean) - .map((line) => line.trim().split("=")); -} - -module.exports = { +const config: HardhatUserConfig = { defaultNetwork: "hardhat", networks: { - mainnet: { + bsc_mainnet: { chainId: 56, url: process.env.BSC_RPC_URL, accounts: process.env.DEPLOYER_PRIVATE_KEY !== undefined ? [process.env.DEPLOYER_PRIVATE_KEY] : [], @@ -36,27 +27,16 @@ module.exports = { }, paths: { sources: "./solidity/contracts", - tests: "./tests", cache: "./cache", artifacts: "./artifacts", }, typechain: { outDir: "./typechain", - target: process.env.TYPECHAIN_TARGET || "ethers-v5", + target: "ethers-v5", }, - // This fully resolves paths for imports in the ./lib directory for Hardhat - preprocess: { - eachLine: (hre: any) => ({ - transform: (line: string) => { - if (line.match(/^\s*import /i)) { - getRemappings().forEach(([find, replace]) => { - if (line.match(find)) { - line = line.replace(find, replace); - } - }); - } - return line; - }, - }), + mocha: { + timeout: 100000, }, }; + +export default config; diff --git a/package.json b/package.json index 484ddcc3..3278da7a 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,15 @@ { "name": "@alpaca-finance/alpaca-money-market", - "version": "0.0.1", + "version": "1.0.0", + "main": "index.js", "license": "MIT", "scripts": { "compile": "hardhat typechain --config hardhat.config.ts", - "build:cjs": "tsc -p tsconfig.cjs.json", + "hardhat": "hardhat", "build": "yarn run build:cjs", + "build:cjs": "tsc -p tsconfig.cjs.json", + "bsc_mainnet": "hardhat console --no-compile --network bsc_mainnet", + "----------Deploy Foundry Script-------------": "----------Deploy Foundry Script-------------", "exec:bsc_mainnet:proxy-admin:deploy": "forge script script/deployments/ProxyAdmin/deploy/ProxyAdmin.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:minifl:deploy": "forge script script/deployments/MiniFL/deploy/MiniFL.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:minifl:upgrade": "forge script script/deployments/MiniFL/upgrade/MiniFL.s.sol --rpc-url bsc_mainnet --broadcast --slow", @@ -16,6 +20,7 @@ "exec:bsc_mainnet:ib-token:deploy": "forge script script/deployments/InterestBearingToken/deploy/InterestBearingTokenImplementation.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:debt-token:deploy": "forge script script/deployments/DebtToken/deploy/DebtTokenImplementation.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:money-market:deploy": "forge script script/deployments/MoneyMarket/deploy/MoneyMarket.s.sol --rpc-url bsc_mainnet --broadcast --slow", + "exec:bsc_mainnet:money-market:cut:flash-loan-facet": "forge script script/deployments/MoneyMarket/diamond-cut/FlashloanFacetCut.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:money-market:config:open-market": "forge script script/deployments/MoneyMarket/config/OpenMarket.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:money-market:config:set-interest-model": "forge script script/deployments/MoneyMarket/config/SetInterestModel.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:money-market:config:set-fees": "forge script script/deployments/MoneyMarket/config/SetFees.s.sol --rpc-url bsc_mainnet --broadcast --slow", @@ -32,6 +37,9 @@ "exec:bsc_mainnet:money-market:config:set-repurchase-reward-model": "forge script script/deployments/MoneyMarket/config/SetRepurchaseRewardModel.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:money-market:config:set-risk-manager-ok": "forge script script/deployments/MoneyMarket/config/SetRiskManagersOkScript.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:money-market:config:withdraw-protocol-reserves": "forge script script/deployments/MoneyMarket/config/WithdrawProtocolReserves.s.sol --rpc-url bsc_mainnet --broadcast --slow", + "exec:bsc_mainnet:money-market:admin-facet:deploy": "forge script script/deployments/MoneyMarket/deploy/AdminFacet.s.sol --rpc-url bsc_mainnet --broadcast --slow", + "exec:bsc_mainnet:money-market:flash-loan-facet:deploy": "forge script script/deployments/MoneyMarket/deploy/FlashloanFacet.s.sol --rpc-url bsc_mainnet --broadcast --slow", + "exec:bsc_mainnet:money-market:view-facet:deploy": "forge script script/deployments/MoneyMarket/deploy/ViewFacet.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:mm-account-manager:deploy": "forge script script/deployments/MoneyMarketAccountManager/deploy/MoneyMarketAccountManager.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:pancake-v2-liquidate-strat:deploy": "forge script script/deployments/PancakeswapV2LiquidationStrategy/deploy/PancakeswapV2LiquidationStrategy.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:pancake-v2-liquidate-ib-strat:deploy": "forge script script/deployments/PancakeswapV2IbTokenLiquidationStrategy/deploy/PancakeswapV2IbTokenLiquidationStrategy.s.sol --rpc-url bsc_mainnet --broadcast --slow", @@ -52,15 +60,21 @@ "exec:bsc_mainnet:triple-slope-model0:deploy": "forge script script/deployments/InterestModels/deploy/TripleSlopeModel0.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:double-slope-model1:deploy": "forge script script/deployments/InterestModels/deploy/MMDoubleSlopeModel1.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:double-slope-model2:deploy": "forge script script/deployments/InterestModels/deploy/MMDoubleSlopeModel2.s.sol --rpc-url bsc_mainnet --broadcast --slow", - "exec:bsc_mainnet:double-slope-model3:deploy": "forge script script/deployments/InterestModels/deploy/MMDoubleSlopeModel3.s.sol --rpc-url bsc_mainnet --broadcast --slow" + "exec:bsc_mainnet:double-slope-model3:deploy": "forge script script/deployments/InterestModels/deploy/MMDoubleSlopeModel3.s.sol --rpc-url bsc_mainnet --broadcast --slow", + "----------Deploy Hardhat -------------": "----------Deploy Hardhat -------------", + "exec:bsc_mainnet:money-market:diamond-cut": "hardhat --network bsc_mainnet deploy --no-compile --reset --tags ExecuteDiamondCut" }, "devDependencies": { "@typechain/ethers-v5": "^10.0.0", "@typechain/hardhat": "^5.0.0", "@types/mocha": "^9.1.0", + "@types/lodash": "^4.14.191", + "@types/readline-sync": "^1.4.4", "ts-node": "^10.7.0", "typescript": "^4.6.2", - "typechain": "^8.0.0" + "typechain": "^8.0.0", + "lodash": "^4.17.21", + "readline-sync": "^1.4.10" }, "dependencies": { "@nomiclabs/hardhat-ethers": "^2.0.5", @@ -74,5 +88,8 @@ "prettier": "^2.6.0", "prettier-plugin-solidity": "^1.0.0-beta.19", "commander": "^9.2.0" + }, + "engines": { + "node": ">=14.15.4" } } diff --git a/script/deployments/MoneyMarket/deploy/AdminFacet.s.sol b/script/deployments/MoneyMarket/deploy/AdminFacet.s.sol new file mode 100644 index 00000000..8aa20c5a --- /dev/null +++ b/script/deployments/MoneyMarket/deploy/AdminFacet.s.sol @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import "../../../BaseScript.sol"; + +import { AdminFacet } from "solidity/contracts/money-market/facets/AdminFacet.sol"; + +contract DeployAdminFacetScript is BaseScript { + using stdJson for string; + + function run() public { + /* + ░██╗░░░░░░░██╗░█████╗░██████╗░███╗░░██╗██╗███╗░░██╗░██████╗░ + ░██║░░██╗░░██║██╔══██╗██╔══██╗████╗░██║██║████╗░██║██╔════╝░ + ░╚██╗████╗██╔╝███████║██████╔╝██╔██╗██║██║██╔██╗██║██║░░██╗░ + ░░████╔═████║░██╔══██║██╔══██╗██║╚████║██║██║╚████║██║░░╚██╗ + ░░╚██╔╝░╚██╔╝░██║░░██║██║░░██║██║░╚███║██║██║░╚███║╚██████╔╝ + ░░░╚═╝░░░╚═╝░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝╚═╝╚═╝░░╚══╝░╚═════╝░ + Check all variables below before execute the deployment script + */ + + _startDeployerBroadcast(); + + address adminFacet = address(new AdminFacet()); + + _stopBroadcast(); + + _writeJson(vm.toString(adminFacet), ".moneyMarket.facets.adminFacet"); + } +} diff --git a/script/deployments/MoneyMarket/deploy/FlashloanFacet.s.sol b/script/deployments/MoneyMarket/deploy/FlashloanFacet.s.sol new file mode 100644 index 00000000..8ef105e9 --- /dev/null +++ b/script/deployments/MoneyMarket/deploy/FlashloanFacet.s.sol @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import "../../../BaseScript.sol"; + +import { FlashloanFacet } from "solidity/contracts/money-market/facets/FlashloanFacet.sol"; + +contract DeployFlashloanFacetScript is BaseScript { + using stdJson for string; + + function run() public { + /* + ░██╗░░░░░░░██╗░█████╗░██████╗░███╗░░██╗██╗███╗░░██╗░██████╗░ + ░██║░░██╗░░██║██╔══██╗██╔══██╗████╗░██║██║████╗░██║██╔════╝░ + ░╚██╗████╗██╔╝███████║██████╔╝██╔██╗██║██║██╔██╗██║██║░░██╗░ + ░░████╔═████║░██╔══██║██╔══██╗██║╚████║██║██║╚████║██║░░╚██╗ + ░░╚██╔╝░╚██╔╝░██║░░██║██║░░██║██║░╚███║██║██║░╚███║╚██████╔╝ + ░░░╚═╝░░░╚═╝░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝╚═╝╚═╝░░╚══╝░╚═════╝░ + Check all variables below before execute the deployment script + */ + + _startDeployerBroadcast(); + + address flashloanFacet = address(new FlashloanFacet()); + + _stopBroadcast(); + + _writeJson(vm.toString(flashloanFacet), ".moneyMarket.facets.flashloanFacet"); + } +} diff --git a/script/deployments/MoneyMarket/deploy/MoneyMarket.s.sol b/script/deployments/MoneyMarket/deploy/MoneyMarket.s.sol index b14c65a0..b6d5ed6c 100644 --- a/script/deployments/MoneyMarket/deploy/MoneyMarket.s.sol +++ b/script/deployments/MoneyMarket/deploy/MoneyMarket.s.sol @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: BUSL +// SPDX-License-Identifier: MIT pragma solidity 0.8.19; import "solidity/tests/utils/StdJson.sol"; diff --git a/script/deployments/MoneyMarket/deploy/ViewFacet.s.sol b/script/deployments/MoneyMarket/deploy/ViewFacet.s.sol new file mode 100644 index 00000000..19a9f6c7 --- /dev/null +++ b/script/deployments/MoneyMarket/deploy/ViewFacet.s.sol @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import "../../../BaseScript.sol"; + +import { ViewFacet } from "solidity/contracts/money-market/facets/ViewFacet.sol"; + +contract DeployViewFacetScript is BaseScript { + using stdJson for string; + + function run() public { + /* + ░██╗░░░░░░░██╗░█████╗░██████╗░███╗░░██╗██╗███╗░░██╗░██████╗░ + ░██║░░██╗░░██║██╔══██╗██╔══██╗████╗░██║██║████╗░██║██╔════╝░ + ░╚██╗████╗██╔╝███████║██████╔╝██╔██╗██║██║██╔██╗██║██║░░██╗░ + ░░████╔═████║░██╔══██║██╔══██╗██║╚████║██║██║╚████║██║░░╚██╗ + ░░╚██╔╝░╚██╔╝░██║░░██║██║░░██║██║░╚███║██║██║░╚███║╚██████╔╝ + ░░░╚═╝░░░╚═╝░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝╚═╝╚═╝░░╚══╝░╚═════╝░ + Check all variables below before execute the deployment script + */ + + _startDeployerBroadcast(); + + address viewFacet = address(new ViewFacet()); + + _stopBroadcast(); + + _writeJson(vm.toString(viewFacet), ".moneyMarket.facets.viewFacet"); + } +} diff --git a/script/deployments/MoneyMarket/diamond-cut/FlashloanFacetCut.s.sol b/script/deployments/MoneyMarket/diamond-cut/FlashloanFacetCut.s.sol new file mode 100644 index 00000000..1d8854d2 --- /dev/null +++ b/script/deployments/MoneyMarket/diamond-cut/FlashloanFacetCut.s.sol @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import "../../../BaseScript.sol"; + +import { IMMDiamondCut } from "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol"; +import { IFlashloanFacet } from "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol"; + +contract DiamondCutFlashloanFacetScript is BaseScript { + using stdJson for string; + + function run() public { + /* + ░██╗░░░░░░░██╗░█████╗░██████╗░███╗░░██╗██╗███╗░░██╗░██████╗░ + ░██║░░██╗░░██║██╔══██╗██╔══██╗████╗░██║██║████╗░██║██╔════╝░ + ░╚██╗████╗██╔╝███████║██████╔╝██╔██╗██║██║██╔██╗██║██║░░██╗░ + ░░████╔═████║░██╔══██║██╔══██╗██║╚████║██║██║╚████║██║░░╚██╗ + ░░╚██╔╝░╚██╔╝░██║░░██║██║░░██║██║░╚███║██║██║░╚███║╚██████╔╝ + ░░░╚═╝░░░╚═╝░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝╚═╝╚═╝░░╚══╝░╚═════╝░ + Check all variables below before execute the deployment script + */ + + address flashloanFacet = 0x029dD6e7FaA03252d6c19240fA264d82a2556971; + + IMMDiamondCut.FacetCut[] memory facetCuts = new IMMDiamondCut.FacetCut[](1); + + facetCuts[0] = IMMDiamondCut.FacetCut({ + action: IMMDiamondCut.FacetCutAction.Add, + facetAddress: flashloanFacet, + functionSelectors: getFlashloanFacetSelectors() + }); + + _startDeployerBroadcast(); + + IMMDiamondCut(address(moneyMarket)).diamondCut(facetCuts, address(0), ""); + + _stopBroadcast(); + } + + function getFlashloanFacetSelectors() internal pure returns (bytes4[] memory _selectors) { + _selectors = new bytes4[](1); + _selectors[0] = IFlashloanFacet.flashloan.selector; + } +} diff --git a/tsconfig.json b/tsconfig.json index 17676439..a56843d7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -32,6 +32,6 @@ "artifacts" ], "files": [ - "typechain/index.d.ts" + "typechain/index.ts" ] } \ No newline at end of file diff --git a/type-script/scripts/write-mini-fl-pool.ts b/type-script/scripts/write-mini-fl-pool.ts index 58babc94..165efe28 100644 --- a/type-script/scripts/write-mini-fl-pool.ts +++ b/type-script/scripts/write-mini-fl-pool.ts @@ -1,6 +1,6 @@ import { Command } from "commander"; -import { ConfigFileHelper } from "../file-helper.ts/config-file.helper"; -import { MiniFLPool } from "../interfaces"; +import { ConfigFileHelper } from "../../deploy/file-helper.ts/config-file.helper"; +import { MiniFLPool } from "../../deploy/interfaces"; async function main(id: string, name: string, stakingToken: string) { const configFileHelper = new ConfigFileHelper(); diff --git a/type-script/scripts/write-new-market.ts b/type-script/scripts/write-new-market.ts index 44793497..5d428ca3 100644 --- a/type-script/scripts/write-new-market.ts +++ b/type-script/scripts/write-new-market.ts @@ -1,6 +1,6 @@ import { Command } from "commander"; -import { ConfigFileHelper } from "../file-helper.ts/config-file.helper"; -import { AssetTier, Market, reverseAssetTier } from "../interfaces"; +import { ConfigFileHelper } from "../../deploy/file-helper.ts/config-file.helper"; +import { AssetTier, Market, reverseAssetTier } from "../../deploy/interfaces"; async function main( name: string, diff --git a/yarn.lock b/yarn.lock index be0b7b2c..6c426080 100644 --- a/yarn.lock +++ b/yarn.lock @@ -957,6 +957,11 @@ "@types/level-errors" "*" "@types/node" "*" +"@types/lodash@^4.14.191": + version "4.14.194" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.194.tgz#b71eb6f7a0ff11bff59fc987134a093029258a76" + integrity sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g== + "@types/lru-cache@^5.1.0": version "5.1.1" resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" @@ -989,6 +994,11 @@ resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== +"@types/readline-sync@^1.4.4": + version "1.4.4" + resolved "https://registry.yarnpkg.com/@types/readline-sync/-/readline-sync-1.4.4.tgz#8568292efe4ddd94d0ccee958b29cc3f4e0ea140" + integrity sha512-cFjVIoiamX7U6zkO2VPvXyTxbFDdiRo902IarJuPVxBhpDnXhwSaVE86ip+SCuyWBbEioKCkT4C88RNTxBM1Dw== + "@types/secp256k1@^4.0.1": version "4.0.3" resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" @@ -2359,7 +2369,7 @@ lodash.camelcase@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== -lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15: +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -2765,6 +2775,11 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +readline-sync@^1.4.10: + version "1.4.10" + resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.10.tgz#41df7fbb4b6312d673011594145705bf56d8873b" + integrity sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw== + reduce-flatten@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" From af903d9580e92a4a279acb080ce41651fc1d91c1 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Wed, 10 May 2023 11:43:07 +0700 Subject: [PATCH 61/87] fix: add check whitelist to lib deployment --- script/deployments/libraries/LibMoneyMarketDeployment.sol | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/script/deployments/libraries/LibMoneyMarketDeployment.sol b/script/deployments/libraries/LibMoneyMarketDeployment.sol index d4ebcbc6..a4ffb14e 100644 --- a/script/deployments/libraries/LibMoneyMarketDeployment.sol +++ b/script/deployments/libraries/LibMoneyMarketDeployment.sol @@ -166,7 +166,7 @@ library LibMoneyMarketDeployment { } function getViewFacetSelectors() internal pure returns (bytes4[] memory _selectors) { - _selectors = new bytes4[](43); + _selectors = new bytes4[](48); _selectors[0] = IViewFacet.getProtocolReserve.selector; _selectors[1] = IViewFacet.getTokenConfig.selector; _selectors[2] = IViewFacet.getOverCollatDebtSharesOf.selector; @@ -210,6 +210,11 @@ library LibMoneyMarketDeployment { _selectors[40] = IViewFacet.getOverCollatInterestModel.selector; _selectors[41] = IViewFacet.getOverCollatInterestRate.selector; _selectors[42] = IViewFacet.getFlashloanParams.selector; + _selectors[43] = IViewFacet.isLiquidationStratOk.selector; + _selectors[44] = IViewFacet.isLiquidatorOk.selector; + _selectors[45] = IViewFacet.isAccountManagersOk.selector; + _selectors[46] = IViewFacet.isRiskManagersOk.selector; + _selectors[47] = IViewFacet.isOperatorsOk.selector; } function getLendFacetSelectors() internal pure returns (bytes4[] memory _selectors) { From f9cc5bb442c1e471945f98b165658b59f2a2e0e1 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Wed, 10 May 2023 14:36:15 +0700 Subject: [PATCH 62/87] feat: update deploy scirpt (pending config) --- .mainnet.json | 11 ++++- script/BaseScript.sol | 9 ++++ .../config/SetAllocPointScript.s.sol | 30 +++++++++++++ .../config/SetRevenueTokenScript.s.sol | 30 +++++++++++++ .../config/SetTreasuryAddressScript.s.sol | 31 +++++++++++++ .../config/SetWhitelistesCallers.s.sol | 34 +++++++++++++++ .../SmartTreasury/deploy/SmartTreasury.s.sol | 43 +++++++++++++++++++ .../ISmartTreasury.sol | 7 +++ .../smart-treasury/SmartTreasury.sol | 41 +++++++++++------- .../SmartTreasury_Distribute.t.sol | 2 +- .../SmartTreasury_SetConfigs.t.sol | 2 +- 11 files changed, 220 insertions(+), 20 deletions(-) create mode 100644 script/deployments/SmartTreasury/config/SetAllocPointScript.s.sol create mode 100644 script/deployments/SmartTreasury/config/SetRevenueTokenScript.s.sol create mode 100644 script/deployments/SmartTreasury/config/SetTreasuryAddressScript.s.sol create mode 100644 script/deployments/SmartTreasury/config/SetWhitelistesCallers.s.sol create mode 100644 script/deployments/SmartTreasury/deploy/SmartTreasury.s.sol rename solidity/contracts/{smart-treasury => interfaces}/ISmartTreasury.sol (76%) diff --git a/.mainnet.json b/.mainnet.json index 18ca62d0..d45db435 100644 --- a/.mainnet.json +++ b/.mainnet.json @@ -194,5 +194,12 @@ } ] }, - "moneyMarketReader": "0x1d3cb2f91207afDA9E9baB89caDE1a4c3222cf6a" -} \ No newline at end of file + "moneyMarketReader": "0x1d3cb2f91207afDA9E9baB89caDE1a4c3222cf6a", + "smartTreasury": { + "implementation": "", + "proxy": "" + }, + "pathReader": { + "v3": "" + } +} diff --git a/script/BaseScript.sol b/script/BaseScript.sol index bd73395a..b3f3959d 100644 --- a/script/BaseScript.sol +++ b/script/BaseScript.sol @@ -15,6 +15,7 @@ import { IBorrowFacet } from "solidity/contracts/money-market/interfaces/IBorrow import { ILendFacet } from "solidity/contracts/money-market/interfaces/ILendFacet.sol"; import { IMMOwnershipFacet } from "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol"; import { IMiniFL } from "solidity/contracts/miniFL/interfaces/IMiniFL.sol"; +import { ISmartTreasury } from "solidity/contracts/interfaces/ISmartTreasury.sol"; import { IMoneyMarketAccountManager } from "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol"; import { IAlpacaV2Oracle } from "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol"; import { IERC20 } from "solidity/contracts/money-market/interfaces/IERC20.sol"; @@ -48,6 +49,7 @@ abstract contract BaseScript is Script { address internal pancakeswapFactoryV3; address internal pancakeswapRouterV2; address internal pancakeswapRouterV3; + ISmartTreasury internal smartTreasury; // shareConfig address internal fixFeeModel500Bps; @@ -55,6 +57,9 @@ abstract contract BaseScript is Script { address internal doubleSlope2; address internal doubleSlope3; + // path reader + address internal pathReaderV3; + // tokens address internal ada; address internal alpaca; @@ -79,6 +84,7 @@ abstract contract BaseScript is Script { moneyMarket = abi.decode(configJson.parseRaw(".moneyMarket.moneyMarketDiamond"), (IMoneyMarket)); proxyAdminAddress = abi.decode(configJson.parseRaw(".proxyAdmin"), (address)); miniFL = abi.decode(configJson.parseRaw(".miniFL.proxy"), (IMiniFL)); + smartTreasury = abi.decode(configJson.parseRaw(".smartTreasury.proxy"), (ISmartTreasury)); accountManager = abi.decode(configJson.parseRaw(".moneyMarket.accountManager.proxy"), (IMoneyMarketAccountManager)); nativeRelayer = abi.decode(configJson.parseRaw(".nativeRelayer"), (address)); usdPlaceholder = abi.decode(configJson.parseRaw(".usdPlaceholder"), (address)); @@ -92,6 +98,9 @@ abstract contract BaseScript is Script { doubleSlope2 = abi.decode(configJson.parseRaw(".sharedConfig.doubleSlope2"), (address)); doubleSlope3 = abi.decode(configJson.parseRaw(".sharedConfig.doubleSlope3"), (address)); + // path reader + pathReaderV3 = abi.decode(configJson.parseRaw(".pathReader.v3"), (address)); + ibTokenImplementation = abi.decode( configJson.parseRaw(".moneyMarket.interestBearingTokenImplementation"), (address) diff --git a/script/deployments/SmartTreasury/config/SetAllocPointScript.s.sol b/script/deployments/SmartTreasury/config/SetAllocPointScript.s.sol new file mode 100644 index 00000000..ea0b2cea --- /dev/null +++ b/script/deployments/SmartTreasury/config/SetAllocPointScript.s.sol @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import "../../../BaseScript.sol"; + +import { LibConstant } from "solidity/contracts/money-market/libraries/LibConstant.sol"; +import { TransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; + +contract SetAllocPointScript is BaseScript { + using stdJson for string; + + function run() public { + /* + ░██╗░░░░░░░██╗░█████╗░██████╗░███╗░░██╗██╗███╗░░██╗░██████╗░ + ░██║░░██╗░░██║██╔══██╗██╔══██╗████╗░██║██║████╗░██║██╔════╝░ + ░╚██╗████╗██╔╝███████║██████╔╝██╔██╗██║██║██╔██╗██║██║░░██╗░ + ░░████╔═████║░██╔══██║██╔══██╗██║╚████║██║██║╚████║██║░░╚██╗ + ░░╚██╔╝░╚██╔╝░██║░░██║██║░░██║██║░╚███║██║██║░╚███║╚██████╔╝ + ░░░╚═╝░░░╚═╝░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝╚═╝╚═╝░░╚══╝░╚═════╝░ + Check all variables below before execute the deployment script + */ + + _startDeployerBroadcast(); + + // TODO: how much for each? + smartTreasury.setAllocPoints(_revenueAllocPoint, _devAllocPoint, _burnAllocPoint); + + _stopBroadcast(); + } +} diff --git a/script/deployments/SmartTreasury/config/SetRevenueTokenScript.s.sol b/script/deployments/SmartTreasury/config/SetRevenueTokenScript.s.sol new file mode 100644 index 00000000..b4364dd3 --- /dev/null +++ b/script/deployments/SmartTreasury/config/SetRevenueTokenScript.s.sol @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import "../../../BaseScript.sol"; + +import { LibConstant } from "solidity/contracts/money-market/libraries/LibConstant.sol"; +import { TransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; + +contract SetRevenueTokenScript is BaseScript { + using stdJson for string; + + function run() public { + /* + ░██╗░░░░░░░██╗░█████╗░██████╗░███╗░░██╗██╗███╗░░██╗░██████╗░ + ░██║░░██╗░░██║██╔══██╗██╔══██╗████╗░██║██║████╗░██║██╔════╝░ + ░╚██╗████╗██╔╝███████║██████╔╝██╔██╗██║██║██╔██╗██║██║░░██╗░ + ░░████╔═████║░██╔══██║██╔══██╗██║╚████║██║██║╚████║██║░░╚██╗ + ░░╚██╔╝░╚██╔╝░██║░░██║██║░░██║██║░╚███║██║██║░╚███║╚██████╔╝ + ░░░╚═╝░░░╚═╝░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝╚═╝╚═╝░░╚══╝░╚═════╝░ + Check all variables below before execute the deployment script + */ + + _startDeployerBroadcast(); + + // TODO: what's token? + smartTreasury.setRevenueToken(_revenueToken); + + _stopBroadcast(); + } +} diff --git a/script/deployments/SmartTreasury/config/SetTreasuryAddressScript.s.sol b/script/deployments/SmartTreasury/config/SetTreasuryAddressScript.s.sol new file mode 100644 index 00000000..0e534c2b --- /dev/null +++ b/script/deployments/SmartTreasury/config/SetTreasuryAddressScript.s.sol @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import "../../../BaseScript.sol"; + +import { LibConstant } from "solidity/contracts/money-market/libraries/LibConstant.sol"; +import { TransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; + +contract SetTreasuryAddressScript is BaseScript { + using stdJson for string; + + function run() public { + /* + ░██╗░░░░░░░██╗░█████╗░██████╗░███╗░░██╗██╗███╗░░██╗░██████╗░ + ░██║░░██╗░░██║██╔══██╗██╔══██╗████╗░██║██║████╗░██║██╔════╝░ + ░╚██╗████╗██╔╝███████║██████╔╝██╔██╗██║██║██╔██╗██║██║░░██╗░ + ░░████╔═████║░██╔══██║██╔══██╗██║╚████║██║██║╚████║██║░░╚██╗ + ░░╚██╔╝░╚██╔╝░██║░░██║██║░░██║██║░╚███║██║██║░╚███║╚██████╔╝ + ░░░╚═╝░░░╚═╝░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝╚═╝╚═╝░░╚══╝░╚═════╝░ + Check all variables below before execute the deployment script + */ + + _startDeployerBroadcast(); + + // TODO: pending revenueTreasury, devTreasury, burnTreasury + + smartTreasury.setTreasuryAddresses(_revenueTreasury, _devTreasury, _burnTreasury); + + _stopBroadcast(); + } +} diff --git a/script/deployments/SmartTreasury/config/SetWhitelistesCallers.s.sol b/script/deployments/SmartTreasury/config/SetWhitelistesCallers.s.sol new file mode 100644 index 00000000..29d81267 --- /dev/null +++ b/script/deployments/SmartTreasury/config/SetWhitelistesCallers.s.sol @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import "../../../BaseScript.sol"; + +import { LibConstant } from "solidity/contracts/money-market/libraries/LibConstant.sol"; +import { TransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; + +contract SetWhitelistesCallers is BaseScript { + using stdJson for string; + + function run() public { + /* + ░██╗░░░░░░░██╗░█████╗░██████╗░███╗░░██╗██╗███╗░░██╗░██████╗░ + ░██║░░██╗░░██║██╔══██╗██╔══██╗████╗░██║██║████╗░██║██╔════╝░ + ░╚██╗████╗██╔╝███████║██████╔╝██╔██╗██║██║██╔██╗██║██║░░██╗░ + ░░████╔═████║░██╔══██║██╔══██╗██║╚████║██║██║╚████║██║░░╚██╗ + ░░╚██╔╝░╚██╔╝░██║░░██║██║░░██║██║░╚███║██║██║░╚███║╚██████╔╝ + ░░░╚═╝░░░╚═╝░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝╚═╝╚═╝░░╚══╝░╚═════╝░ + Check all variables below before execute the deployment script + */ + + _startDeployerBroadcast(); + + address[] memory _callers = new address()[1]; + + // TODO: who is operator (keeper) + // _callers[0] = address(); + + smartTreasury.setWhitelistedCallers(_callers, true); + + _stopBroadcast(); + } +} diff --git a/script/deployments/SmartTreasury/deploy/SmartTreasury.s.sol b/script/deployments/SmartTreasury/deploy/SmartTreasury.s.sol new file mode 100644 index 00000000..b99b7a70 --- /dev/null +++ b/script/deployments/SmartTreasury/deploy/SmartTreasury.s.sol @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import "../../../BaseScript.sol"; + +import { LibConstant } from "solidity/contracts/money-market/libraries/LibConstant.sol"; +import { SmartTreasury } from "solidity/contracts/smart-treasury/SmartTreasury.sol"; +import { TransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; + +contract DeploySmartTreasuryScript is BaseScript { + using stdJson for string; + + function run() public { + /* + ░██╗░░░░░░░██╗░█████╗░██████╗░███╗░░██╗██╗███╗░░██╗░██████╗░ + ░██║░░██╗░░██║██╔══██╗██╔══██╗████╗░██║██║████╗░██║██╔════╝░ + ░╚██╗████╗██╔╝███████║██████╔╝██╔██╗██║██║██╔██╗██║██║░░██╗░ + ░░████╔═████║░██╔══██║██╔══██╗██║╚████║██║██║╚████║██║░░╚██╗ + ░░╚██╔╝░╚██╔╝░██║░░██║██║░░██║██║░╚███║██║██║░╚███║╚██████╔╝ + ░░░╚═╝░░░╚═╝░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝╚═╝╚═╝░░╚══╝░╚═════╝░ + Check all variables below before execute the deployment script + */ + + _startDeployerBroadcast(); + // deploy implementation + address smartTreasuryImplementation = address(new SmartTreasury()); + + // deploy proxy + bytes memory data = abi.encodeWithSelector( + bytes4(keccak256("initialize(address,address)")), + address(pancakeswapRouterV3), + address(pathReaderV3) + ); + address smartTreasuryProxy = address( + new TransparentUpgradeableProxy(smartTreasuryImplementation, proxyAdminAddress, data) + ); + + _stopBroadcast(); + + _writeJson(vm.toString(smartTreasuryImplementation), ".moneyMarket.smartTreasury.implementation"); + _writeJson(vm.toString(smartTreasuryProxy), ".moneyMarket.smartTreasury.proxy"); + } +} diff --git a/solidity/contracts/smart-treasury/ISmartTreasury.sol b/solidity/contracts/interfaces/ISmartTreasury.sol similarity index 76% rename from solidity/contracts/smart-treasury/ISmartTreasury.sol rename to solidity/contracts/interfaces/ISmartTreasury.sol index c89f1624..e0a81efc 100644 --- a/solidity/contracts/smart-treasury/ISmartTreasury.sol +++ b/solidity/contracts/interfaces/ISmartTreasury.sol @@ -2,6 +2,7 @@ pragma solidity 0.8.19; interface ISmartTreasury { + error SmartTreasury_InvalidAddress(); error SmartTreasury_PathConfigNotFound(); error SmartTreasury_Unauthorized(); @@ -16,5 +17,11 @@ interface ISmartTreasury { function setRevenueToken(address _revenueToken) external; + function setTreasuryAddresses( + address _revenueTreasury, + address _devTreasury, + address _burnTreasury + ) external; + function setWhitelistedCallers(address[] calldata _callers, bool _allow) external; } diff --git a/solidity/contracts/smart-treasury/SmartTreasury.sol b/solidity/contracts/smart-treasury/SmartTreasury.sol index 2acebfe8..b0b5a8ad 100644 --- a/solidity/contracts/smart-treasury/SmartTreasury.sol +++ b/solidity/contracts/smart-treasury/SmartTreasury.sol @@ -11,26 +11,11 @@ import { LibSafeToken } from "../money-market/libraries/LibSafeToken.sol"; import { IUniSwapV3PathReader } from "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol"; import { IPancakeSwapRouterV3 } from "../money-market/interfaces/IPancakeSwapRouterV3.sol"; import { IERC20 } from "../money-market/interfaces/IERC20.sol"; -import { ISmartTreasury } from "./ISmartTreasury.sol"; +import { ISmartTreasury } from "../interfaces/ISmartTreasury.sol"; contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { using LibSafeToken for IERC20; - address public revenueTreasury; - address public devTreasury; - address public burnTreasury; - address public revenueToken; - - mapping(address => bool) public whitelistedCallers; - - uint256 public revenueAllocPoint; - uint256 public devAllocPoint; - uint256 public burnAllocPoint; - uint256 public totalAllocPoint; - - IPancakeSwapRouterV3 public router; - IUniSwapV3PathReader public pathReader; - event LogDistribute( address _token, uint256 _revenueAmount, @@ -46,6 +31,23 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { ); event LogSetRevenueToken(address _revenueToken); event LogSetWhitelistedCaller(address indexed _caller, bool _allow); + event LogFailedDistribution(address _token); + event LogSetTreasuryAddresses(address _revenueTreasury, address _devTreasury, address _burnTreasury); + + address public revenueTreasury; + address public devTreasury; + address public burnTreasury; + address public revenueToken; + + uint256 public revenueAllocPoint; + uint256 public devAllocPoint; + uint256 public burnAllocPoint; + uint256 public totalAllocPoint; + + mapping(address => bool) public whitelistedCallers; + + IPancakeSwapRouterV3 public router; + IUniSwapV3PathReader public pathReader; modifier onlyWhitelisted() { if (!whitelistedCallers[msg.sender]) { @@ -112,9 +114,15 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { address _devTreasury, address _burnTreasury ) external onlyWhitelisted { + if (_revenueTreasury == address(0) || _devTreasury == address(0) || _burnTreasury == address(0)) { + revert SmartTreasury_InvalidAddress(); + } + revenueTreasury = _revenueTreasury; devTreasury = _devTreasury; burnTreasury = _burnTreasury; + + emit LogSetTreasuryAddresses(_revenueTreasury, _devTreasury, _burnTreasury); } /// @notice Set whitelisted callers @@ -151,6 +159,7 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { // Direct send to revenue treasury IERC20(_token).safeApprove(address(router), _revenueAmount); try router.exactInput(params) {} catch { + emit LogFailedDistribution(_token); return; } } diff --git a/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol b/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol index fc1d7a54..a8773c07 100644 --- a/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol +++ b/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol @@ -2,7 +2,7 @@ pragma solidity 0.8.19; import { BaseFork } from "./BaseFork.sol"; -import { ISmartTreasury } from "solidity/contracts/smart-treasury/ISmartTreasury.sol"; +import { ISmartTreasury } from "solidity/contracts/interfaces/ISmartTreasury.sol"; import { IPancakeSwapRouterV3 } from "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol"; import { IERC20 } from "solidity/contracts/money-market/interfaces/IERC20.sol"; diff --git a/solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol b/solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol index 4f968732..c6d05387 100644 --- a/solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol +++ b/solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol @@ -2,7 +2,7 @@ pragma solidity 0.8.19; import { BaseFork } from "./BaseFork.sol"; -import { ISmartTreasury } from "solidity/contracts/smart-treasury/ISmartTreasury.sol"; +import { ISmartTreasury } from "solidity/contracts/interfaces/ISmartTreasury.sol"; contract SmartTreasury_SetConfigs is BaseFork { function setUp() public override { From e05bdf7d65898fa196c6afc33a3816b502c518c6 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Wed, 10 May 2023 14:40:05 +0700 Subject: [PATCH 63/87] feat: add param in mainnet --- .mainnet.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.mainnet.json b/.mainnet.json index 8742bc46..2d9bea3e 100644 --- a/.mainnet.json +++ b/.mainnet.json @@ -195,5 +195,12 @@ } ] }, - "moneyMarketReader": "0x1d3cb2f91207afDA9E9baB89caDE1a4c3222cf6a" + "moneyMarketReader": "0x1d3cb2f91207afDA9E9baB89caDE1a4c3222cf6a", + "smartTreasury": { + "implementation": "", + "proxy": "" + }, + "pathReader": { + "v3": "" + } } From d190aefe3c240b71d1fe2ba03ee4f4377258276d Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Wed, 10 May 2023 14:44:15 +0700 Subject: [PATCH 64/87] fix: comment pending config --- .../SmartTreasury/config/SetAllocPointScript.s.sol | 2 +- .../SmartTreasury/config/SetRevenueTokenScript.s.sol | 2 +- .../SmartTreasury/config/SetTreasuryAddressScript.s.sol | 2 +- .../SmartTreasury/config/SetWhitelistesCallers.s.sol | 7 +++---- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/script/deployments/SmartTreasury/config/SetAllocPointScript.s.sol b/script/deployments/SmartTreasury/config/SetAllocPointScript.s.sol index ea0b2cea..f234cfae 100644 --- a/script/deployments/SmartTreasury/config/SetAllocPointScript.s.sol +++ b/script/deployments/SmartTreasury/config/SetAllocPointScript.s.sol @@ -23,7 +23,7 @@ contract SetAllocPointScript is BaseScript { _startDeployerBroadcast(); // TODO: how much for each? - smartTreasury.setAllocPoints(_revenueAllocPoint, _devAllocPoint, _burnAllocPoint); + // smartTreasury.setAllocPoints(_revenueAllocPoint, _devAllocPoint, _burnAllocPoint); _stopBroadcast(); } diff --git a/script/deployments/SmartTreasury/config/SetRevenueTokenScript.s.sol b/script/deployments/SmartTreasury/config/SetRevenueTokenScript.s.sol index b4364dd3..0709e30c 100644 --- a/script/deployments/SmartTreasury/config/SetRevenueTokenScript.s.sol +++ b/script/deployments/SmartTreasury/config/SetRevenueTokenScript.s.sol @@ -23,7 +23,7 @@ contract SetRevenueTokenScript is BaseScript { _startDeployerBroadcast(); // TODO: what's token? - smartTreasury.setRevenueToken(_revenueToken); + // smartTreasury.setRevenueToken(_revenueToken); _stopBroadcast(); } diff --git a/script/deployments/SmartTreasury/config/SetTreasuryAddressScript.s.sol b/script/deployments/SmartTreasury/config/SetTreasuryAddressScript.s.sol index 0e534c2b..79e844b1 100644 --- a/script/deployments/SmartTreasury/config/SetTreasuryAddressScript.s.sol +++ b/script/deployments/SmartTreasury/config/SetTreasuryAddressScript.s.sol @@ -24,7 +24,7 @@ contract SetTreasuryAddressScript is BaseScript { // TODO: pending revenueTreasury, devTreasury, burnTreasury - smartTreasury.setTreasuryAddresses(_revenueTreasury, _devTreasury, _burnTreasury); + // smartTreasury.setTreasuryAddresses(_revenueTreasury, _devTreasury, _burnTreasury); _stopBroadcast(); } diff --git a/script/deployments/SmartTreasury/config/SetWhitelistesCallers.s.sol b/script/deployments/SmartTreasury/config/SetWhitelistesCallers.s.sol index 29d81267..4134bc00 100644 --- a/script/deployments/SmartTreasury/config/SetWhitelistesCallers.s.sol +++ b/script/deployments/SmartTreasury/config/SetWhitelistesCallers.s.sol @@ -22,12 +22,11 @@ contract SetWhitelistesCallers is BaseScript { _startDeployerBroadcast(); - address[] memory _callers = new address()[1]; - // TODO: who is operator (keeper) - // _callers[0] = address(); - smartTreasury.setWhitelistedCallers(_callers, true); + // address[] memory _callers = new address()[1]; + // _callers[0] = address(); + // smartTreasury.setWhitelistedCallers(_callers, true); _stopBroadcast(); } From a2fc4aaf8f4b582a4f0ac9124f22891b7f97e3bd Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Wed, 10 May 2023 16:30:17 +0700 Subject: [PATCH 65/87] fix: add struct --- .../config/SetAllocPointScript.s.sol | 3 + .../contracts/interfaces/ISmartTreasury.sol | 13 ++-- .../smart-treasury/SmartTreasury.sol | 74 +++++++++---------- .../SmartTreasury_Distribute.t.sol | 5 +- .../SmartTreasury_SetConfigs.t.sol | 13 ++-- 5 files changed, 58 insertions(+), 50 deletions(-) diff --git a/script/deployments/SmartTreasury/config/SetAllocPointScript.s.sol b/script/deployments/SmartTreasury/config/SetAllocPointScript.s.sol index f234cfae..b6def29c 100644 --- a/script/deployments/SmartTreasury/config/SetAllocPointScript.s.sol +++ b/script/deployments/SmartTreasury/config/SetAllocPointScript.s.sol @@ -4,6 +4,7 @@ pragma solidity 0.8.19; import "../../../BaseScript.sol"; import { LibConstant } from "solidity/contracts/money-market/libraries/LibConstant.sol"; +import { ISmartTreasury } from "solidity/contracts/interfaces/ISmartTreasury.sol"; import { TransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; contract SetAllocPointScript is BaseScript { @@ -23,6 +24,8 @@ contract SetAllocPointScript is BaseScript { _startDeployerBroadcast(); // TODO: how much for each? + + // ISmartTreasury.AllocPoints memory _allocPoints = ISmartTreasury.AllocPoints(x,x,x); // smartTreasury.setAllocPoints(_revenueAllocPoint, _devAllocPoint, _burnAllocPoint); _stopBroadcast(); diff --git a/solidity/contracts/interfaces/ISmartTreasury.sol b/solidity/contracts/interfaces/ISmartTreasury.sol index e0a81efc..417be15f 100644 --- a/solidity/contracts/interfaces/ISmartTreasury.sol +++ b/solidity/contracts/interfaces/ISmartTreasury.sol @@ -6,14 +6,15 @@ interface ISmartTreasury { error SmartTreasury_PathConfigNotFound(); error SmartTreasury_Unauthorized(); - // call to auto split target token to each destination + struct AllocPoints { + uint16 revenueAllocPoint; + uint16 devAllocPoint; + uint16 burnAllocPoint; + } + function distribute(address[] calldata _tokens) external; - function setAllocPoints( - uint256 _revenueAllocPoint, - uint256 _devAllocPoint, - uint256 _burnAllocPoint - ) external; + function setAllocPoints(AllocPoints calldata _allocPoints) external; function setRevenueToken(address _revenueToken) external; diff --git a/solidity/contracts/smart-treasury/SmartTreasury.sol b/solidity/contracts/smart-treasury/SmartTreasury.sol index b0b5a8ad..db6299bf 100644 --- a/solidity/contracts/smart-treasury/SmartTreasury.sol +++ b/solidity/contracts/smart-treasury/SmartTreasury.sol @@ -16,34 +16,21 @@ import { ISmartTreasury } from "../interfaces/ISmartTreasury.sol"; contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { using LibSafeToken for IERC20; - event LogDistribute( - address _token, - uint256 _revenueAmount, - uint256 _devAmount, - uint256 _burnAmount, - uint256 _totalAmount - ); - event LogSetAllocPoints( - uint256 _revenueAllocPoint, - uint256 _devAllocPoint, - uint256 _burnAllocPoint, - uint256 _totalAllocPoint - ); + event LogDistribute(address _token, uint256 _revenueAmount, uint256 _devAmount, uint256 _burnAmount); + event LogSetAllocPoints(uint256 _revenueAllocPoint, uint256 _devAllocPoint, uint256 _burnAllocPoint); event LogSetRevenueToken(address _revenueToken); event LogSetWhitelistedCaller(address indexed _caller, bool _allow); event LogFailedDistribution(address _token); event LogSetTreasuryAddresses(address _revenueTreasury, address _devTreasury, address _burnTreasury); + event LogWithdraw(address _token, address _to); + + AllocPoints public allocPoints; address public revenueTreasury; address public devTreasury; address public burnTreasury; address public revenueToken; - uint256 public revenueAllocPoint; - uint256 public devAllocPoint; - uint256 public burnAllocPoint; - uint256 public totalAllocPoint; - mapping(address => bool) public whitelistedCallers; IPancakeSwapRouterV3 public router; @@ -80,20 +67,13 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { } /// @notice Set allocation points - /// @param _revenueAllocPoint An allocation point for revenue treasury. - /// @param _devAllocPoint An allocation point for dev treasury. - /// @param _burnAllocPoint An allocation point for burn treasury. - function setAllocPoints( - uint256 _revenueAllocPoint, - uint256 _devAllocPoint, - uint256 _burnAllocPoint - ) external onlyWhitelisted { - totalAllocPoint = _revenueAllocPoint + _devAllocPoint + _burnAllocPoint; - revenueAllocPoint = _revenueAllocPoint; - devAllocPoint = _devAllocPoint; - burnAllocPoint = _burnAllocPoint; + /// @param _allocPoints A struct of treasury addresses + function setAllocPoints(AllocPoints calldata _allocPoints) external onlyWhitelisted { + allocPoints.revenueAllocPoint = _allocPoints.revenueAllocPoint; + allocPoints.devAllocPoint = _allocPoints.devAllocPoint; + allocPoints.burnAllocPoint = _allocPoints.burnAllocPoint; - emit LogSetAllocPoints(_revenueAllocPoint, _devAllocPoint, _burnAllocPoint, totalAllocPoint); + emit LogSetAllocPoints(_allocPoints.revenueAllocPoint, _allocPoints.devAllocPoint, _allocPoints.burnAllocPoint); } /// @notice Set revenue token @@ -141,13 +121,13 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { } function _distribute(address _token) internal { - bytes memory _path = pathReader.paths(_token, revenueToken); - if (_path.length == 0) revert SmartTreasury_PathConfigNotFound(); - uint256 _amount = IERC20(_token).balanceOf(address(this)); (uint256 _revenueAmount, uint256 _devAmount, uint256 _burnAmount) = _allocate(_amount); if (_revenueAmount != 0) { + bytes memory _path = pathReader.paths(_token, revenueToken); + if (_path.length == 0) revert SmartTreasury_PathConfigNotFound(); + IPancakeSwapRouterV3.ExactInputParams memory params = IPancakeSwapRouterV3.ExactInputParams({ path: _path, recipient: revenueTreasury, @@ -172,7 +152,7 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { IERC20(_token).safeTransfer(burnTreasury, _burnAmount); } - emit LogDistribute(_token, _revenueAmount, _devAmount, _burnAmount, _amount); + emit LogDistribute(_token, _revenueAmount, _devAmount, _burnAmount); } function _allocate(uint256 _amount) @@ -185,11 +165,31 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { ) { if (_amount != 0) { - _devAmount = (_amount * devAllocPoint) / totalAllocPoint; - _burnAmount = (_amount * burnAllocPoint) / totalAllocPoint; + AllocPoints memory _allocPoints = allocPoints; + uint64 _totalAllocPoint = _allocPoints.revenueAllocPoint + + _allocPoints.devAllocPoint + + _allocPoints.burnAllocPoint; + _devAmount = (_amount * _allocPoints.devAllocPoint) / _totalAllocPoint; + _burnAmount = (_amount * _allocPoints.burnAllocPoint) / _totalAllocPoint; unchecked { _revenueAmount = _amount - _devAmount - _burnAmount; } } } + + function withdraw(address[] calldata _tokens, address _to) external onlyOwner { + uint256 _length = _tokens.length; + for (uint256 _i; _i < _length; ) { + _withdraw(_tokens[_i], _to); + unchecked { + ++_i; + } + } + } + + function _withdraw(address _token, address _to) internal { + uint256 _amount = IERC20(_token).balanceOf(address(this)); + IERC20(_token).transfer(_to, _amount); + emit LogWithdraw(_token, _to); + } } diff --git a/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol b/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol index a8773c07..75211e63 100644 --- a/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol +++ b/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol @@ -19,7 +19,8 @@ contract SmartTreasury_Distribute is BaseFork { vm.startPrank(ALICE); // setup revenue token, alloc points and treasury address smartTreasury.setRevenueToken(address(usdt)); - smartTreasury.setAllocPoints(100, 100, 100); + ISmartTreasury.AllocPoints memory _allocPoints = ISmartTreasury.AllocPoints(100, 100, 100); + smartTreasury.setAllocPoints(_allocPoints); smartTreasury.setTreasuryAddresses(REVENUE_TREASURY, DEV_TREASURY, BURN_TREASURY); vm.stopPrank(); } @@ -75,7 +76,7 @@ contract SmartTreasury_Distribute is BaseFork { vm.expectRevert(ISmartTreasury.SmartTreasury_Unauthorized.selector); smartTreasury.distribute(_tokens); - // Smart treasury must have nothing left + // Smart treasury after must equal to before uint256 _WBNBTreasuryBalanceAfter = IERC20(address(wbnb)).balanceOf(address(smartTreasury)); assertEq(_WBNBTreasuryBalanceAfter, _WBNBTreasuryBalanceBefore, "Smart treasury balance (WBNB)"); } diff --git a/solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol b/solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol index c6d05387..07398bef 100644 --- a/solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol +++ b/solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol @@ -66,10 +66,12 @@ contract SmartTreasury_SetConfigs is BaseFork { smartTreasury.setWhitelistedCallers(_callers, true); vm.prank(ALICE); - smartTreasury.setAllocPoints(100, 100, 100); - assertEq(smartTreasury.revenueAllocPoint(), 100, "Set Revenue Allocation"); - assertEq(smartTreasury.devAllocPoint(), 100, "Set Dev Allocation"); - assertEq(smartTreasury.burnAllocPoint(), 100, "Set Burn Allocation"); + ISmartTreasury.AllocPoints memory _allocPoints = ISmartTreasury.AllocPoints(100, 100, 100); + smartTreasury.setAllocPoints(_allocPoints); + (uint16 _revenueAllocPoint, uint16 _devAllocPoint, uint16 _burnAllocPoint) = smartTreasury.allocPoints(); + assertEq(_revenueAllocPoint, 100, "Set Revenue Allocation"); + assertEq(_devAllocPoint, 100, "Set Dev Allocation"); + assertEq(_burnAllocPoint, 100, "Set Burn Allocation"); } function testRevert_UnauthorizedCallerSetAlloc_ShouldRevert() external { @@ -77,10 +79,11 @@ contract SmartTreasury_SetConfigs is BaseFork { _callers[0] = ALICE; vm.prank(DEPLOYER); smartTreasury.setWhitelistedCallers(_callers, true); + ISmartTreasury.AllocPoints memory _allocPoints = ISmartTreasury.AllocPoints(100, 100, 100); vm.prank(BOB); vm.expectRevert(ISmartTreasury.SmartTreasury_Unauthorized.selector); - smartTreasury.setAllocPoints(100, 100, 100); + smartTreasury.setAllocPoints(_allocPoints); } // test correctness treasury address From ea99d0c270d0bff8854d8921569c8b8c2ce1b75d Mon Sep 17 00:00:00 2001 From: jr-alpaca Date: Wed, 10 May 2023 17:41:31 +0700 Subject: [PATCH 66/87] chore: flashloan param script --- package.json | 2 ++ .../config/SetFlashloanParams.s.sol | 31 +++++++++++++++++++ .../MoneyMarket/config/SetOperatorsOk.s.sol | 31 +++++++++++++++++++ .../diamond-cut/FlashloanFacetCut.s.sol | 2 +- 4 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 script/deployments/MoneyMarket/config/SetFlashloanParams.s.sol create mode 100644 script/deployments/MoneyMarket/config/SetOperatorsOk.s.sol diff --git a/package.json b/package.json index 3278da7a..bec135a8 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,9 @@ "exec:bsc_mainnet:money-market:config:set-account-manager-ok": "forge script script/deployments/MoneyMarket/config/SetAccountManagersOk.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:money-market:config:set-repurchase-reward-model": "forge script script/deployments/MoneyMarket/config/SetRepurchaseRewardModel.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:money-market:config:set-risk-manager-ok": "forge script script/deployments/MoneyMarket/config/SetRiskManagersOkScript.s.sol --rpc-url bsc_mainnet --broadcast --slow", + "exec:bsc_mainnet:money-market:config:set-operator-ok": "forge script script/deployments/MoneyMarket/config/SetOperatorsOk.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:money-market:config:withdraw-protocol-reserves": "forge script script/deployments/MoneyMarket/config/WithdrawProtocolReserves.s.sol --rpc-url bsc_mainnet --broadcast --slow", + "exec:bsc_mainnet:money-market:config:set-flash-loan-params": "forge script script/deployments/MoneyMarket/config/SetFlashloanParams.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:money-market:admin-facet:deploy": "forge script script/deployments/MoneyMarket/deploy/AdminFacet.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:money-market:flash-loan-facet:deploy": "forge script script/deployments/MoneyMarket/deploy/FlashloanFacet.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:money-market:view-facet:deploy": "forge script script/deployments/MoneyMarket/deploy/ViewFacet.s.sol --rpc-url bsc_mainnet --broadcast --slow", diff --git a/script/deployments/MoneyMarket/config/SetFlashloanParams.s.sol b/script/deployments/MoneyMarket/config/SetFlashloanParams.s.sol new file mode 100644 index 00000000..b094208e --- /dev/null +++ b/script/deployments/MoneyMarket/config/SetFlashloanParams.s.sol @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import "../../../BaseScript.sol"; + +contract SetFlashloanParamsScript is BaseScript { + using stdJson for string; + + function run() public { + /* + ░██╗░░░░░░░██╗░█████╗░██████╗░███╗░░██╗██╗███╗░░██╗░██████╗░ + ░██║░░██╗░░██║██╔══██╗██╔══██╗████╗░██║██║████╗░██║██╔════╝░ + ░╚██╗████╗██╔╝███████║██████╔╝██╔██╗██║██║██╔██╗██║██║░░██╗░ + ░░████╔═████║░██╔══██║██╔══██╗██║╚████║██║██║╚████║██║░░╚██╗ + ░░╚██╔╝░╚██╔╝░██║░░██║██║░░██║██║░╚███║██║██║░╚███║╚██████╔╝ + ░░░╚═╝░░░╚═╝░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝╚═╝╚═╝░░╚══╝░╚═════╝░ + Check all variables below before execute the deployment script + */ + + uint16 flashloanFeeBps = 19; + uint16 lenderFlashloanBps = 7000; + address flashloanTreasury = 0xFeCfcd99B496e044166086dd2F29E2FC2bb6Dd64; + + //---- execution ----// + _startDeployerBroadcast(); + + moneyMarket.setFlashloanParams(flashloanFeeBps, lenderFlashloanBps, flashloanTreasury); + + _stopBroadcast(); + } +} diff --git a/script/deployments/MoneyMarket/config/SetOperatorsOk.s.sol b/script/deployments/MoneyMarket/config/SetOperatorsOk.s.sol new file mode 100644 index 00000000..e0ff8823 --- /dev/null +++ b/script/deployments/MoneyMarket/config/SetOperatorsOk.s.sol @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import "../../../BaseScript.sol"; + +contract SetOperatorsOkScript is BaseScript { + using stdJson for string; + + function run() public { + /* + ░██╗░░░░░░░██╗░█████╗░██████╗░███╗░░██╗██╗███╗░░██╗░██████╗░ + ░██║░░██╗░░██║██╔══██╗██╔══██╗████╗░██║██║████╗░██║██╔════╝░ + ░╚██╗████╗██╔╝███████║██████╔╝██╔██╗██║██║██╔██╗██║██║░░██╗░ + ░░████╔═████║░██╔══██║██╔══██╗██║╚████║██║██║╚████║██║░░╚██╗ + ░░╚██╔╝░╚██╔╝░██║░░██║██║░░██║██║░╚███║██║██║░╚███║╚██████╔╝ + ░░░╚═╝░░░╚═╝░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝╚═╝╚═╝░░╚══╝░╚═════╝░ + Check all variables below before execute the deployment script + */ + + bool isOk = true; + address[] memory operators = new address[](1); + operators[0] = 0xC44f82b07Ab3E691F826951a6E335E1bC1bB0B51; + + //---- execution ----// + _startDeployerBroadcast(); + + moneyMarket.setOperatorsOk(operators, isOk); + + _stopBroadcast(); + } +} diff --git a/script/deployments/MoneyMarket/diamond-cut/FlashloanFacetCut.s.sol b/script/deployments/MoneyMarket/diamond-cut/FlashloanFacetCut.s.sol index 1d8854d2..fa641cc9 100644 --- a/script/deployments/MoneyMarket/diamond-cut/FlashloanFacetCut.s.sol +++ b/script/deployments/MoneyMarket/diamond-cut/FlashloanFacetCut.s.sol @@ -20,7 +20,7 @@ contract DiamondCutFlashloanFacetScript is BaseScript { Check all variables below before execute the deployment script */ - address flashloanFacet = 0x029dD6e7FaA03252d6c19240fA264d82a2556971; + address flashloanFacet = 0x767adcb3650BAB4FEA44469fCe3FA66D767Bc22c; IMMDiamondCut.FacetCut[] memory facetCuts = new IMMDiamondCut.FacetCut[](1); From 40e733db078e5584f3ac179194e69e941d3ae4d5 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Thu, 11 May 2023 16:07:07 +0700 Subject: [PATCH 67/87] test: test oracle, slippage, decimal --- .../smart-treasury/SmartTreasury.sol | 73 ++++-- solidity/tests/smart-treasury/BaseFork.sol | 22 +- .../SmartTreasury_Distribute.t.sol | 209 +++++++++++++++++- 3 files changed, 275 insertions(+), 29 deletions(-) diff --git a/solidity/contracts/smart-treasury/SmartTreasury.sol b/solidity/contracts/smart-treasury/SmartTreasury.sol index db6299bf..22603705 100644 --- a/solidity/contracts/smart-treasury/SmartTreasury.sol +++ b/solidity/contracts/smart-treasury/SmartTreasury.sol @@ -6,12 +6,14 @@ import { OwnableUpgradeable } from "@openzeppelin/contracts-upgradeable/access/O // ---- Libraries ---- // import { LibSafeToken } from "../money-market/libraries/LibSafeToken.sol"; +import { LibConstant } from "solidity/contracts/money-market/libraries/LibConstant.sol"; // ---- Interfaces ---- // import { IUniSwapV3PathReader } from "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol"; import { IPancakeSwapRouterV3 } from "../money-market/interfaces/IPancakeSwapRouterV3.sol"; import { IERC20 } from "../money-market/interfaces/IERC20.sol"; import { ISmartTreasury } from "../interfaces/ISmartTreasury.sol"; +import { IOracleMedianizer } from "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol"; contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { using LibSafeToken for IERC20; @@ -20,7 +22,8 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { event LogSetAllocPoints(uint256 _revenueAllocPoint, uint256 _devAllocPoint, uint256 _burnAllocPoint); event LogSetRevenueToken(address _revenueToken); event LogSetWhitelistedCaller(address indexed _caller, bool _allow); - event LogFailedDistribution(address _token); + event LogFailedDistribution(address _token, bytes _reason); + event LogSetSlippageToleranceBps(uint256 _slippageToleranceBps); event LogSetTreasuryAddresses(address _revenueTreasury, address _devTreasury, address _burnTreasury); event LogWithdraw(address _token, address _to); @@ -30,11 +33,15 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { address public devTreasury; address public burnTreasury; address public revenueToken; + uint256 public slippageToleranceBps; + + address public constant USD = 0x115dffFFfffffffffFFFffffFFffFfFfFFFFfFff; mapping(address => bool) public whitelistedCallers; IPancakeSwapRouterV3 public router; IUniSwapV3PathReader public pathReader; + IOracleMedianizer public oracleMedianizer; modifier onlyWhitelisted() { if (!whitelistedCallers[msg.sender]) { @@ -47,10 +54,15 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { _disableInitializers(); } - function initialize(address _router, address _pathReader) external initializer { + function initialize( + address _router, + address _pathReader, + address _oracleMedianizer + ) external initializer { OwnableUpgradeable.__Ownable_init(); router = IPancakeSwapRouterV3(_router); pathReader = IUniSwapV3PathReader(_pathReader); + oracleMedianizer = IOracleMedianizer(_oracleMedianizer); } /// @notice Distribute the balance in this contract to each treasury @@ -120,27 +132,52 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { } } + function setSlippageToleranceBps(uint256 _slippageToleranceBps) external onlyWhitelisted { + slippageToleranceBps = _slippageToleranceBps; + emit LogSetSlippageToleranceBps(_slippageToleranceBps); + } + + function _getMinAmountOut( + address _tokenIn, + address _tokenOut, + uint256 _amountIn + ) internal view returns (uint256 _minAmountOut) { + (uint256 _tokenInPrice, ) = oracleMedianizer.getPrice(_tokenIn, USD); + + uint256 _minAmountOutUSD = (_amountIn * _tokenInPrice * (LibConstant.MAX_BPS - slippageToleranceBps)) / + (IERC20(_tokenIn).decimals() * LibConstant.MAX_BPS); + + (uint256 _tokenOutPrice, ) = oracleMedianizer.getPrice(_tokenOut, USD); + _minAmountOut = ((_minAmountOutUSD * IERC20(_tokenOut).decimals()) / _tokenOutPrice); + } + function _distribute(address _token) internal { uint256 _amount = IERC20(_token).balanceOf(address(this)); (uint256 _revenueAmount, uint256 _devAmount, uint256 _burnAmount) = _allocate(_amount); if (_revenueAmount != 0) { - bytes memory _path = pathReader.paths(_token, revenueToken); - if (_path.length == 0) revert SmartTreasury_PathConfigNotFound(); - - IPancakeSwapRouterV3.ExactInputParams memory params = IPancakeSwapRouterV3.ExactInputParams({ - path: _path, - recipient: revenueTreasury, - deadline: block.timestamp, - amountIn: _revenueAmount, - amountOutMinimum: 0 - }); - - // Direct send to revenue treasury - IERC20(_token).safeApprove(address(router), _revenueAmount); - try router.exactInput(params) {} catch { - emit LogFailedDistribution(_token); - return; + if (_token == revenueToken) { + IERC20(_token).safeTransfer(revenueTreasury, _revenueAmount); + } else { + bytes memory _path = pathReader.paths(_token, revenueToken); + if (_path.length == 0) revert SmartTreasury_PathConfigNotFound(); + + uint256 _minAmountOut = _getMinAmountOut(_token, revenueToken, _revenueAmount); + + IPancakeSwapRouterV3.ExactInputParams memory params = IPancakeSwapRouterV3.ExactInputParams({ + path: _path, + recipient: revenueTreasury, + deadline: block.timestamp, + amountIn: _revenueAmount, + amountOutMinimum: _minAmountOut + }); + + // Direct send to revenue treasury + IERC20(_token).safeApprove(address(router), _revenueAmount); + try router.exactInput(params) {} catch (bytes memory _reason) { + emit LogFailedDistribution(_token, _reason); + return; + } } } diff --git a/solidity/tests/smart-treasury/BaseFork.sol b/solidity/tests/smart-treasury/BaseFork.sol index d7051817..bca8ca26 100644 --- a/solidity/tests/smart-treasury/BaseFork.sol +++ b/solidity/tests/smart-treasury/BaseFork.sol @@ -13,6 +13,7 @@ import { SmartTreasury } from "solidity/contracts/smart-treasury/SmartTreasury.s import { IERC20 } from "solidity/contracts/money-market/interfaces/IERC20.sol"; import { IPancakeSwapRouterV3 } from "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol"; import { IQuoterV2 } from "solidity/tests/interfaces/IQuoterV2.sol"; +import { IOracleMedianizer } from "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol"; contract BaseFork is DSTest, StdUtils, StdAssertions, StdCheats { using stdStorage for StdStorage; @@ -28,6 +29,8 @@ contract BaseFork is DSTest, StdUtils, StdAssertions, StdCheats { address CHARLIE = makeAddr("CHARLIE"); address EVE = makeAddr("EVE"); + address internal constant PANCAKE_V3_POOL_DEPLOYER = 0x41ff9AA7e16B8B1a8a8dc4f0eFacd93D02d071c9; + // Treasury address REVENUE_TREASURY = makeAddr("REVENUE_TREASURY"); address DEV_TREASURY = makeAddr("DEV_TREASURY"); @@ -37,11 +40,15 @@ contract BaseFork is DSTest, StdUtils, StdAssertions, StdCheats { IERC20 public constant wbnb = IERC20(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c); IERC20 public constant usdt = IERC20(0x55d398326f99059fF775485246999027B3197955); IERC20 public constant cake = IERC20(0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82); + IERC20 public constant doge = IERC20(0xbA2aE424d960c26247Dd6c32edC70B295c744C43); + + address internal usd = 0x115dffFFfffffffffFFFffffFFffFfFfFFFFfFff; IPancakeSwapRouterV3 internal router = IPancakeSwapRouterV3(0x1b81D678ffb9C0263b24A97847620C99d213eB14); PCSV3PathReader internal pathReader; SmartTreasury internal smartTreasury; IQuoterV2 internal quoterV2 = IQuoterV2(0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997); + IOracleMedianizer internal oracleMedianizer = IOracleMedianizer(0x553b8adc2Ac16491Ec57239BeA7191719a2B880c); function setUp() public virtual { vm.createSelectFork("bsc_mainnet", 27_515_914); @@ -55,12 +62,13 @@ contract BaseFork is DSTest, StdUtils, StdAssertions, StdCheats { vm.startPrank(DEPLOYER); proxyAdmin = _setupProxyAdmin(); - smartTreasury = deploySmartTreasury(address(router), address(pathReader)); + smartTreasury = deploySmartTreasury(address(router), address(pathReader), address(oracleMedianizer)); vm.stopPrank(); vm.label(address(wbnb), "WBNB"); vm.label(address(usdt), "USDT"); vm.label(address(cake), "CAKE"); + vm.label(address(doge), "DOGE"); vm.label(ALICE, "ALICE"); vm.label(BOB, "BOB"); @@ -73,14 +81,20 @@ contract BaseFork is DSTest, StdUtils, StdAssertions, StdCheats { vm.label(address(router), "PancakeSwapRouterV3"); vm.label(address(smartTreasury), "SmartTreasury"); + vm.label(address(oracleMedianizer), "OracleMedianizer"); } - function deploySmartTreasury(address _router, address _pathReader) internal returns (SmartTreasury) { + function deploySmartTreasury( + address _router, + address _pathReader, + address _oracle + ) internal returns (SmartTreasury) { bytes memory _logicBytecode = abi.encodePacked(vm.getCode("./out/SmartTreasury.sol/SmartTreasury.json")); bytes memory _initializer = abi.encodeWithSelector( - bytes4(keccak256("initialize(address,address)")), + bytes4(keccak256("initialize(address,address,address)")), _router, - _pathReader + _pathReader, + _oracle ); address _proxy = _setupUpgradeable(_logicBytecode, _initializer); return SmartTreasury(_proxy); diff --git a/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol b/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol index 75211e63..02452b10 100644 --- a/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol +++ b/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol @@ -1,12 +1,31 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.19; -import { BaseFork } from "./BaseFork.sol"; +import { BaseFork, console } from "./BaseFork.sol"; + +// implementation +import { MockERC20 } from "solidity/tests/mocks/MockERC20.sol"; +import { OracleMedianizer } from "solidity/contracts/oracle/OracleMedianizer.sol"; + +// libraries +import { LibPCSV3PoolAddress } from "../libs/LibPCSV3PoolAddress.sol"; + +// interfaces import { ISmartTreasury } from "solidity/contracts/interfaces/ISmartTreasury.sol"; import { IPancakeSwapRouterV3 } from "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol"; import { IERC20 } from "solidity/contracts/money-market/interfaces/IERC20.sol"; +import { IOracleMedianizer } from "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol"; +import { IPriceOracle } from "solidity/contracts/oracle/interfaces/IPriceOracle.sol"; +import { IUniswapV3Pool } from "solidity/contracts/oracle/interfaces/IUniswapV3Pool.sol"; +import { IPancakeV3PoolState } from "../../contracts/money-market/interfaces/IPancakeV3Pool.sol"; contract SmartTreasury_Distribute is BaseFork { + struct CacheState { + uint256 _rev; + uint256 _dev; + uint256 _burn; + } + function setUp() public override { super.setUp(); @@ -22,6 +41,7 @@ contract SmartTreasury_Distribute is BaseFork { ISmartTreasury.AllocPoints memory _allocPoints = ISmartTreasury.AllocPoints(100, 100, 100); smartTreasury.setAllocPoints(_allocPoints); smartTreasury.setTreasuryAddresses(REVENUE_TREASURY, DEV_TREASURY, BURN_TREASURY); + smartTreasury.setSlippageToleranceBps(100); vm.stopPrank(); } @@ -134,12 +154,6 @@ contract SmartTreasury_Distribute is BaseFork { assertEq(_WBNBTreasuryBalanceAfter, _WBNBTreasuryBalanceBefore, "Smart treasury balance (WBNB)"); } - struct CacheState { - uint256 _rev; - uint256 _dev; - uint256 _burn; - } - function testCorrectness_WhenSwapFailedOtherDistribution_ShoulWork() external { // set path for cake to usdt bytes[] memory _paths = new bytes[](1); @@ -225,4 +239,185 @@ contract SmartTreasury_Distribute is BaseFork { uint256 _CakeTreasuryBalanceAfter = IERC20(address(cake)).balanceOf(address(smartTreasury)); assertEq(_CakeTreasuryBalanceAfter, 0, "Smart treasury balance (Cake)"); } + + function testRevert_WhenOracleGetPriceFailed_ShouldRevert() external { + // set path for cake to usdt + bytes[] memory _paths = new bytes[](1); + _paths[0] = abi.encodePacked(address(cake), uint24(2500), address(usdt)); + pathReader.setPaths(_paths); + + deal(address(cake), address(smartTreasury), 30 ether); + + // call distribute + address[] memory _tokens = new address[](1); + _tokens[0] = address(cake); + vm.prank(ALICE); + vm.expectRevert("OracleMedianizer::getPrice:: no primary source"); + smartTreasury.distribute(_tokens); + } + + function testCorrectness_DecimalDiff_ShouldWork() external { + vm.prank(ALICE); + smartTreasury.setRevenueToken(address(wbnb)); + + // doge 8 decimals + uint256 _distributeAmount = normalizeEther(3 ether, doge.decimals()); + + bytes[] memory _paths = new bytes[](1); + _paths[0] = abi.encodePacked(address(doge), uint24(2500), address(wbnb)); + pathReader.setPaths(_paths); + + // case 2: in 6 out 18 + // mock oracle (doge to wbnb) + vm.mockCall( + address(oracleMedianizer), + abi.encodeWithSelector(IPriceOracle.getPrice.selector, address(doge), usd), + abi.encode(normalizeEther(0.0715291 ether, 18), 0) + ); + + // expect amount out + (uint256 _expectedAmountOut, , , ) = quoterV2.quoteExactInput( + abi.encodePacked(address(doge), uint24(2500), address(wbnb)), + normalizeEther(1 ether, doge.decimals()) + ); + + // top up balance smart treasury + // top up wbnb + deal(address(doge), address(smartTreasury), _distributeAmount); + + address[] memory _tokens = new address[](1); + _tokens[0] = address(doge); + vm.prank(ALICE); + smartTreasury.distribute(_tokens); + + uint256 _revenueTreasury = IERC20(address(wbnb)).balanceOf(REVENUE_TREASURY); + assertCloseBps(_revenueTreasury, _expectedAmountOut, 100); + + uint256 _devDogeTreasury = IERC20(address(doge)).balanceOf(DEV_TREASURY); + assertEq(_devDogeTreasury, normalizeEther(1 ether, doge.decimals()), "DOGE Dev treasury"); + + uint256 _burnDogeTreasury = IERC20(address(doge)).balanceOf(BURN_TREASURY); + assertEq(_burnDogeTreasury, normalizeEther(1 ether, doge.decimals()), "DOGE Burn treasury"); + } + + function testCorrectness_DistributeTokenIsRevenueToken_ShouldWork() external { + // state before distribute + uint256 _revenueBalanceBefore = IERC20(address(usdt)).balanceOf(REVENUE_TREASURY); + uint256 _devBalanceBefore = IERC20(address(usdt)).balanceOf(DEV_TREASURY); + uint256 _burnBalanceBefore = IERC20(address(usdt)).balanceOf(BURN_TREASURY); + + // top up balance smart treasury + // top up usdt + deal(address(usdt), address(smartTreasury), normalizeEther(30 ether, usdt.decimals())); + + address[] memory _tokens = new address[](1); + _tokens[0] = address(usdt); + vm.prank(ALICE); + smartTreasury.distribute(_tokens); + + // state after distribute + uint256 _revenueBalanceAfter = IERC20(address(usdt)).balanceOf(REVENUE_TREASURY); + uint256 _devBalanceAfter = IERC20(address(usdt)).balanceOf(DEV_TREASURY); + uint256 _burnBalanceAfter = IERC20(address(usdt)).balanceOf(BURN_TREASURY); + + uint256 _expectAmount = normalizeEther(10 ether, usdt.decimals()); + + // rev treasury (get usdt) + assertEq(_revenueBalanceAfter, _revenueBalanceBefore + _expectAmount, "Revenue Treasury Balance (USDT)"); + // dev treasury (get usdt) + assertEq(_devBalanceAfter, _devBalanceBefore + _expectAmount, "Dev Treasury Balance (USDT)"); + // burn treasury (get usdt) + assertEq(_burnBalanceAfter, _burnBalanceBefore + _expectAmount, "Burn Treasury Balance (USDT)"); + + // Smart treasury after distribute must have nothing + uint256 _USDTTreasuryBalanceAfter = IERC20(address(usdt)).balanceOf(address(smartTreasury)); + assertEq(_USDTTreasuryBalanceAfter, 0, "Smart treasury balance (USDT)"); + } + + function testCorrectness_TooSmallSlippage_ShouldWork() external { + // state before distribute + uint256 _revenueBalanceBefore = IERC20(address(usdt)).balanceOf(REVENUE_TREASURY); + uint256 _devBalanceBefore = IERC20(address(wbnb)).balanceOf(DEV_TREASURY); + uint256 _burnBalanceBefore = IERC20(address(wbnb)).balanceOf(BURN_TREASURY); + + // top up balance smart treasury + // top up wbnb + deal(address(wbnb), address(smartTreasury), 30 ether); + + // mock oracle under rate + vm.mockCall( + address(oracleMedianizer), + abi.encodeWithSelector(IPriceOracle.getPrice.selector, address(wbnb), usd), + abi.encode(normalizeEther(100 ether, wbnb.decimals()), 0) + ); + + address[] memory _tokens = new address[](1); + _tokens[0] = address(wbnb); + vm.prank(ALICE); + smartTreasury.distribute(_tokens); + + // expect amount + (uint256 _expectedAmountOut, , , ) = quoterV2.quoteExactInput( + abi.encodePacked(address(wbnb), uint24(500), address(usdt)), + 10 ether + ); + + // state after distribute + uint256 _revenueBalanceAfter = IERC20(address(usdt)).balanceOf(REVENUE_TREASURY); + uint256 _devBalanceAfter = IERC20(address(wbnb)).balanceOf(DEV_TREASURY); + uint256 _burnBalanceAfter = IERC20(address(wbnb)).balanceOf(BURN_TREASURY); + + // rev treasury (get usdt) + // tolerance ~5% + assertCloseBps(_revenueBalanceAfter, _revenueBalanceBefore + _expectedAmountOut, 500); + // dev treasury (get wbnb) + assertEq(_devBalanceAfter, _devBalanceBefore + 10 ether, "Dev Treasury Balance (WBNB)"); + + // burn treasury (get wbnb) + assertEq(_burnBalanceAfter, _burnBalanceBefore + 10 ether, "Burn Treasury Balance (WBNB)"); + + // Smart treasury after must equal to before + uint256 _WBNBTreasuryBalanceAfter = IERC20(address(wbnb)).balanceOf(address(smartTreasury)); + assertEq(_WBNBTreasuryBalanceAfter, 0, "Smart treasury balance (WBNB)"); + } + + function testCorrectness_TooMuchSlippage_ShouldSkip() external { + // state before distribute + uint256 _revenueBalanceBefore = IERC20(address(usdt)).balanceOf(REVENUE_TREASURY); + uint256 _devBalanceBefore = IERC20(address(wbnb)).balanceOf(DEV_TREASURY); + uint256 _burnBalanceBefore = IERC20(address(wbnb)).balanceOf(BURN_TREASURY); + + // top up balance smart treasury + // top up wbnb + deal(address(wbnb), address(smartTreasury), 30 ether); + + // mock oracle under rate + vm.mockCall( + address(oracleMedianizer), + abi.encodeWithSelector(IPriceOracle.getPrice.selector, address(wbnb), usd), + abi.encode(normalizeEther(500 ether, wbnb.decimals()), 0) + ); + + address[] memory _tokens = new address[](1); + _tokens[0] = address(wbnb); + vm.prank(ALICE); + smartTreasury.distribute(_tokens); + + // state after distribute + uint256 _revenueBalanceAfter = IERC20(address(usdt)).balanceOf(REVENUE_TREASURY); + uint256 _devBalanceAfter = IERC20(address(wbnb)).balanceOf(DEV_TREASURY); + uint256 _burnBalanceAfter = IERC20(address(wbnb)).balanceOf(BURN_TREASURY); + + // rev treasury (get usdt) + assertEq(_revenueBalanceAfter, _revenueBalanceBefore, "Rev Treasury Balance (USDT)"); + // dev treasury (get wbnb) + assertEq(_devBalanceAfter, _devBalanceBefore, "Dev Treasury Balance (WBNB)"); + + // burn treasury (get wbnb) + assertEq(_burnBalanceAfter, _burnBalanceBefore, "Burn Treasury Balance (WBNB)"); + + // Smart treasury after must equal to before + uint256 _WBNBTreasuryBalanceAfter = IERC20(address(wbnb)).balanceOf(address(smartTreasury)); + assertEq(_WBNBTreasuryBalanceAfter, normalizeEther(30 ether, wbnb.decimals()), "Smart treasury balance (WBNB)"); + } } From 86b7239f3675be60dead7ec04f257c4dd6edfe1b Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Thu, 11 May 2023 16:26:30 +0700 Subject: [PATCH 68/87] fix: fix swap failed case --- solidity/tests/smart-treasury/BaseFork.sol | 4 ++ .../SmartTreasury_Distribute.t.sol | 62 +++---------------- 2 files changed, 13 insertions(+), 53 deletions(-) diff --git a/solidity/tests/smart-treasury/BaseFork.sol b/solidity/tests/smart-treasury/BaseFork.sol index bca8ca26..2779b303 100644 --- a/solidity/tests/smart-treasury/BaseFork.sol +++ b/solidity/tests/smart-treasury/BaseFork.sol @@ -37,6 +37,9 @@ contract BaseFork is DSTest, StdUtils, StdAssertions, StdCheats { address BURN_TREASURY = makeAddr("BURN_TREASURY"); // Token + + IERC20 public constant btcb = IERC20(0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c); + IERC20 public constant eth = IERC20(0x2170Ed0880ac9A755fd29B2688956BD959F933F8); IERC20 public constant wbnb = IERC20(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c); IERC20 public constant usdt = IERC20(0x55d398326f99059fF775485246999027B3197955); IERC20 public constant cake = IERC20(0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82); @@ -65,6 +68,7 @@ contract BaseFork is DSTest, StdUtils, StdAssertions, StdCheats { smartTreasury = deploySmartTreasury(address(router), address(pathReader), address(oracleMedianizer)); vm.stopPrank(); + vm.label(address(eth), "ETH"); vm.label(address(wbnb), "WBNB"); vm.label(address(usdt), "USDT"); vm.label(address(cake), "CAKE"); diff --git a/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol b/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol index 02452b10..47d8ec49 100644 --- a/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol +++ b/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol @@ -155,16 +155,8 @@ contract SmartTreasury_Distribute is BaseFork { } function testCorrectness_WhenSwapFailedOtherDistribution_ShoulWork() external { - // set path for cake to usdt - bytes[] memory _paths = new bytes[](1); - _paths[0] = abi.encodePacked(address(cake), uint24(2500), address(usdt)); - pathReader.setPaths(_paths); - - // top up 2 tokens - // wbnb - // cake + // top up smart treasury deal(address(wbnb), address(smartTreasury), 30 ether); - deal(address(cake), address(smartTreasury), 30 ether); uint256 _WBNBTreasuryBalanceBefore = IERC20(address(wbnb)).balanceOf(address(smartTreasury)); @@ -174,37 +166,16 @@ contract SmartTreasury_Distribute is BaseFork { IERC20(address(wbnb)).balanceOf(BURN_TREASURY) ); - CacheState memory _stateCakeBefore = CacheState( - IERC20(address(usdt)).balanceOf(REVENUE_TREASURY), - IERC20(address(cake)).balanceOf(DEV_TREASURY), - IERC20(address(cake)).balanceOf(BURN_TREASURY) - ); - - // mock fail for wbnb - // *cake must work normally - IPancakeSwapRouterV3.ExactInputParams memory _params = IPancakeSwapRouterV3.ExactInputParams({ - path: abi.encodePacked(address(wbnb), uint24(500), address(usdt)), - recipient: REVENUE_TREASURY, - deadline: block.timestamp, - amountIn: 10 ether, - amountOutMinimum: 0 - }); - - vm.mockCallRevert( - address(router), - abi.encodeWithSelector(IPancakeSwapRouterV3.exactInput.selector, _params), - abi.encode("WBNB to USDT Failed swap") - ); - - (uint256 _expectedAmountOut, , , ) = quoterV2.quoteExactInput( - abi.encodePacked(address(cake), uint24(2500), address(usdt)), - 10 ether + // mock router swap failed due to slippage + vm.mockCall( + address(oracleMedianizer), + abi.encodeWithSelector(IPriceOracle.getPrice.selector, address(wbnb), usd), + abi.encode(normalizeEther(500 ether, wbnb.decimals()), 0) ); // call distribute - address[] memory _tokens = new address[](2); + address[] memory _tokens = new address[](1); _tokens[0] = address(wbnb); - _tokens[1] = address(cake); vm.prank(ALICE); smartTreasury.distribute(_tokens); @@ -215,29 +186,14 @@ contract SmartTreasury_Distribute is BaseFork { IERC20(address(wbnb)).balanceOf(BURN_TREASURY) ); - CacheState memory _stateCakeAfter = CacheState( - IERC20(address(usdt)).balanceOf(REVENUE_TREASURY), - IERC20(address(cake)).balanceOf(DEV_TREASURY), - IERC20(address(cake)).balanceOf(BURN_TREASURY) - ); - - // 1. wbnb balance after must equal to balance before - // Note: usdt balance = wbnb distribution (0) + cake distribution (expectAmountOut) - // Then we have to deduct the increased amount from cake distribution - assertCloseBps(_stateWBNBAfter._rev, _stateWBNBBefore._rev + _expectedAmountOut, 500); + // wbnb balance after distribute must equal to balance before + assertEq(_stateWBNBAfter._rev, _stateWBNBBefore._rev, "Rev treasury balance (USDT)"); assertEq(_stateWBNBAfter._dev, _stateWBNBBefore._dev, "Dev treasury balance (WBNB)"); assertEq(_stateWBNBAfter._burn, _stateWBNBBefore._burn, "Burn treasury balance (WBNB)"); - // 2. cake balanace after must work normally - assertGt(_stateCakeAfter._rev, _stateCakeBefore._rev, "(CAKE) Revenue treasury balance (USDT)"); - assertEq(_stateCakeAfter._dev, _stateCakeBefore._dev + 10 ether, "Dev treasury balance (Cake)"); - assertEq(_stateCakeAfter._burn, _stateCakeBefore._burn + 10 ether, "Burn treasury balance (Cake)"); - // Smart Treasury balance test uint256 _WBNBTreasuryBalanceAfter = IERC20(address(wbnb)).balanceOf(address(smartTreasury)); assertEq(_WBNBTreasuryBalanceAfter, _WBNBTreasuryBalanceBefore, "Smart treasury balance (WBNB)"); - uint256 _CakeTreasuryBalanceAfter = IERC20(address(cake)).balanceOf(address(smartTreasury)); - assertEq(_CakeTreasuryBalanceAfter, 0, "Smart treasury balance (Cake)"); } function testRevert_WhenOracleGetPriceFailed_ShouldRevert() external { From 8c2f03aaecc9684a42f7a975fea06bb08e1070f8 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Thu, 11 May 2023 17:20:49 +0700 Subject: [PATCH 69/87] fix: fix test skip token --- solidity/tests/smart-treasury/BaseFork.sol | 7 +- .../SmartTreasury_Distribute.t.sol | 159 +++++++----------- 2 files changed, 69 insertions(+), 97 deletions(-) diff --git a/solidity/tests/smart-treasury/BaseFork.sol b/solidity/tests/smart-treasury/BaseFork.sol index 2779b303..4228bc5b 100644 --- a/solidity/tests/smart-treasury/BaseFork.sol +++ b/solidity/tests/smart-treasury/BaseFork.sol @@ -42,6 +42,7 @@ contract BaseFork is DSTest, StdUtils, StdAssertions, StdCheats { IERC20 public constant eth = IERC20(0x2170Ed0880ac9A755fd29B2688956BD959F933F8); IERC20 public constant wbnb = IERC20(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c); IERC20 public constant usdt = IERC20(0x55d398326f99059fF775485246999027B3197955); + IERC20 public constant usdc = IERC20(0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d); IERC20 public constant cake = IERC20(0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82); IERC20 public constant doge = IERC20(0xbA2aE424d960c26247Dd6c32edC70B295c744C43); @@ -54,12 +55,13 @@ contract BaseFork is DSTest, StdUtils, StdAssertions, StdCheats { IOracleMedianizer internal oracleMedianizer = IOracleMedianizer(0x553b8adc2Ac16491Ec57239BeA7191719a2B880c); function setUp() public virtual { - vm.createSelectFork("bsc_mainnet", 27_515_914); + vm.createSelectFork("bsc_mainnet", 28_113_725); pathReader = new PCSV3PathReader(); // set path for - bytes[] memory _paths = new bytes[](1); + bytes[] memory _paths = new bytes[](2); _paths[0] = abi.encodePacked(address(wbnb), uint24(500), address(usdt)); + _paths[1] = abi.encodePacked(address(eth), uint24(500), address(usdc), uint24(100), address(usdt)); pathReader.setPaths(_paths); @@ -71,6 +73,7 @@ contract BaseFork is DSTest, StdUtils, StdAssertions, StdCheats { vm.label(address(eth), "ETH"); vm.label(address(wbnb), "WBNB"); vm.label(address(usdt), "USDT"); + vm.label(address(usdc), "USDC"); vm.label(address(cake), "CAKE"); vm.label(address(doge), "DOGE"); diff --git a/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol b/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol index 47d8ec49..ca8a3442 100644 --- a/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol +++ b/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol @@ -46,13 +46,12 @@ contract SmartTreasury_Distribute is BaseFork { } function testCorrectness_CallDistribute_ShouldWork() external { - // state before distribute - uint256 _revenueBalanceBefore = IERC20(address(usdt)).balanceOf(REVENUE_TREASURY); - uint256 _devBalanceBefore = IERC20(address(wbnb)).balanceOf(DEV_TREASURY); - uint256 _burnBalanceBefore = IERC20(address(wbnb)).balanceOf(BURN_TREASURY); + // state before distribution + uint256 _USDTrevenueBalanceBefore = IERC20(address(usdt)).balanceOf(REVENUE_TREASURY); + uint256 _WBNBdevBalanceBefore = IERC20(address(wbnb)).balanceOf(DEV_TREASURY); + uint256 _WBNBburnBalanceBefore = IERC20(address(wbnb)).balanceOf(BURN_TREASURY); - // top up balance smart treasury - // top up wbnb + // top up wbnb to smart treasury deal(address(wbnb), address(smartTreasury), 30 ether); address[] memory _tokens = new address[](1); @@ -60,32 +59,31 @@ contract SmartTreasury_Distribute is BaseFork { vm.prank(ALICE); smartTreasury.distribute(_tokens); - // expect amount + // expect amount in usdt (uint256 _expectedAmountOut, , , ) = quoterV2.quoteExactInput( abi.encodePacked(address(wbnb), uint24(500), address(usdt)), 10 ether ); // state after distribute - uint256 _revenueBalanceAfter = IERC20(address(usdt)).balanceOf(REVENUE_TREASURY); - uint256 _devBalanceAfter = IERC20(address(wbnb)).balanceOf(DEV_TREASURY); - uint256 _burnBalanceAfter = IERC20(address(wbnb)).balanceOf(BURN_TREASURY); - - // rev treasury (get usdt) - // tolerance ~5% - assertCloseBps(_revenueBalanceAfter, _revenueBalanceBefore + _expectedAmountOut, 500); - // dev treasury (get wbnb) - assertEq(_devBalanceAfter, _devBalanceBefore + 10 ether, "Dev Treasury Balance (WBNB)"); - - // burn treasury (get wbnb) - assertEq(_burnBalanceAfter, _burnBalanceBefore + 10 ether, "Burn Treasury Balance (WBNB)"); - - // Smart treasury after must equal to before - uint256 _WBNBTreasuryBalanceAfter = IERC20(address(wbnb)).balanceOf(address(smartTreasury)); - assertEq(_WBNBTreasuryBalanceAfter, 0, "Smart treasury balance (WBNB)"); + uint256 _USDTrevenueBalanceAfter = IERC20(address(usdt)).balanceOf(REVENUE_TREASURY); + uint256 _WBNBdevBalanceAfter = IERC20(address(wbnb)).balanceOf(DEV_TREASURY); + uint256 _WBNBburnBalanceAfter = IERC20(address(wbnb)).balanceOf(BURN_TREASURY); + + // rev treasury (USDT) + assertCloseBps(_USDTrevenueBalanceAfter, _USDTrevenueBalanceBefore + _expectedAmountOut, 100); + // dev treasury (WBNB) + assertEq(_WBNBdevBalanceAfter, _WBNBdevBalanceBefore + 10 ether, "Dev Treasury Balance (WBNB)"); + // burn treasury (WBNB) + assertEq(_WBNBburnBalanceAfter, _WBNBburnBalanceBefore + 10 ether, "Burn Treasury Balance (WBNB)"); + + // Smart treasury must have nothing + uint256 _WBNBSmartTreasuryBalanceAfter = IERC20(address(wbnb)).balanceOf(address(smartTreasury)); + assertEq(_WBNBSmartTreasuryBalanceAfter, 0, "Smart treasury balance (WBNB)"); } function testRevert_UnauthorizedCallDistribute_ShouldRevert() external { + // top up wbnb to smart treasury deal(address(wbnb), address(smartTreasury), 30 ether); uint256 _WBNBTreasuryBalanceBefore = IERC20(address(wbnb)).balanceOf(address(smartTreasury)); @@ -96,7 +94,7 @@ contract SmartTreasury_Distribute is BaseFork { vm.expectRevert(ISmartTreasury.SmartTreasury_Unauthorized.selector); smartTreasury.distribute(_tokens); - // Smart treasury after must equal to before + // Smart treasury after distributed must equal to before uint256 _WBNBTreasuryBalanceAfter = IERC20(address(wbnb)).balanceOf(address(smartTreasury)); assertEq(_WBNBTreasuryBalanceAfter, _WBNBTreasuryBalanceBefore, "Smart treasury balance (WBNB)"); } @@ -112,22 +110,22 @@ contract SmartTreasury_Distribute is BaseFork { vm.expectRevert(ISmartTreasury.SmartTreasury_PathConfigNotFound.selector); smartTreasury.distribute(_tokens); - // Smart treasury after must equal to before + // Smart treasury after distributed must equal to before uint256 _cakeTreasuryBalanceAfter = IERC20(address(cake)).balanceOf(address(smartTreasury)); assertEq(_cakeTreasuryBalanceAfter, _cakeTreasuryBalanceBefore, "Smart treasury balance (Cake)"); } function testCorrectness_DistributeFailedFromSwap_ShouldNotDistribute() external { - // top up balance smart treasury - // top up wbnb + // top up wbnb to smart treasury deal(address(wbnb), address(smartTreasury), 30 ether); uint256 _WBNBTreasuryBalanceBefore = IERC20(address(wbnb)).balanceOf(address(smartTreasury)); // state before distribute - uint256 _revenueBalanceBefore = IERC20(address(usdt)).balanceOf(REVENUE_TREASURY); - uint256 _devBalanceBefore = IERC20(address(wbnb)).balanceOf(DEV_TREASURY); - uint256 _burnBalanceBefore = IERC20(address(wbnb)).balanceOf(BURN_TREASURY); + uint256 _USDTrevenueBalanceBefore = IERC20(address(usdt)).balanceOf(REVENUE_TREASURY); + uint256 _WBNBdevBalanceBefore = IERC20(address(wbnb)).balanceOf(DEV_TREASURY); + uint256 _WBNBburnBalanceBefore = IERC20(address(wbnb)).balanceOf(BURN_TREASURY); + // mock swap failed vm.mockCallRevert( address(router), abi.encodeWithSelector(IPancakeSwapRouterV3.exactInput.selector), @@ -145,9 +143,9 @@ contract SmartTreasury_Distribute is BaseFork { uint256 _burnBalanceAfter = IERC20(address(wbnb)).balanceOf(BURN_TREASURY); // after should be equal to before - assertEq(_revenueBalanceAfter, _revenueBalanceBefore, "Revenue Treasury Balance (USDT)"); - assertEq(_devBalanceAfter, _devBalanceBefore, "Dev Treasury Balance (WBNB)"); - assertEq(_burnBalanceAfter, _burnBalanceBefore, "Burn Treasury Balance (WBNB)"); + assertEq(_revenueBalanceAfter, _USDTrevenueBalanceBefore, "Revenue Treasury Balance (USDT)"); + assertEq(_devBalanceAfter, _WBNBdevBalanceBefore, "Dev Treasury Balance (WBNB)"); + assertEq(_burnBalanceAfter, _WBNBburnBalanceBefore, "Burn Treasury Balance (WBNB)"); // Smart treasury after must equal to before uint256 _WBNBTreasuryBalanceAfter = IERC20(address(wbnb)).balanceOf(address(smartTreasury)); @@ -155,45 +153,34 @@ contract SmartTreasury_Distribute is BaseFork { } function testCorrectness_WhenSwapFailedOtherDistribution_ShoulWork() external { - // top up smart treasury - deal(address(wbnb), address(smartTreasury), 30 ether); - - uint256 _WBNBTreasuryBalanceBefore = IERC20(address(wbnb)).balanceOf(address(smartTreasury)); + // top up 2 tokens ot treasury + // wbnb (failed) + // eth (passed) + deal(address(wbnb), address(smartTreasury), normalizeEther(3 ether, wbnb.decimals())); + deal(address(eth), address(smartTreasury), normalizeEther(3 ether, eth.decimals())); - CacheState memory _stateWBNBBefore = CacheState( - IERC20(address(usdt)).balanceOf(REVENUE_TREASURY), - IERC20(address(wbnb)).balanceOf(DEV_TREASURY), - IERC20(address(wbnb)).balanceOf(BURN_TREASURY) - ); + uint256 _wbnbTreasuryBefore = IERC20(wbnb).balanceOf(address(smartTreasury)); - // mock router swap failed due to slippage + // mock fail for wbnb by slippage vm.mockCall( address(oracleMedianizer), abi.encodeWithSelector(IPriceOracle.getPrice.selector, address(wbnb), usd), abi.encode(normalizeEther(500 ether, wbnb.decimals()), 0) ); - // call distribute - address[] memory _tokens = new address[](1); + address[] memory _tokens = new address[](2); _tokens[0] = address(wbnb); + _tokens[1] = address(eth); vm.prank(ALICE); smartTreasury.distribute(_tokens); - // state after distribution - CacheState memory _stateWBNBAfter = CacheState( - IERC20(address(usdt)).balanceOf(REVENUE_TREASURY), - IERC20(address(wbnb)).balanceOf(DEV_TREASURY), - IERC20(address(wbnb)).balanceOf(BURN_TREASURY) - ); - - // wbnb balance after distribute must equal to balance before - assertEq(_stateWBNBAfter._rev, _stateWBNBBefore._rev, "Rev treasury balance (USDT)"); - assertEq(_stateWBNBAfter._dev, _stateWBNBBefore._dev, "Dev treasury balance (WBNB)"); - assertEq(_stateWBNBAfter._burn, _stateWBNBBefore._burn, "Burn treasury balance (WBNB)"); + uint256 _wbnbTreasuryAfter = IERC20(wbnb).balanceOf(address(smartTreasury)); + uint256 _ethTreasuryAfter = IERC20(eth).balanceOf(address(smartTreasury)); - // Smart Treasury balance test - uint256 _WBNBTreasuryBalanceAfter = IERC20(address(wbnb)).balanceOf(address(smartTreasury)); - assertEq(_WBNBTreasuryBalanceAfter, _WBNBTreasuryBalanceBefore, "Smart treasury balance (WBNB)"); + // smart treasury (wbnb) before must equal to after + assertEq(_wbnbTreasuryAfter, _wbnbTreasuryBefore, "WBNB smart treasury"); + // smart treasury (eth) must have nothing + assertEq(_ethTreasuryAfter, 0, "ETH smart treasury"); } function testRevert_WhenOracleGetPriceFailed_ShouldRevert() external { @@ -213,18 +200,20 @@ contract SmartTreasury_Distribute is BaseFork { } function testCorrectness_DecimalDiff_ShouldWork() external { + // tokenIn: doge (8 decimals) + // tokenOut (revenue token): wbnb (18 decimals) + + // set revenue token vm.prank(ALICE); smartTreasury.setRevenueToken(address(wbnb)); - // doge 8 decimals uint256 _distributeAmount = normalizeEther(3 ether, doge.decimals()); bytes[] memory _paths = new bytes[](1); _paths[0] = abi.encodePacked(address(doge), uint24(2500), address(wbnb)); pathReader.setPaths(_paths); - // case 2: in 6 out 18 - // mock oracle (doge to wbnb) + // mock price doge on oracle vm.mockCall( address(oracleMedianizer), abi.encodeWithSelector(IPriceOracle.getPrice.selector, address(doge), usd), @@ -237,8 +226,7 @@ contract SmartTreasury_Distribute is BaseFork { normalizeEther(1 ether, doge.decimals()) ); - // top up balance smart treasury - // top up wbnb + // top up doge to smart treasury deal(address(doge), address(smartTreasury), _distributeAmount); address[] memory _tokens = new address[](1); @@ -246,12 +234,14 @@ contract SmartTreasury_Distribute is BaseFork { vm.prank(ALICE); smartTreasury.distribute(_tokens); - uint256 _revenueTreasury = IERC20(address(wbnb)).balanceOf(REVENUE_TREASURY); - assertCloseBps(_revenueTreasury, _expectedAmountOut, 100); + uint256 _WBNBrevenueTreasury = IERC20(address(wbnb)).balanceOf(REVENUE_TREASURY); + assertCloseBps(_WBNBrevenueTreasury, _expectedAmountOut, 100); - uint256 _devDogeTreasury = IERC20(address(doge)).balanceOf(DEV_TREASURY); - assertEq(_devDogeTreasury, normalizeEther(1 ether, doge.decimals()), "DOGE Dev treasury"); + // expect distributed amount = 1 doge on dev treasury + uint256 _DogeDevTreasuryBalance = IERC20(address(doge)).balanceOf(DEV_TREASURY); + assertEq(_DogeDevTreasuryBalance, normalizeEther(1 ether, doge.decimals()), "DOGE Dev treasury"); + // expect distributed amount = 1 doge on burn treasury uint256 _burnDogeTreasury = IERC20(address(doge)).balanceOf(BURN_TREASURY); assertEq(_burnDogeTreasury, normalizeEther(1 ether, doge.decimals()), "DOGE Burn treasury"); } @@ -262,8 +252,7 @@ contract SmartTreasury_Distribute is BaseFork { uint256 _devBalanceBefore = IERC20(address(usdt)).balanceOf(DEV_TREASURY); uint256 _burnBalanceBefore = IERC20(address(usdt)).balanceOf(BURN_TREASURY); - // top up balance smart treasury - // top up usdt + // top up usdt to balance smart treasury deal(address(usdt), address(smartTreasury), normalizeEther(30 ether, usdt.decimals())); address[] memory _tokens = new address[](1); @@ -296,8 +285,7 @@ contract SmartTreasury_Distribute is BaseFork { uint256 _devBalanceBefore = IERC20(address(wbnb)).balanceOf(DEV_TREASURY); uint256 _burnBalanceBefore = IERC20(address(wbnb)).balanceOf(BURN_TREASURY); - // top up balance smart treasury - // top up wbnb + // top up bnb to smart treasury deal(address(wbnb), address(smartTreasury), 30 ether); // mock oracle under rate @@ -324,8 +312,7 @@ contract SmartTreasury_Distribute is BaseFork { uint256 _burnBalanceAfter = IERC20(address(wbnb)).balanceOf(BURN_TREASURY); // rev treasury (get usdt) - // tolerance ~5% - assertCloseBps(_revenueBalanceAfter, _revenueBalanceBefore + _expectedAmountOut, 500); + assertCloseBps(_revenueBalanceAfter, _revenueBalanceBefore + _expectedAmountOut, 100); // dev treasury (get wbnb) assertEq(_devBalanceAfter, _devBalanceBefore + 10 ether, "Dev Treasury Balance (WBNB)"); @@ -338,14 +325,9 @@ contract SmartTreasury_Distribute is BaseFork { } function testCorrectness_TooMuchSlippage_ShouldSkip() external { - // state before distribute - uint256 _revenueBalanceBefore = IERC20(address(usdt)).balanceOf(REVENUE_TREASURY); - uint256 _devBalanceBefore = IERC20(address(wbnb)).balanceOf(DEV_TREASURY); - uint256 _burnBalanceBefore = IERC20(address(wbnb)).balanceOf(BURN_TREASURY); - - // top up balance smart treasury - // top up wbnb + // top up bnb to smart treasury deal(address(wbnb), address(smartTreasury), 30 ether); + uint256 _WBNBTreasuryBalanceBefore = IERC20(address(wbnb)).balanceOf(address(smartTreasury)); // mock oracle under rate vm.mockCall( @@ -359,21 +341,8 @@ contract SmartTreasury_Distribute is BaseFork { vm.prank(ALICE); smartTreasury.distribute(_tokens); - // state after distribute - uint256 _revenueBalanceAfter = IERC20(address(usdt)).balanceOf(REVENUE_TREASURY); - uint256 _devBalanceAfter = IERC20(address(wbnb)).balanceOf(DEV_TREASURY); - uint256 _burnBalanceAfter = IERC20(address(wbnb)).balanceOf(BURN_TREASURY); - - // rev treasury (get usdt) - assertEq(_revenueBalanceAfter, _revenueBalanceBefore, "Rev Treasury Balance (USDT)"); - // dev treasury (get wbnb) - assertEq(_devBalanceAfter, _devBalanceBefore, "Dev Treasury Balance (WBNB)"); - - // burn treasury (get wbnb) - assertEq(_burnBalanceAfter, _burnBalanceBefore, "Burn Treasury Balance (WBNB)"); - // Smart treasury after must equal to before uint256 _WBNBTreasuryBalanceAfter = IERC20(address(wbnb)).balanceOf(address(smartTreasury)); - assertEq(_WBNBTreasuryBalanceAfter, normalizeEther(30 ether, wbnb.decimals()), "Smart treasury balance (WBNB)"); + assertEq(_WBNBTreasuryBalanceAfter, _WBNBTreasuryBalanceBefore, "Smart treasury balance (WBNB)"); } } From 2f0b61188ce6a0375f994272e128c37abb88d697 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Thu, 11 May 2023 17:37:11 +0700 Subject: [PATCH 70/87] test: add withdraw case --- .../SmartTreasury_Withdraw.t.sol | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 solidity/tests/smart-treasury/SmartTreasury_Withdraw.t.sol diff --git a/solidity/tests/smart-treasury/SmartTreasury_Withdraw.t.sol b/solidity/tests/smart-treasury/SmartTreasury_Withdraw.t.sol new file mode 100644 index 00000000..cd094a2b --- /dev/null +++ b/solidity/tests/smart-treasury/SmartTreasury_Withdraw.t.sol @@ -0,0 +1,40 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import { BaseFork } from "./BaseFork.sol"; +import { ISmartTreasury } from "solidity/contracts/interfaces/ISmartTreasury.sol"; + +contract SmartTreasury_Withdraw is BaseFork { + function setUp() public override { + super.setUp(); + } + + function testCorrectness_Withdraw_ShouldWork() external { + // top up + uint256 _topUpAmount = normalizeEther(10 ether, wbnb.decimals()); + deal(address(wbnb), address(smartTreasury), _topUpAmount); + uint256 _deployerBalance = wbnb.balanceOf(DEPLOYER); + + address[] memory _tokens = new address[](1); + _tokens[0] = address(wbnb); + + vm.prank(DEPLOYER); + smartTreasury.withdraw(_tokens, DEPLOYER); + + uint256 _deployerAfter = wbnb.balanceOf(DEPLOYER); + assertEq(_deployerAfter, _deployerBalance + _topUpAmount, "DEPLOYER BALANCE"); + } + + function testRevert_UnauthorizedWithdraw_ShouldRevert() external { + // top up + uint256 _topUpAmount = normalizeEther(10 ether, wbnb.decimals()); + deal(address(wbnb), address(smartTreasury), _topUpAmount); + + address[] memory _tokens = new address[](1); + _tokens[0] = address(wbnb); + + vm.prank(BOB); + vm.expectRevert("Ownable: caller is not the owner"); + smartTreasury.withdraw(_tokens, DEPLOYER); + } +} From e4c38c86ae887982695bd15d2b5d220d16d20176 Mon Sep 17 00:00:00 2001 From: jr-alpaca Date: Thu, 11 May 2023 18:43:55 +0700 Subject: [PATCH 71/87] feat: moneyMarket reader for rewarders --- forge_cache/solidity-files-cache.json | 22679 ++++++++++++++++ package.json | 6 +- .../MiniFL/config/SetPoolRewarders.s.sol | 29 + .../deployments/Rewarder/config/AddPool.s.sol | 73 + .../deployments/Rewarder/config/SetPool.s.sol | 72 + .../Rewarder/config/SetRewardPerSecond.s.sol | 31 + .../Rewarder/deploy/Rewarder.s.sol | 45 + .../interfaces/IMoneyMarketReader.sol | 17 +- solidity/contracts/miniFL/Rewarder.sol | 4 +- .../contracts/miniFL/interfaces/IMiniFL.sol | 2 + .../contracts/miniFL/interfaces/IRewarder.sol | 8 + .../money-market/interfaces/IMiniFL.sol | 2 - .../contracts/reader/MoneyMarketReader.sol | 82 +- type-script/scripts/write-rewarder.ts | 33 + 14 files changed, 23027 insertions(+), 56 deletions(-) create mode 100644 forge_cache/solidity-files-cache.json create mode 100644 script/deployments/MiniFL/config/SetPoolRewarders.s.sol create mode 100644 script/deployments/Rewarder/config/AddPool.s.sol create mode 100644 script/deployments/Rewarder/config/SetPool.s.sol create mode 100644 script/deployments/Rewarder/config/SetRewardPerSecond.s.sol create mode 100644 script/deployments/Rewarder/deploy/Rewarder.s.sol create mode 100644 type-script/scripts/write-rewarder.ts diff --git a/forge_cache/solidity-files-cache.json b/forge_cache/solidity-files-cache.json new file mode 100644 index 00000000..78e9e12f --- /dev/null +++ b/forge_cache/solidity-files-cache.json @@ -0,0 +1,22679 @@ +{ + "_format": "ethers-rs-sol-cache-3", + "paths": { + "artifacts": "out", + "build_infos": "out/build-info", + "sources": "solidity/contracts", + "tests": "solidity/tests", + "scripts": "script", + "libraries": [ + "node_modules" + ] + }, + "files": { + "node_modules/@openzeppelin/contracts/access/Ownable.sol": { + "lastModificationDate": 1665339326105, + "contentHash": "e436cea06129be2c73cda4b1acc848b5", + "sourceName": "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/utils/Context.sol" + ], + "versionRequirement": "^0.8.0", + "artifacts": { + "Ownable": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "Ownable.sol/Ownable.json" + } + } + }, + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol": { + "lastModificationDate": 1665339326105, + "contentHash": "d151fbfe7939989b9acf22797b32058b", + "sourceName": "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol" + ], + "versionRequirement": "^0.8.0", + "artifacts": { + "IERC20": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IERC20.sol/IERC20.json" + } + } + }, + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol": { + "lastModificationDate": 1665339326105, + "contentHash": "cb420c41d73987fa812167081de427a5", + "sourceName": "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol" + ], + "versionRequirement": "^0.8.0", + "artifacts": { + "IERC4626": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IERC4626.sol/IERC4626.json" + } + } + }, + "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol": { + "lastModificationDate": 1665339326105, + "contentHash": "2858d98e74e67987ec81b39605230b74", + "sourceName": "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "^0.8.0", + "artifacts": { + "IERC1822Proxiable": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "draft-IERC1822.sol/IERC1822Proxiable.json" + } + } + }, + "node_modules/@openzeppelin/contracts/proxy/Clones.sol": { + "lastModificationDate": 1665339326105, + "contentHash": "8d03477cb67af28579646fdb2508ddb0", + "sourceName": "node_modules/@openzeppelin/contracts/proxy/Clones.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "^0.8.0", + "artifacts": { + "Clones": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "Clones.sol/Clones.json" + } + } + }, + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol": { + "lastModificationDate": 1665339326105, + "contentHash": "3fc3c7c0a2956f36e766691bb9473b06", + "sourceName": "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", + "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", + "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol" + ], + "versionRequirement": "^0.8.0", + "artifacts": { + "ERC1967Proxy": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "ERC1967Proxy.sol/ERC1967Proxy.json" + } + } + }, + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol": { + "lastModificationDate": 1665339326105, + "contentHash": "6baa887a798e95b14f34e093f117e9b2", + "sourceName": "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol" + ], + "versionRequirement": "^0.8.2", + "artifacts": { + "ERC1967Upgrade": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "ERC1967Upgrade.sol/ERC1967Upgrade.json" + } + } + }, + "node_modules/@openzeppelin/contracts/proxy/Proxy.sol": { + "lastModificationDate": 1665339326105, + "contentHash": "40b3d81a836d50ff47e03893dcaaf204", + "sourceName": "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "^0.8.0", + "artifacts": { + "Proxy": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "Proxy.sol/Proxy.json" + } + } + }, + "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol": { + "lastModificationDate": 1665339326105, + "contentHash": "b6bd23bf19e90b771337037706470933", + "sourceName": "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "^0.8.0", + "artifacts": { + "IBeacon": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IBeacon.sol/IBeacon.json" + } + } + }, + "node_modules/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol": { + "lastModificationDate": 1665339326105, + "contentHash": "a947492251ac15d6bfd899c9fdb4d82b", + "sourceName": "node_modules/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", + "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", + "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol" + ], + "versionRequirement": "^0.8.0", + "artifacts": { + "ProxyAdmin": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "ProxyAdmin.sol/ProxyAdmin.json" + } + } + }, + "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol": { + "lastModificationDate": 1665339326105, + "contentHash": "ea48b4a63fd733eec048191be006daa8", + "sourceName": "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", + "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", + "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol" + ], + "versionRequirement": "^0.8.0", + "artifacts": { + "TransparentUpgradeableProxy": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json" + } + } + }, + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol": { + "lastModificationDate": 1665339326105, + "contentHash": "bcba485bbfd0aab6b8875b58224f6330", + "sourceName": "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/utils/Address.sol" + ], + "versionRequirement": "^0.8.2", + "artifacts": { + "Initializable": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "proxy/utils/Initializable.sol/Initializable.json" + } + } + }, + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol": { + "lastModificationDate": 1665339326105, + "contentHash": "af7bd64e1cfefbf6cb07f2adc1a25392", + "sourceName": "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol" + ], + "versionRequirement": "^0.8.0", + "artifacts": { + "ERC20": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "ERC20.sol/ERC20.json" + } + } + }, + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "lastModificationDate": 1665339326105, + "contentHash": "ad7c2d0af148c8f9f097d65deeb4da6b", + "sourceName": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "^0.8.0", + "artifacts": { + "IERC20": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "ERC20/IERC20.sol/IERC20.json" + } + } + }, + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "lastModificationDate": 1665339326105, + "contentHash": "909ab67fc5c25033fe6cd364f8c056f9", + "sourceName": "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol" + ], + "versionRequirement": "^0.8.0", + "artifacts": { + "IERC20Metadata": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IERC20Metadata.sol/IERC20Metadata.json" + } + } + }, + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol": { + "lastModificationDate": 1665339326105, + "contentHash": "fb77f144244b9ab12533aa6ce85ef8c5", + "sourceName": "node_modules/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "^0.8.0", + "artifacts": { + "IERC20Permit": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "draft-IERC20Permit.sol/IERC20Permit.json" + } + } + }, + "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { + "lastModificationDate": 1665339326105, + "contentHash": "3a843b05b85a270e9455e3d2e804e633", + "sourceName": "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol" + ], + "versionRequirement": "^0.8.0", + "artifacts": { + "SafeERC20": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SafeERC20.sol/SafeERC20.json" + } + } + }, + "node_modules/@openzeppelin/contracts/utils/Address.sol": { + "lastModificationDate": 1665339326105, + "contentHash": "c476b3895a94798b88a4bb97399e6dfe", + "sourceName": "node_modules/@openzeppelin/contracts/utils/Address.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "^0.8.1", + "artifacts": { + "Address": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "Address.sol/Address.json" + } + } + }, + "node_modules/@openzeppelin/contracts/utils/Context.sol": { + "lastModificationDate": 1665339326105, + "contentHash": "5f2c5c4b6af2dd4551027144797bc8be", + "sourceName": "node_modules/@openzeppelin/contracts/utils/Context.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "^0.8.0", + "artifacts": { + "Context": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "Context.sol/Context.json" + } + } + }, + "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol": { + "lastModificationDate": 1665339326105, + "contentHash": "f993f8f50186952a59ee5e3a30b68222", + "sourceName": "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "^0.8.0", + "artifacts": { + "StorageSlot": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "StorageSlot.sol/StorageSlot.json" + } + } + }, + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol": { + "lastModificationDate": 1665339326105, + "contentHash": "64e3f111253497ba40c2ad9bdf48a191", + "sourceName": "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "^0.8.0", + "artifacts": { + "SafeCast": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SafeCast.sol/SafeCast.json" + } + } + }, + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": { + "lastModificationDate": 1665339326113, + "contentHash": "403ce8273abde646bff81558ddf512ad", + "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol" + ], + "versionRequirement": "^0.8.0", + "artifacts": { + "OwnableUpgradeable": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "OwnableUpgradeable.sol/OwnableUpgradeable.json" + } + } + }, + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { + "lastModificationDate": 1665339326113, + "contentHash": "b98e2f3a856e6e7f2106fb919bacab9e", + "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol" + ], + "versionRequirement": "^0.8.2", + "artifacts": { + "Initializable": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "utils/Initializable.sol/Initializable.json" + } + } + }, + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol": { + "lastModificationDate": 1665339326113, + "contentHash": "c9cde6037fc8b1fe0ef04b79149ba733", + "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol" + ], + "versionRequirement": "^0.8.0", + "artifacts": { + "ReentrancyGuardUpgradeable": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.json" + } + } + }, + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol": { + "lastModificationDate": 1665339326113, + "contentHash": "a9ed3c7bc7d9ebb5e34f20829274f088", + "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "^0.8.0", + "artifacts": { + "IERC20Upgradeable": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IERC20Upgradeable.sol/IERC20Upgradeable.json" + } + } + }, + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol": { + "lastModificationDate": 1665339326113, + "contentHash": "afab576c4d1f55fbf293a0daf3826e31", + "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "^0.8.0", + "artifacts": { + "IERC20PermitUpgradeable": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "draft-IERC20PermitUpgradeable.sol/IERC20PermitUpgradeable.json" + } + } + }, + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol": { + "lastModificationDate": 1665339326113, + "contentHash": "c7dc9c967eb71371d53462f02b280441", + "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol" + ], + "versionRequirement": "^0.8.0", + "artifacts": { + "SafeERC20Upgradeable": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SafeERC20Upgradeable.sol/SafeERC20Upgradeable.json" + } + } + }, + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol": { + "lastModificationDate": 1665339326113, + "contentHash": "d42e87f4fba2b03ab4d3c14cb53d0c51", + "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "^0.8.1", + "artifacts": { + "AddressUpgradeable": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "AddressUpgradeable.sol/AddressUpgradeable.json" + } + } + }, + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { + "lastModificationDate": 1665339326113, + "contentHash": "6200b84950eb05b4a92a39fd1d6e0f9b", + "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol" + ], + "versionRequirement": "^0.8.0", + "artifacts": { + "ContextUpgradeable": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "ContextUpgradeable.sol/ContextUpgradeable.json" + } + } + }, + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol": { + "lastModificationDate": 1665339326113, + "contentHash": "00d9c0b8534f648176c53b50a914c19a", + "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "^0.8.0", + "artifacts": { + "SafeCastUpgradeable": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SafeCastUpgradeable.sol/SafeCastUpgradeable.json" + } + } + }, + "script/BaseScript.sol": { + "lastModificationDate": 1683614771298, + "contentHash": "ad27ebf26eef03b36bfb1e3246b9c1c6", + "sourceName": "script/BaseScript.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "BaseScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "BaseScript.sol/BaseScript.json" + }, + "IMoneyMarket": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "BaseScript.sol/IMoneyMarket.json" + } + } + }, + "script/deployments/01_DeployProxyAdmin.s.sol": { + "lastModificationDate": 1679481016242, + "contentHash": "490d45b05c37788d491fb2985691506c", + "sourceName": "script/deployments/01_DeployProxyAdmin.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", + "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", + "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "node_modules/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol", + "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployProxyAdminScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "01_DeployProxyAdmin.s.sol/DeployProxyAdminScript.json" + } + } + }, + "script/deployments/02_DeployMiniFL.s.sol": { + "lastModificationDate": 1683011974597, + "contentHash": "5235a936d2c15b542459a6ba4f2d2342", + "sourceName": "script/deployments/02_DeployMiniFL.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", + "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", + "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployMiniFLScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "02_DeployMiniFL.s.sol/DeployMiniFLScript.json" + } + } + }, + "script/deployments/03_DeployMoneyMarket.s.sol": { + "lastModificationDate": 1683011974599, + "contentHash": "62c90c96a1e00c58d6b7899645585222", + "sourceName": "script/deployments/03_DeployMoneyMarket.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/PancakeswapV2IbTokenLiquidationStrategy.sol", + "solidity/contracts/money-market/PancakeswapV2LiquidationStrategy.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/fee-models/FixedFeeModel100Bps.sol", + "solidity/contracts/money-market/interest-models/TripleSlopeModel7.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployMoneyMarketScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "03_DeployMoneyMarket.s.sol/DeployMoneyMarketScript.json" + } + } + }, + "script/deployments/04_DeployMoneyMarketAccountManager.s.sol": { + "lastModificationDate": 1683011974600, + "contentHash": "6e64b7fe5bea3ef6d03acc508214fb27", + "sourceName": "script/deployments/04_DeployMoneyMarketAccountManager.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", + "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", + "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployMoneyMarketAccountManagerScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "04_DeployMoneyMarketAccountManager.s.sol/DeployMoneyMarketAccountManagerScript.json" + } + } + }, + "script/deployments/05_DeployMoneyMarketReader.s.sol": { + "lastModificationDate": 1683011974601, + "contentHash": "a8a48aa3d3aecab111b9ee111e569eb3", + "sourceName": "script/deployments/05_DeployMoneyMarketReader.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketReader.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/reader/MoneyMarketReader.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployMoneyMarketReaderScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "05_DeployMoneyMarketReader.s.sol/DeployMoneyMarketReaderScript.json" + } + } + }, + "script/deployments/06_DeployOracle.s.sol": { + "lastModificationDate": 1683011974602, + "contentHash": "b368d52a305f3f204e924a83053a8d07", + "sourceName": "script/deployments/06_DeployOracle.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployOracleScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "06_DeployOracle.s.sol/DeployOracleScript.json" + } + } + }, + "script/deployments/AlpacaV2Oracle/config/SetOracle.s.sol": { + "lastModificationDate": 1683011974603, + "contentHash": "6a18362d63fc7b292c8a1bcc90cbbb3a", + "sourceName": "script/deployments/AlpacaV2Oracle/config/SetOracle.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetOracleScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "config/SetOracle.s.sol/SetOracleScript.json" + } + } + }, + "script/deployments/AlpacaV2Oracle/config/SetPools.s.sol": { + "lastModificationDate": 1683105360821, + "contentHash": "213581597513614dd593480c8728e9bb", + "sourceName": "script/deployments/AlpacaV2Oracle/config/SetPools.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "IPancakeSwapV3Factory": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetPools.s.sol/IPancakeSwapV3Factory.json" + }, + "SetPoolsScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetPools.s.sol/SetPoolsScript.json" + } + } + }, + "script/deployments/AlpacaV2Oracle/config/SetTokenConfig.s.sol": { + "lastModificationDate": 1683614771299, + "contentHash": "91f6158510987bbc059b2dc876bbb1e6", + "sourceName": "script/deployments/AlpacaV2Oracle/config/SetTokenConfig.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetTokenConfigScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetTokenConfig.s.sol/SetTokenConfigScript.json" + } + } + }, + "script/deployments/AlpacaV2Oracle/deploy/AlpacaV2Oracle.s.sol": { + "lastModificationDate": 1683105360822, + "contentHash": "81aeb7d587515da319955abc080284e8", + "sourceName": "script/deployments/AlpacaV2Oracle/deploy/AlpacaV2Oracle.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployAlpacaV2OracleScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "AlpacaV2Oracle.s.sol/DeployAlpacaV2OracleScript.json" + } + } + }, + "script/deployments/ChainLinkOracle/config/SetPriceFeeds.s.sol": { + "lastModificationDate": 1683614771299, + "contentHash": "97fd63c9460adf8761ea8f6fdfbe3ac1", + "sourceName": "script/deployments/ChainLinkOracle/config/SetPriceFeeds.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAggregatorV3.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IChainLinkPriceOracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetPriceFeedsScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetPriceFeeds.s.sol/SetPriceFeedsScript.json" + } + } + }, + "script/deployments/DebtToken/deploy/DebtTokenImplementation.s.sol": { + "lastModificationDate": 1683011974613, + "contentHash": "67160433652e4e4b7ec99e05f1cbaee8", + "sourceName": "script/deployments/DebtToken/deploy/DebtTokenImplementation.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployDebtTokenImplementationScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "DebtTokenImplementation.s.sol/DeployDebtTokenImplementationScript.json" + } + } + }, + "script/deployments/InterestBearingToken/deploy/InterestBearingTokenImplementation.s.sol": { + "lastModificationDate": 1683011974614, + "contentHash": "36b408c32bc4152d97006824c1dc6f63", + "sourceName": "script/deployments/InterestBearingToken/deploy/InterestBearingTokenImplementation.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployInterestBearingTokenImplementationScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "InterestBearingTokenImplementation.s.sol/DeployInterestBearingTokenImplementationScript.json" + } + } + }, + "script/deployments/InterestModels/deploy/MMDoubleSlopeModel1.s.sol": { + "lastModificationDate": 1683011974616, + "contentHash": "09551b1147cbc933a0e4f3ce16a4a454", + "sourceName": "script/deployments/InterestModels/deploy/MMDoubleSlopeModel1.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel1.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployMMDoubleSlopeModel1Script": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMDoubleSlopeModel1.s.sol/DeployMMDoubleSlopeModel1Script.json" + } + } + }, + "script/deployments/InterestModels/deploy/MMDoubleSlopeModel2.s.sol": { + "lastModificationDate": 1683011974616, + "contentHash": "f6dd13876a5300f6f827ec6ba9ff3815", + "sourceName": "script/deployments/InterestModels/deploy/MMDoubleSlopeModel2.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel2.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployMMDoubleSlopeModel2Script": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMDoubleSlopeModel2.s.sol/DeployMMDoubleSlopeModel2Script.json" + } + } + }, + "script/deployments/InterestModels/deploy/MMDoubleSlopeModel3.s.sol": { + "lastModificationDate": 1683011974617, + "contentHash": "cee5982287fe8c498198a5b03e3af5e5", + "sourceName": "script/deployments/InterestModels/deploy/MMDoubleSlopeModel3.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel3.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployMMDoubleSlopeModel3Script": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMDoubleSlopeModel3.s.sol/DeployMMDoubleSlopeModel3Script.json" + } + } + }, + "script/deployments/InterestModels/deploy/TripleSlopeModel0.s.sol": { + "lastModificationDate": 1683011974617, + "contentHash": "04e67e5932ef88ffc8739462ee2f774f", + "sourceName": "script/deployments/InterestModels/deploy/TripleSlopeModel0.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interest-models/TripleSlopeModel0.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployTripleSlopeModel0Script": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "TripleSlopeModel0.s.sol/DeployTripleSlopeModel0Script.json" + } + } + }, + "script/deployments/MiniFL/config/SetAlpacaPerSecond.s.sol": { + "lastModificationDate": 1683105360824, + "contentHash": "07227192901aa094cfb6227b84d33613", + "sourceName": "script/deployments/MiniFL/config/SetAlpacaPerSecond.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetAlpacaPerSecondScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetAlpacaPerSecond.s.sol/SetAlpacaPerSecondScript.json" + } + } + }, + "script/deployments/MiniFL/config/SetPool.s.sol": { + "lastModificationDate": 1683105360824, + "contentHash": "ed080f0d7e4e425ac00f780501f28ec8", + "sourceName": "script/deployments/MiniFL/config/SetPool.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetPoolScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetPool.s.sol/SetPoolScript.json" + } + } + }, + "script/deployments/MiniFL/config/SetWhitelistedCallers.s.sol": { + "lastModificationDate": 1683105360825, + "contentHash": "f2d7ca3ef09b67b5c8f8dad7aed93783", + "sourceName": "script/deployments/MiniFL/config/SetWhitelistedCallers.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetWhitelistedCallersScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetWhitelistedCallers.s.sol/SetWhitelistedCallersScript.json" + } + } + }, + "script/deployments/MiniFL/deploy/MiniFL.s.sol": { + "lastModificationDate": 1683011974621, + "contentHash": "1377ffffb73b83758c3b0cde26796e1e", + "sourceName": "script/deployments/MiniFL/deploy/MiniFL.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", + "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", + "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployMiniFLScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL.s.sol/DeployMiniFLScript.json" + } + } + }, + "script/deployments/MiniFL/script/MassUpdatePools.s.sol": { + "lastModificationDate": 1683105360825, + "contentHash": "d2f5e966c77b8b2638e3745743df24cc", + "sourceName": "script/deployments/MiniFL/script/MassUpdatePools.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MassUpdatePools": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MassUpdatePools.s.sol/MassUpdatePools.json" + } + } + }, + "script/deployments/MiniFL/upgrade/MiniFL.s.sol": { + "lastModificationDate": 1683011974622, + "contentHash": "f6efde11791f2118fdeaffd5faf6aff4", + "sourceName": "script/deployments/MiniFL/upgrade/MiniFL.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", + "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", + "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "node_modules/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol", + "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "UpgradeMiniFLScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL.s.sol/UpgradeMiniFLScript.json" + } + } + }, + "script/deployments/MoneyMarket/config/OpenMarket.s.sol": { + "lastModificationDate": 1683614771300, + "contentHash": "0fa3f78c46b8d303e9a8d7df88c3a733", + "sourceName": "script/deployments/MoneyMarket/config/OpenMarket.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "OpenMarketScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "OpenMarket.s.sol/OpenMarketScript.json" + } + } + }, + "script/deployments/MoneyMarket/config/SetAccountManagersOk.s.sol": { + "lastModificationDate": 1683011974623, + "contentHash": "4823839e2f13822a889e1de4ddebdf20", + "sourceName": "script/deployments/MoneyMarket/config/SetAccountManagersOk.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetAccountManagersOkScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetAccountManagersOk.s.sol/SetAccountManagersOkScript.json" + } + } + }, + "script/deployments/MoneyMarket/config/SetDebtTokenImplementation.s.sol": { + "lastModificationDate": 1683011974624, + "contentHash": "d1c1a6b2a8e02247335f4ab602721e5d", + "sourceName": "script/deployments/MoneyMarket/config/SetDebtTokenImplementation.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetDebtTokenImplementationScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetDebtTokenImplementation.s.sol/SetDebtTokenImplementationScript.json" + } + } + }, + "script/deployments/MoneyMarket/config/SetFees.s.sol": { + "lastModificationDate": 1683011974625, + "contentHash": "f0433565cccf19f1cd9cc51430df5e18", + "sourceName": "script/deployments/MoneyMarket/config/SetFees.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetFeesScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetFees.s.sol/SetFeesScript.json" + } + } + }, + "script/deployments/MoneyMarket/config/SetIbTokenImplementation.s.sol": { + "lastModificationDate": 1683011974627, + "contentHash": "f4bbe336d1ebbf9bc11651b8a5cefcc5", + "sourceName": "script/deployments/MoneyMarket/config/SetIbTokenImplementation.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetIbTokenImplementationScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetIbTokenImplementation.s.sol/SetIbTokenImplementationScript.json" + } + } + }, + "script/deployments/MoneyMarket/config/SetInterestModel.s.sol": { + "lastModificationDate": 1683011974628, + "contentHash": "edf287654653a22aecb73bcc8a42fd25", + "sourceName": "script/deployments/MoneyMarket/config/SetInterestModel.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetInterestModelScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetInterestModel.s.sol/SetInterestModelScript.json" + } + } + }, + "script/deployments/MoneyMarket/config/SetLiquidationParams.s.sol": { + "lastModificationDate": 1683011974629, + "contentHash": "ab4343a3e3e6f6e14bfcce5811b29c36", + "sourceName": "script/deployments/MoneyMarket/config/SetLiquidationParams.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetLiquidationParamsScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetLiquidationParams.s.sol/SetLiquidationParamsScript.json" + } + } + }, + "script/deployments/MoneyMarket/config/SetLiquidationStratsOk.s.sol": { + "lastModificationDate": 1683011974630, + "contentHash": "34ec9789b9e50febddff469a13f9b531", + "sourceName": "script/deployments/MoneyMarket/config/SetLiquidationStratsOk.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetLiquidationStratsOkScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetLiquidationStratsOk.s.sol/SetLiquidationStratsOkScript.json" + } + } + }, + "script/deployments/MoneyMarket/config/SetLiquidationTreasury.s.sol": { + "lastModificationDate": 1683105360826, + "contentHash": "5fd394f1f302ba6c12d88f7cefd127a3", + "sourceName": "script/deployments/MoneyMarket/config/SetLiquidationTreasury.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetLiquidationTreasuryScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetLiquidationTreasury.s.sol/SetLiquidationTreasuryScript.json" + } + } + }, + "script/deployments/MoneyMarket/config/SetLiquidatorsOk.s.sol": { + "lastModificationDate": 1683105360827, + "contentHash": "ae9c87cc2606391595a94130f5b56790", + "sourceName": "script/deployments/MoneyMarket/config/SetLiquidatorsOk.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetLiquidatorsOkScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetLiquidatorsOk.s.sol/SetLiquidatorsOkScript.json" + } + } + }, + "script/deployments/MoneyMarket/config/SetMaxNumOfToken.s.sol": { + "lastModificationDate": 1683011974633, + "contentHash": "4521136aa350313cfdf09faa4af94a9f", + "sourceName": "script/deployments/MoneyMarket/config/SetMaxNumOfToken.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetMaxNumOfTokenScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetMaxNumOfToken.s.sol/SetMaxNumOfTokenScript.json" + } + } + }, + "script/deployments/MoneyMarket/config/SetMinDebtSize.s.sol": { + "lastModificationDate": 1683011974634, + "contentHash": "b2eca27e4e16cfe4f1e5dbba1f46e49f", + "sourceName": "script/deployments/MoneyMarket/config/SetMinDebtSize.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetMinDebtSizeScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetMinDebtSize.s.sol/SetMinDebtSizeScript.json" + } + } + }, + "script/deployments/MoneyMarket/config/SetOracle.s.sol": { + "lastModificationDate": 1683011974635, + "contentHash": "50bc11e7b126582621e48b2f18620989", + "sourceName": "script/deployments/MoneyMarket/config/SetOracle.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetOracleScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket/config/SetOracle.s.sol/SetOracleScript.json" + } + } + }, + "script/deployments/MoneyMarket/config/SetRepurchaseRewardModel.s.sol": { + "lastModificationDate": 1683011974636, + "contentHash": "50b977050ab593e900c550b88986190d", + "sourceName": "script/deployments/MoneyMarket/config/SetRepurchaseRewardModel.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetRepurchaseRewardModelScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetRepurchaseRewardModel.s.sol/SetRepurchaseRewardModelScript.json" + } + } + }, + "script/deployments/MoneyMarket/config/SetRiskManagersOkScript.s.sol": { + "lastModificationDate": 1683011974637, + "contentHash": "e4ce26f454931355d75e6b05774f0f84", + "sourceName": "script/deployments/MoneyMarket/config/SetRiskManagersOkScript.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetRiskManagersOkScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetRiskManagersOkScript.s.sol/SetRiskManagersOkScript.json" + } + } + }, + "script/deployments/MoneyMarket/config/WithdrawProtocolReserves.s.sol": { + "lastModificationDate": 1683105360827, + "contentHash": "6ea6731ce8d9a9abf3e885851469fdd9", + "sourceName": "script/deployments/MoneyMarket/config/WithdrawProtocolReserves.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "WithdrawProtocolReservesScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "WithdrawProtocolReserves.s.sol/WithdrawProtocolReservesScript.json" + } + } + }, + "script/deployments/MoneyMarket/deploy/AdminFacet.s.sol": { + "lastModificationDate": 1683638039516, + "contentHash": "d1181b9fe179db5249919cc6fee80e0e", + "sourceName": "script/deployments/MoneyMarket/deploy/AdminFacet.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/proxy/Clones.sol", + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/AdminFacet.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployAdminFacetScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "AdminFacet.s.sol/DeployAdminFacetScript.json" + } + } + }, + "script/deployments/MoneyMarket/deploy/FlashloanFacet.s.sol": { + "lastModificationDate": 1683638032273, + "contentHash": "56c22765329f90d2676355d7cbc128cd", + "sourceName": "script/deployments/MoneyMarket/deploy/FlashloanFacet.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/FlashloanFacet.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployFlashloanFacetScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "FlashloanFacet.s.sol/DeployFlashloanFacetScript.json" + } + } + }, + "script/deployments/MoneyMarket/deploy/MoneyMarket.s.sol": { + "lastModificationDate": 1683638042477, + "contentHash": "da82babc1012be1f28fa0be4e877ea2a", + "sourceName": "script/deployments/MoneyMarket/deploy/MoneyMarket.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/PancakeswapV2IbTokenLiquidationStrategy.sol", + "solidity/contracts/money-market/PancakeswapV2LiquidationStrategy.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/fee-models/FixedFeeModel100Bps.sol", + "solidity/contracts/money-market/interest-models/TripleSlopeModel7.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployMoneyMarketScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket.s.sol/DeployMoneyMarketScript.json" + } + } + }, + "script/deployments/MoneyMarket/deploy/ViewFacet.s.sol": { + "lastModificationDate": 1683638036594, + "contentHash": "6f96d3ea4d07119c2dfc199b5759b7d2", + "sourceName": "script/deployments/MoneyMarket/deploy/ViewFacet.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/facets/ViewFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployViewFacetScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "ViewFacet.s.sol/DeployViewFacetScript.json" + } + } + }, + "script/deployments/MoneyMarket/diamond-cut/FlashloanFacetCut.s.sol": { + "lastModificationDate": 1683691690196, + "contentHash": "32ebdc24757713b6ff3a3a55f3be0abe", + "sourceName": "script/deployments/MoneyMarket/diamond-cut/FlashloanFacetCut.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DiamondCutFlashloanFacetScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "FlashloanFacetCut.s.sol/DiamondCutFlashloanFacetScript.json" + } + } + }, + "script/deployments/MoneyMarketAccountManager/deploy/MoneyMarketAccountManager.s.sol": { + "lastModificationDate": 1683011974638, + "contentHash": "9810ff05bf74a49a01717c50b82a0917", + "sourceName": "script/deployments/MoneyMarketAccountManager/deploy/MoneyMarketAccountManager.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", + "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", + "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployMoneyMarketAccountManagerScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarketAccountManager.s.sol/DeployMoneyMarketAccountManagerScript.json" + } + } + }, + "script/deployments/MoneyMarketReader/deploy/MoneyMarketReader.s.sol": { + "lastModificationDate": 1683011974640, + "contentHash": "f8e72abd284478683a77e3b0a104df8c", + "sourceName": "script/deployments/MoneyMarketReader/deploy/MoneyMarketReader.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketReader.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/reader/MoneyMarketReader.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployMoneyMarketReaderScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarketReader.s.sol/DeployMoneyMarketReaderScript.json" + } + } + }, + "script/deployments/OracleMedianizer/config/SetMultiPrimarySources.s.sol": { + "lastModificationDate": 1683614771300, + "contentHash": "afd21b20494e93b0a5e5f2b78f5001a5", + "sourceName": "script/deployments/OracleMedianizer/config/SetMultiPrimarySources.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetMultiPrimarySourcesScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetMultiPrimarySources.s.sol/SetMultiPrimarySourcesScript.json" + } + } + }, + "script/deployments/OracleMedianizer/deploy/OracleMedianizer.s.sol": { + "lastModificationDate": 1683011974642, + "contentHash": "24aab66c4f6166b265d3a5424d7f50cf", + "sourceName": "script/deployments/OracleMedianizer/deploy/OracleMedianizer.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", + "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", + "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployOracleMedianizerScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "OracleMedianizer.s.sol/DeployOracleMedianizerScript.json" + } + } + }, + "script/deployments/PancakeswapV2IbTokenLiquidationStrategy/deploy/PancakeswapV2IbTokenLiquidationStrategy.s.sol": { + "lastModificationDate": 1683011974643, + "contentHash": "f563ad0cf8151c8d749d7b5a5d5e74fb", + "sourceName": "script/deployments/PancakeswapV2IbTokenLiquidationStrategy/deploy/PancakeswapV2IbTokenLiquidationStrategy.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/PancakeswapV2IbTokenLiquidationStrategy.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployPancakeswapV2IbTokenLiquidationStrategyScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV2IbTokenLiquidationStrategy.s.sol/DeployPancakeswapV2IbTokenLiquidationStrategyScript.json" + } + } + }, + "script/deployments/PancakeswapV2LiquidationStrategy/config/SetCallersOk.s.sol": { + "lastModificationDate": 1683011974645, + "contentHash": "6a32248a3eac008e68fa7d391ae1e2f4", + "sourceName": "script/deployments/PancakeswapV2LiquidationStrategy/config/SetCallersOk.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetLiquidatorsOkScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetCallersOk.s.sol/SetLiquidatorsOkScript.json" + } + } + }, + "script/deployments/PancakeswapV2LiquidationStrategy/config/SetPaths.s.sol": { + "lastModificationDate": 1683011974646, + "contentHash": "4b1002a9247e4bd20598f6c171d3dab7", + "sourceName": "script/deployments/PancakeswapV2LiquidationStrategy/config/SetPaths.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/PancakeswapV2LiquidationStrategy.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetPathsScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "config/SetPaths.s.sol/SetPathsScript.json" + } + } + }, + "script/deployments/PancakeswapV2LiquidationStrategy/deploy/PancakeswapV2LiquidationStrategy.s.sol": { + "lastModificationDate": 1683011974647, + "contentHash": "e8445615f86da5fb2e870169e35b051e", + "sourceName": "script/deployments/PancakeswapV2LiquidationStrategy/deploy/PancakeswapV2LiquidationStrategy.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/PancakeswapV2IbTokenLiquidationStrategy.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployPancakeswapV2IbTokenLiquidationStrategyScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV2LiquidationStrategy.s.sol/DeployPancakeswapV2IbTokenLiquidationStrategyScript.json" + } + } + }, + "script/deployments/PancakeswapV3IbTokenLiquidationStrategy/config/SetPaths.s.sol": { + "lastModificationDate": 1683011974648, + "contentHash": "27ebe0f9d0054027c73e1203405e972b", + "sourceName": "script/deployments/PancakeswapV3IbTokenLiquidationStrategy/config/SetPaths.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/reader/libraries/LibBytes.sol", + "solidity/contracts/reader/libraries/LibPath.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetPathsScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV3IbTokenLiquidationStrategy/config/SetPaths.s.sol/SetPathsScript.json" + } + } + }, + "script/deployments/PancakeswapV3IbTokenLiquidationStrategy/deploy/PancakeswapV3IbTokenLiquidationStrategy.s.sol": { + "lastModificationDate": 1683011974648, + "contentHash": "283cfd4e5fdfa180d8e46b08934ffb53", + "sourceName": "script/deployments/PancakeswapV3IbTokenLiquidationStrategy/deploy/PancakeswapV3IbTokenLiquidationStrategy.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/reader/libraries/LibBytes.sol", + "solidity/contracts/reader/libraries/LibPath.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployPancakeswapV3IbTokenLiquidationStrategyScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV3IbTokenLiquidationStrategy.s.sol/DeployPancakeswapV3IbTokenLiquidationStrategyScript.json" + } + } + }, + "script/deployments/ProxyAdmin/deploy/ProxyAdmin.s.sol": { + "lastModificationDate": 1681890136632, + "contentHash": "cfc2d52a47405d638ef89d309c4fce35", + "sourceName": "script/deployments/ProxyAdmin/deploy/ProxyAdmin.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", + "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", + "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "node_modules/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol", + "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployProxyAdminScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "ProxyAdmin.s.sol/DeployProxyAdminScript.json" + } + } + }, + "script/deployments/RepurchaseRewardModel/deploy/FixedFeeModel500Bps.s.sol": { + "lastModificationDate": 1683011974649, + "contentHash": "7c3a0b79ec9bb85e99f8a61fbd3926e4", + "sourceName": "script/deployments/RepurchaseRewardModel/deploy/FixedFeeModel500Bps.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/fee-models/FixedFeeModel500Bps.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployFixedFeeModel500BpsScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "FixedFeeModel500Bps.s.sol/DeployFixedFeeModel500BpsScript.json" + } + } + }, + "script/deployments/RepurchaseRewardModel/deploy/FixedRepurchaseRewardModel.s.sol": { + "lastModificationDate": 1683011974650, + "contentHash": "71dac32012ef6433f202af42ec1ba1c3", + "sourceName": "script/deployments/RepurchaseRewardModel/deploy/FixedRepurchaseRewardModel.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/fee-models/FixedFeeModel100Bps.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployFixedRepurchaseRewardModelScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "FixedRepurchaseRewardModel.s.sol/DeployFixedRepurchaseRewardModelScript.json" + } + } + }, + "script/deployments/WNativeRelayer/config/setCallerOk.s.sol": { + "lastModificationDate": 1683011974651, + "contentHash": "e45195676bc3ab77afbd0398fd6e4f26", + "sourceName": "script/deployments/WNativeRelayer/config/setCallerOk.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetCallerOkScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "setCallerOk.s.sol/SetCallerOkScript.json" + } + } + }, + "script/deployments/WNativeRelayer/deploy/WNativeRelayer.s.sol": { + "lastModificationDate": 1683011974653, + "contentHash": "30499d92052ab00198132dd7db9bd326", + "sourceName": "script/deployments/WNativeRelayer/deploy/WNativeRelayer.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DeployWNativeRelayerScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "WNativeRelayer.s.sol/DeployWNativeRelayerScript.json" + } + } + }, + "script/deployments/libraries/LibMoneyMarketDeployment.sol": { + "lastModificationDate": 1683625397831, + "contentHash": "66bc5db5fa872f24340fbecea3c1c429", + "sourceName": "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/tests/utils/VM.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "LibMoneyMarketDeployment": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "LibMoneyMarketDeployment.sol/LibMoneyMarketDeployment.json" + } + } + }, + "script/utilities/BaseUtilsScript.sol": { + "lastModificationDate": 1683011974655, + "contentHash": "0f6b48085e2b0d62afe65c0e4d876a45", + "sourceName": "script/utilities/BaseUtilsScript.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "BaseUtilsScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "BaseUtilsScript.sol/BaseUtilsScript.json" + }, + "IMoneyMarket": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "BaseUtilsScript.sol/IMoneyMarket.json" + } + } + }, + "script/utilities/CreateLiquidationScenario.s.sol": { + "lastModificationDate": 1683011974655, + "contentHash": "d60ee29d4baa759175440c15b919b799", + "sourceName": "script/utilities/CreateLiquidationScenario.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "CreateLiquidationScenarioScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "CreateLiquidationScenario.s.sol/CreateLiquidationScenarioScript.json" + } + } + }, + "script/utilities/SetMoneyMarketConfigs.s.sol": { + "lastModificationDate": 1683004944255, + "contentHash": "8f5679ec912d99d7ee2e310e5a7345fe", + "sourceName": "script/utilities/SetMoneyMarketConfigs.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "script/utilities/BaseUtilsScript.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetMoneyMarketConfigsScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetMoneyMarketConfigs.s.sol/SetMoneyMarketConfigsScript.json" + } + } + }, + "script/utilities/SetProtocolConfigs.s.sol": { + "lastModificationDate": 1679481016246, + "contentHash": "cd0e1cb970f19145283bc312f2c3c508", + "sourceName": "script/utilities/SetProtocolConfigs.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "script/utilities/BaseUtilsScript.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetProtocolConfigsScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetProtocolConfigs.s.sol/SetProtocolConfigsScript.json" + } + } + }, + "script/utilities/SetTokenConfigs.s.sol": { + "lastModificationDate": 1679481016247, + "contentHash": "789cbe9ea82d061b43a74f19ae578fbe", + "sourceName": "script/utilities/SetTokenConfigs.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "script/utilities/BaseUtilsScript.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetTokenConfigsScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetTokenConfigs.s.sol/SetTokenConfigsScript.json" + } + } + }, + "script/utilities/SetUpMMForTest.s.sol": { + "lastModificationDate": 1683011974656, + "contentHash": "b6206a1a28b20335c6b8bc7833e7d21c", + "sourceName": "script/utilities/SetUpMMForTest.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol", + "solidity/contracts/money-market/interest-models/TripleSlopeModel7.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetUpMMForTestScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetUpMMForTest.s.sol/SetUpMMForTestScript.json" + } + } + }, + "script/utilities/SetUpMiniFLForTest.s.sol": { + "lastModificationDate": 1683011974657, + "contentHash": "d09a6d887a463b029b2c6bbb64086416", + "sourceName": "script/utilities/SetUpMiniFLForTest.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "script/BaseScript.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SetUpMiniFLForTestScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetUpMiniFLForTest.s.sol/SetUpMiniFLForTestScript.json" + } + } + }, + "script/utilities/withdrawProtocolReserve.s.sol": { + "lastModificationDate": 1683011974658, + "contentHash": "61fc1317dbee701ea78217a3f53de5ab", + "sourceName": "script/utilities/withdrawProtocolReserve.s.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "script/utilities/BaseUtilsScript.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/Script.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdJson.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "withdrawProtocolReserveScript": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "withdrawProtocolReserve.s.sol/withdrawProtocolReserveScript.json" + } + } + }, + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol": { + "lastModificationDate": 1683620715991, + "contentHash": "8b17ef18fd456e884dcdce06182829b7", + "sourceName": "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarketAccountManager": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarketAccountManager.sol/MoneyMarketAccountManager.json" + } + } + }, + "solidity/contracts/interfaces/IERC20.sol": { + "lastModificationDate": 1681890136641, + "contentHash": "d0506d733c90381fa2e929a5094f48b8", + "sourceName": "solidity/contracts/interfaces/IERC20.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IERC20": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "interfaces/IERC20.sol/IERC20.json" + } + } + }, + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol": { + "lastModificationDate": 1679402354791, + "contentHash": "ac2334d8bb1c6465f4b0bfe08d0aa721", + "sourceName": "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IMoneyMarketAccountManager": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IMoneyMarketAccountManager.sol/IMoneyMarketAccountManager.json" + } + } + }, + "solidity/contracts/interfaces/IMoneyMarketReader.sol": { + "lastModificationDate": 1683614773955, + "contentHash": "bd3a6ce91a95477f7f49bdd21af5c90a", + "sourceName": "solidity/contracts/interfaces/IMoneyMarketReader.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IMoneyMarketReader": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IMoneyMarketReader.sol/IMoneyMarketReader.json" + } + } + }, + "solidity/contracts/interfaces/IWNative.sol": { + "lastModificationDate": 1679402354792, + "contentHash": "f4366372bc4ba26b3772197bbfd00dcf", + "sourceName": "solidity/contracts/interfaces/IWNative.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IWNative": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IWNative.sol/IWNative.json" + } + } + }, + "solidity/contracts/interfaces/IWNativeRelayer.sol": { + "lastModificationDate": 1681890136642, + "contentHash": "37432e1986e5950f973921d7cbcea97b", + "sourceName": "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IWNativeRelayer": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IWNativeRelayer.sol/IWNativeRelayer.json" + } + } + }, + "solidity/contracts/miniFL/MiniFL.sol": { + "lastModificationDate": 1683004944260, + "contentHash": "a31291b3ac768021a2686829f31cc02d", + "sourceName": "solidity/contracts/miniFL/MiniFL.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MiniFL": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL.sol/MiniFL.json" + } + } + }, + "solidity/contracts/miniFL/Rewarder.sol": { + "lastModificationDate": 1683614773956, + "contentHash": "630ee9fd4fceed2e8ebdc47be1f4c46b", + "sourceName": "solidity/contracts/miniFL/Rewarder.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "Rewarder": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "Rewarder.sol/Rewarder.json" + } + } + }, + "solidity/contracts/miniFL/interfaces/IMiniFL.sol": { + "lastModificationDate": 1683614771303, + "contentHash": "248d0e960ede27add31e7ceff0a34d67", + "sourceName": "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/miniFL/interfaces/IRewarder.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "IMiniFL": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "interfaces/IMiniFL.sol/IMiniFL.json" + } + } + }, + "solidity/contracts/miniFL/interfaces/IRewarder.sol": { + "lastModificationDate": 1683614773956, + "contentHash": "5ee18121f2d673dbef4c3d503d317c4c", + "sourceName": "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IRewarder": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IRewarder.sol/IRewarder.json" + } + } + }, + "solidity/contracts/money-market/DebtToken.sol": { + "lastModificationDate": 1679402354824, + "contentHash": "eef274e7700c06854f50725f41f4acff", + "sourceName": "solidity/contracts/money-market/DebtToken.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DebtToken": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "DebtToken.sol/DebtToken.json" + } + } + }, + "solidity/contracts/money-market/InterestBearingToken.sol": { + "lastModificationDate": 1679402354825, + "contentHash": "dc938b5e3c494307c9cb9c6cbdc742a7", + "sourceName": "solidity/contracts/money-market/InterestBearingToken.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "InterestBearingToken": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "InterestBearingToken.sol/InterestBearingToken.json" + } + } + }, + "solidity/contracts/money-market/MoneyMarketDiamond.sol": { + "lastModificationDate": 1683011974661, + "contentHash": "f8a5d17ceae0c0ca45e3b244a96e670a", + "sourceName": "solidity/contracts/money-market/MoneyMarketDiamond.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarketDiamond": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarketDiamond.sol/MoneyMarketDiamond.json" + } + } + }, + "solidity/contracts/money-market/PancakeswapV2IbTokenLiquidationStrategy.sol": { + "lastModificationDate": 1683011974662, + "contentHash": "a8b9d00dbe54406c7a799af2c97121af", + "sourceName": "solidity/contracts/money-market/PancakeswapV2IbTokenLiquidationStrategy.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "PancakeswapV2IbTokenLiquidationStrategy": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV2IbTokenLiquidationStrategy.sol/PancakeswapV2IbTokenLiquidationStrategy.json" + } + } + }, + "solidity/contracts/money-market/PancakeswapV2LiquidationStrategy.sol": { + "lastModificationDate": 1683011974663, + "contentHash": "7feafed5220878a050c9e794d85fd27c", + "sourceName": "solidity/contracts/money-market/PancakeswapV2LiquidationStrategy.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "PancakeswapV2LiquidationStrategy": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV2LiquidationStrategy.sol/PancakeswapV2LiquidationStrategy.json" + } + } + }, + "solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol": { + "lastModificationDate": 1683614778796, + "contentHash": "a9a08650edd1d07fd953b283803d4891", + "sourceName": "solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/reader/libraries/LibBytes.sol", + "solidity/contracts/reader/libraries/LibPath.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "PancakeswapV3IbTokenLiquidationStrategy": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV3IbTokenLiquidationStrategy.sol/PancakeswapV3IbTokenLiquidationStrategy.json" + } + } + }, + "solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol": { + "lastModificationDate": 1683614778797, + "contentHash": "10bb87d7af43726a12753b42506ed966", + "sourceName": "solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "PancakeswapV3IbTokenLiquidationStrategy_WithPathReader": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.json" + } + } + }, + "solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol": { + "lastModificationDate": 1683614778797, + "contentHash": "ac44b73ac4b29d8432f077a80379e4fa", + "sourceName": "solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol", + "solidity/contracts/reader/libraries/LibBytes.sol", + "solidity/contracts/reader/libraries/LibPath.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "PancakeswapV3TokenLiquidationStrategy": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV3TokenLiquidationStrategy.sol/PancakeswapV3TokenLiquidationStrategy.json" + } + } + }, + "solidity/contracts/money-market/facets/AdminFacet.sol": { + "lastModificationDate": 1683625397832, + "contentHash": "47bdc720b199fa5bf5d3f927092902b7", + "sourceName": "solidity/contracts/money-market/facets/AdminFacet.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/proxy/Clones.sol", + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "AdminFacet": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "AdminFacet.sol/AdminFacet.json" + } + } + }, + "solidity/contracts/money-market/facets/BorrowFacet.sol": { + "lastModificationDate": 1679402354828, + "contentHash": "dbb0a596bc7e8bf6180150841765448a", + "sourceName": "solidity/contracts/money-market/facets/BorrowFacet.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "BorrowFacet": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "BorrowFacet.sol/BorrowFacet.json" + } + } + }, + "solidity/contracts/money-market/facets/CollateralFacet.sol": { + "lastModificationDate": 1679402354829, + "contentHash": "da4ce1e0959ec891141fa1fdb533a820", + "sourceName": "solidity/contracts/money-market/facets/CollateralFacet.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "CollateralFacet": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "CollateralFacet.sol/CollateralFacet.json" + } + } + }, + "solidity/contracts/money-market/facets/FlashloanFacet.sol": { + "lastModificationDate": 1683614778798, + "contentHash": "54b86a159ebb15050e16bb40b54706d6", + "sourceName": "solidity/contracts/money-market/facets/FlashloanFacet.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "FlashloanFacet": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "FlashloanFacet.sol/FlashloanFacet.json" + } + } + }, + "solidity/contracts/money-market/facets/LendFacet.sol": { + "lastModificationDate": 1683011974667, + "contentHash": "5157c0b62d59b3f1bad4a6d44f95795d", + "sourceName": "solidity/contracts/money-market/facets/LendFacet.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/proxy/Clones.sol", + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "LendFacet": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "LendFacet.sol/LendFacet.json" + } + } + }, + "solidity/contracts/money-market/facets/LiquidationFacet.sol": { + "lastModificationDate": 1683011974668, + "contentHash": "5c901123a810f57df7d7217c0ced8867", + "sourceName": "solidity/contracts/money-market/facets/LiquidationFacet.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "LiquidationFacet": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "LiquidationFacet.sol/LiquidationFacet.json" + } + } + }, + "solidity/contracts/money-market/facets/MMDiamondCutFacet.sol": { + "lastModificationDate": 1679402354832, + "contentHash": "132d20c80757dd88a33e330598583ff2", + "sourceName": "solidity/contracts/money-market/facets/MMDiamondCutFacet.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MMDiamondCutFacet": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMDiamondCutFacet.sol/MMDiamondCutFacet.json" + } + } + }, + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol": { + "lastModificationDate": 1679402354832, + "contentHash": "a1db41aceba5be3afe0c974c385998f2", + "sourceName": "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MMDiamondLoupeFacet": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMDiamondLoupeFacet.sol/MMDiamondLoupeFacet.json" + } + } + }, + "solidity/contracts/money-market/facets/MMOwnershipFacet.sol": { + "lastModificationDate": 1679402354832, + "contentHash": "9d424cdfc8a9e62f5f231ad79d6ea40c", + "sourceName": "solidity/contracts/money-market/facets/MMOwnershipFacet.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MMOwnershipFacet": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMOwnershipFacet.sol/MMOwnershipFacet.json" + } + } + }, + "solidity/contracts/money-market/facets/NonCollatBorrowFacet.sol": { + "lastModificationDate": 1679402354833, + "contentHash": "c81537170beadbcb4420d2d91cbecaa6", + "sourceName": "solidity/contracts/money-market/facets/NonCollatBorrowFacet.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "NonCollatBorrowFacet": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "NonCollatBorrowFacet.sol/NonCollatBorrowFacet.json" + } + } + }, + "solidity/contracts/money-market/facets/ViewFacet.sol": { + "lastModificationDate": 1683526269291, + "contentHash": "d2ff1d5954d2038de25cf0a1d6dc943e", + "sourceName": "solidity/contracts/money-market/facets/ViewFacet.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "ViewFacet": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "ViewFacet.sol/ViewFacet.json" + } + } + }, + "solidity/contracts/money-market/fee-models/FixedFeeModel100Bps.sol": { + "lastModificationDate": 1683011974669, + "contentHash": "d4e39cb20def9f96465c655659ecaae1", + "sourceName": "solidity/contracts/money-market/fee-models/FixedFeeModel100Bps.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/interfaces/IFeeModel.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "FixedFeeModel100Bps": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "FixedFeeModel100Bps.sol/FixedFeeModel100Bps.json" + } + } + }, + "solidity/contracts/money-market/fee-models/FixedFeeModel500Bps.sol": { + "lastModificationDate": 1683011974669, + "contentHash": "07dc483d4087ae49f0849117caf310bb", + "sourceName": "solidity/contracts/money-market/fee-models/FixedFeeModel500Bps.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/interfaces/IFeeModel.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "FixedFeeModel500Bps": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "FixedFeeModel500Bps.sol/FixedFeeModel500Bps.json" + } + } + }, + "solidity/contracts/money-market/interest-models/FixedInterestRateModel.sol": { + "lastModificationDate": 1679402354837, + "contentHash": "2604aad400ab75e551045575d2e6dced", + "sourceName": "solidity/contracts/money-market/interest-models/FixedInterestRateModel.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "FixedInterestRateModel": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "FixedInterestRateModel.sol/FixedInterestRateModel.json" + } + } + }, + "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel1.sol": { + "lastModificationDate": 1683011974670, + "contentHash": "7a2a82e582b14d25513d4c1905bf7d16", + "sourceName": "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel1.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MMDoubleSlopeModel1": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMDoubleSlopeModel1.sol/MMDoubleSlopeModel1.json" + } + } + }, + "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel2.sol": { + "lastModificationDate": 1683011974671, + "contentHash": "52b6e7a3a090567176107326d7fc1a74", + "sourceName": "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel2.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MMDoubleSlopeModel2": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMDoubleSlopeModel2.sol/MMDoubleSlopeModel2.json" + } + } + }, + "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel3.sol": { + "lastModificationDate": 1683011974671, + "contentHash": "7228bc63fc5bf22af9863a28992d60d4", + "sourceName": "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel3.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MMDoubleSlopeModel3": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMDoubleSlopeModel3.sol/MMDoubleSlopeModel3.json" + } + } + }, + "solidity/contracts/money-market/interest-models/TripleSlopeModel0.sol": { + "lastModificationDate": 1683011974672, + "contentHash": "7b50b47d61df120d9f288a1464329008", + "sourceName": "solidity/contracts/money-market/interest-models/TripleSlopeModel0.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "TripleSlopeModel0": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "TripleSlopeModel0.sol/TripleSlopeModel0.json" + } + } + }, + "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol": { + "lastModificationDate": 1679402354837, + "contentHash": "9be91a91b633b8a41f80bef7ea2d6b33", + "sourceName": "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "TripleSlopeModel6": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "TripleSlopeModel6.sol/TripleSlopeModel6.json" + } + } + }, + "solidity/contracts/money-market/interest-models/TripleSlopeModel7.sol": { + "lastModificationDate": 1679402354838, + "contentHash": "da68e6bc85190f4c192aa283717a3d61", + "sourceName": "solidity/contracts/money-market/interest-models/TripleSlopeModel7.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "TripleSlopeModel7": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "TripleSlopeModel7.sol/TripleSlopeModel7.json" + } + } + }, + "solidity/contracts/money-market/interfaces/IAdminFacet.sol": { + "lastModificationDate": 1683625397832, + "contentHash": "97a4e80a65f5c9ec912282371ba2fac8", + "sourceName": "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "IAdminFacet": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IAdminFacet.sol/IAdminFacet.json" + } + } + }, + "solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol": { + "lastModificationDate": 1683526269293, + "contentHash": "a961199abddcdf6e3a82e4913f32d10a", + "sourceName": "solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IAlpacaFlashloanCallback": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IAlpacaFlashloanCallback.sol/IAlpacaFlashloanCallback.json" + } + } + }, + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol": { + "lastModificationDate": 1679402354839, + "contentHash": "5db96763dcf47882bf8c1814aa2f482e", + "sourceName": "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IAlpacaV2Oracle": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "interfaces/IAlpacaV2Oracle.sol/IAlpacaV2Oracle.json" + } + } + }, + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol": { + "lastModificationDate": 1679402354839, + "contentHash": "bcc4a299df217e14109c2091a22cea6d", + "sourceName": "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "IBorrowFacet": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IBorrowFacet.sol/IBorrowFacet.json" + } + } + }, + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol": { + "lastModificationDate": 1679402354839, + "contentHash": "2d5ab3186abe99b805e87d3fd5e7d784", + "sourceName": "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "ICollateralFacet": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "ICollateralFacet.sol/ICollateralFacet.json" + } + } + }, + "solidity/contracts/money-market/interfaces/IDebtToken.sol": { + "lastModificationDate": 1679402354840, + "contentHash": "d0ed1daf5d130254e44f8c8d495f2dba", + "sourceName": "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IDebtToken": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IDebtToken.sol/IDebtToken.json" + } + } + }, + "solidity/contracts/money-market/interfaces/IERC165.sol": { + "lastModificationDate": 1679402354841, + "contentHash": "fe7563490fb306f2c8ef84564547f85e", + "sourceName": "solidity/contracts/money-market/interfaces/IERC165.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IERC165": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IERC165.sol/IERC165.json" + } + } + }, + "solidity/contracts/money-market/interfaces/IERC173.sol": { + "lastModificationDate": 1679402354841, + "contentHash": "1bbc01555ac17810c3b8ca6fe164ee5c", + "sourceName": "solidity/contracts/money-market/interfaces/IERC173.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IERC173": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IERC173.sol/IERC173.json" + } + } + }, + "solidity/contracts/money-market/interfaces/IERC20.sol": { + "lastModificationDate": 1679402354841, + "contentHash": "a2f5a69098785f473c27a18a1f51fd37", + "sourceName": "solidity/contracts/money-market/interfaces/IERC20.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IERC20": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "money-market/interfaces/IERC20.sol/IERC20.json" + } + } + }, + "solidity/contracts/money-market/interfaces/IFeeModel.sol": { + "lastModificationDate": 1679402354842, + "contentHash": "ad9f8bc94450bdd8ebd1ab66e81f2e2a", + "sourceName": "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IFeeModel": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IFeeModel.sol/IFeeModel.json" + } + } + }, + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol": { + "lastModificationDate": 1683614778798, + "contentHash": "66d402abc21fef310d106546e58e0c6b", + "sourceName": "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IFlashloanFacet": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IFlashloanFacet.sol/IFlashloanFacet.json" + } + } + }, + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol": { + "lastModificationDate": 1679402354843, + "contentHash": "af96180bc17161b072a1ae94f5636f0f", + "sourceName": "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/interfaces/IERC20.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "IInterestBearingToken": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IInterestBearingToken.sol/IInterestBearingToken.json" + } + } + }, + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol": { + "lastModificationDate": 1679402354843, + "contentHash": "ce5cfe287a2ec08e8a730ac403236bc7", + "sourceName": "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IInterestRateModel": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IInterestRateModel.sol/IInterestRateModel.json" + } + } + }, + "solidity/contracts/money-market/interfaces/ILendFacet.sol": { + "lastModificationDate": 1679402354844, + "contentHash": "ab701819933a4d31d61a82465def9303", + "sourceName": "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "ILendFacet": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "ILendFacet.sol/ILendFacet.json" + } + } + }, + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol": { + "lastModificationDate": 1683011974674, + "contentHash": "dbc5f297afc5813ea937e968ffbfc62f", + "sourceName": "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "ILiquidationFacet": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "ILiquidationFacet.sol/ILiquidationFacet.json" + } + } + }, + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol": { + "lastModificationDate": 1679402354845, + "contentHash": "4ca49983971cd566accd4627feacaa5e", + "sourceName": "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "ILiquidationStrategy": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "ILiquidationStrategy.sol/ILiquidationStrategy.json" + } + } + }, + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol": { + "lastModificationDate": 1679402354845, + "contentHash": "56dc7ac83c4d7c1798fd26b5cf08f79f", + "sourceName": "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IMMDiamondCut": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IMMDiamondCut.sol/IMMDiamondCut.json" + } + } + }, + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol": { + "lastModificationDate": 1679402354845, + "contentHash": "8db3f3bef1b6de66c394f2ec92ff702e", + "sourceName": "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IMMDiamondLoupe": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IMMDiamondLoupe.sol/IMMDiamondLoupe.json" + } + } + }, + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol": { + "lastModificationDate": 1679402354845, + "contentHash": "2750b97302960dd70c3093c421579732", + "sourceName": "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/interfaces/IERC173.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "IMMOwnershipFacet": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IMMOwnershipFacet.sol/IMMOwnershipFacet.json" + } + } + }, + "solidity/contracts/money-market/interfaces/IMiniFL.sol": { + "lastModificationDate": 1683614773957, + "contentHash": "c44fbcd512f1bd13792921949e7ce4f3", + "sourceName": "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IMiniFL": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "money-market/interfaces/IMiniFL.sol/IMiniFL.json" + } + } + }, + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol": { + "lastModificationDate": 1680932719799, + "contentHash": "347b14274400efea62ecb4a8b60d8b18", + "sourceName": "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "IMoneyMarket": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IMoneyMarket.sol/IMoneyMarket.json" + } + } + }, + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol": { + "lastModificationDate": 1679402354846, + "contentHash": "286a2ae5eff33932754c7d68da9aa6e2", + "sourceName": "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "INonCollatBorrowFacet": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "INonCollatBorrowFacet.sol/INonCollatBorrowFacet.json" + } + } + }, + "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol": { + "lastModificationDate": 1683011974675, + "contentHash": "ef1231232f9dce8f5c0c86434263d4fb", + "sourceName": "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IPancakeRouter02": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IPancakeRouter02.sol/IPancakeRouter02.json" + } + } + }, + "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol": { + "lastModificationDate": 1683011974676, + "contentHash": "141245e144bb3b3845e155f5a690ebdb", + "sourceName": "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol" + ], + "versionRequirement": ">=0.7.5", + "artifacts": { + "IPancakeSwapRouterV3": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IPancakeSwapRouterV3.sol/IPancakeSwapRouterV3.json" + } + } + }, + "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol": { + "lastModificationDate": 1683011974677, + "contentHash": "1b2c0ed04ff85e6fa2db38ab1065b841", + "sourceName": "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IPancakeV3Pool": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "interfaces/IPancakeV3Pool.sol/IPancakeV3Pool.json" + }, + "IPancakeV3PoolState": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IPancakeV3Pool.sol/IPancakeV3PoolState.json" + } + } + }, + "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol": { + "lastModificationDate": 1683011974679, + "contentHash": "b740c97d108fface05bdf844e667d3bb", + "sourceName": "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": ">=0.5.0", + "artifacts": { + "IPancakeV3SwapCallback": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IPancakeV3SwapCallback.sol/IPancakeV3SwapCallback.json" + } + } + }, + "solidity/contracts/money-market/interfaces/IPriceOracle.sol": { + "lastModificationDate": 1679402354846, + "contentHash": "e87932b2de1693c1eb01d49be7427d63", + "sourceName": "solidity/contracts/money-market/interfaces/IPriceOracle.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IPriceOracle": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "interfaces/IPriceOracle.sol/IPriceOracle.json" + } + } + }, + "solidity/contracts/money-market/interfaces/IViewFacet.sol": { + "lastModificationDate": 1683526269295, + "contentHash": "22bb4ea954ddd5a2a53dc71e24490c25", + "sourceName": "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "IViewFacet": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IViewFacet.sol/IViewFacet.json" + } + } + }, + "solidity/contracts/money-market/libraries/LibBytes.sol": { + "lastModificationDate": 1683614778799, + "contentHash": "4d9a2016d58a8aaf4d15e59f991ac22d", + "sourceName": "solidity/contracts/money-market/libraries/LibBytes.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "LibBytes": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "libraries/LibBytes.sol/LibBytes.json" + } + } + }, + "solidity/contracts/money-market/libraries/LibConstant.sol": { + "lastModificationDate": 1679402354847, + "contentHash": "c71559bc72217690e22dd1614a686c3b", + "sourceName": "solidity/contracts/money-market/libraries/LibConstant.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "LibConstant": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "LibConstant.sol/LibConstant.json" + } + } + }, + "solidity/contracts/money-market/libraries/LibDiamond.sol": { + "lastModificationDate": 1679402354847, + "contentHash": "af16a776aebeab72c2106f0badae0754", + "sourceName": "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "LibDiamond": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "LibDiamond.sol/LibDiamond.json" + } + } + }, + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol": { + "lastModificationDate": 1679402354848, + "contentHash": "1ef0bfa81bd9efcc8296c4888ff43171", + "sourceName": "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "LibDoublyLinkedList": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "LibDoublyLinkedList.sol/LibDoublyLinkedList.json" + } + } + }, + "solidity/contracts/money-market/libraries/LibFullMath.sol": { + "lastModificationDate": 1679402354849, + "contentHash": "fc446e94cbcf4885201bf8c28acf919f", + "sourceName": "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "LibFullMath": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "libraries/LibFullMath.sol/LibFullMath.json" + } + } + }, + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol": { + "lastModificationDate": 1683625397834, + "contentHash": "0d744da925dde6085c96afb6690fe52a", + "sourceName": "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "LibMoneyMarket01": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "LibMoneyMarket01.sol/LibMoneyMarket01.json" + } + } + }, + "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol": { + "lastModificationDate": 1679402354850, + "contentHash": "7db18481231da520c0346ee7ceba28d8", + "sourceName": "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "LibReentrancyGuard": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "LibReentrancyGuard.sol/LibReentrancyGuard.json" + } + } + }, + "solidity/contracts/money-market/libraries/LibSafeToken.sol": { + "lastModificationDate": 1679402354850, + "contentHash": "59fece0014bb86bfef256c1506e4e2df", + "sourceName": "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/interfaces/IERC20.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "LibSafeToken": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "LibSafeToken.sol/LibSafeToken.json" + } + } + }, + "solidity/contracts/money-market/libraries/LibShareUtil.sol": { + "lastModificationDate": 1679402354851, + "contentHash": "6134e77b5a2ea8f2581b085ad8454e9b", + "sourceName": "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/libraries/LibFullMath.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "LibShareUtil": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "LibShareUtil.sol/LibShareUtil.json" + } + } + }, + "solidity/contracts/oracle/AlpacaV2Oracle.sol": { + "lastModificationDate": 1683011974683, + "contentHash": "efb1c7fadc40d2b9ae09a797a78bda40", + "sourceName": "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "AlpacaV2Oracle": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "AlpacaV2Oracle.sol/AlpacaV2Oracle.json" + } + } + }, + "solidity/contracts/oracle/OracleMedianizer.sol": { + "lastModificationDate": 1679402354852, + "contentHash": "439c2fb289cd1d160e40866b16a87a1f", + "sourceName": "solidity/contracts/oracle/OracleMedianizer.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "OracleMedianizer": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "OracleMedianizer.sol/OracleMedianizer.json" + } + } + }, + "solidity/contracts/oracle/SimplePriceOracle.sol": { + "lastModificationDate": 1679402354853, + "contentHash": "2c18a1abd80321eb817d9696b3240eff", + "sourceName": "solidity/contracts/oracle/SimplePriceOracle.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "SimplePriceOracle": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "SimplePriceOracle.sol/SimplePriceOracle.json" + } + } + }, + "solidity/contracts/oracle/interfaces/IAggregatorV3.sol": { + "lastModificationDate": 1679402354854, + "contentHash": "f8c1fbd2c2546c9866b0153d34482d21", + "sourceName": "solidity/contracts/oracle/interfaces/IAggregatorV3.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IAggregatorV3": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IAggregatorV3.sol/IAggregatorV3.json" + } + } + }, + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol": { + "lastModificationDate": 1683011974684, + "contentHash": "0b3af88112aeaa71afc8a812730f48a1", + "sourceName": "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IAlpacaV2Oracle": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "oracle/interfaces/IAlpacaV2Oracle.sol/IAlpacaV2Oracle.json" + } + } + }, + "solidity/contracts/oracle/interfaces/IChainLinkPriceOracle.sol": { + "lastModificationDate": 1683614773958, + "contentHash": "5bcbf92b4decd8e8902f165e2ab6119f", + "sourceName": "solidity/contracts/oracle/interfaces/IChainLinkPriceOracle.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/oracle/interfaces/IAggregatorV3.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "IChainLinkPriceOracle": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IChainLinkPriceOracle.sol/IChainLinkPriceOracle.json" + } + } + }, + "solidity/contracts/oracle/interfaces/IChainLinkPriceOracle2.sol": { + "lastModificationDate": 1679402354855, + "contentHash": "2167ed2375caf973ec5d73d9da2e4934", + "sourceName": "solidity/contracts/oracle/interfaces/IChainLinkPriceOracle2.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/oracle/interfaces/IAggregatorV3.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "IChainLinkPriceOracle2": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IChainLinkPriceOracle2.sol/IChainLinkPriceOracle2.json" + } + } + }, + "solidity/contracts/oracle/interfaces/IERC20.sol": { + "lastModificationDate": 1679402354856, + "contentHash": "10bdd601e36392202a6b56eeb90356c7", + "sourceName": "solidity/contracts/oracle/interfaces/IERC20.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IERC20": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "oracle/interfaces/IERC20.sol/IERC20.json" + } + } + }, + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol": { + "lastModificationDate": 1679402354856, + "contentHash": "df2058934c009e5b5f41769d978d67a4", + "sourceName": "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "ILiquidityPair": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "ILiquidityPair.sol/ILiquidityPair.json" + } + } + }, + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol": { + "lastModificationDate": 1679402354856, + "contentHash": "afe00dff0ee3457e833729e133fbf7b9", + "sourceName": "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/oracle/interfaces/IPriceOracle.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "IOracleMedianizer": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IOracleMedianizer.sol/IOracleMedianizer.json" + } + } + }, + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol": { + "lastModificationDate": 1683011974685, + "contentHash": "d10e2df767b5ab6fefe6032f70868a4c", + "sourceName": "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": ">=0.5.0", + "artifacts": { + "IPancakeV3Pool": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "oracle/interfaces/IPancakeV3Pool.sol/IPancakeV3Pool.json" + } + } + }, + "solidity/contracts/oracle/interfaces/IPriceOracle.sol": { + "lastModificationDate": 1679402354857, + "contentHash": "ed32fd27e9c0f469439aa65b87541bdf", + "sourceName": "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IPriceOracle": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "oracle/interfaces/IPriceOracle.sol/IPriceOracle.json" + } + } + }, + "solidity/contracts/oracle/interfaces/IRouterLike.sol": { + "lastModificationDate": 1679402354857, + "contentHash": "abf8e37ab15e862ccf3bdefe53c8f532", + "sourceName": "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IRouterLike": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IRouterLike.sol/IRouterLike.json" + } + } + }, + "solidity/contracts/oracle/interfaces/IUniswapV3Pool.sol": { + "lastModificationDate": 1683004944280, + "contentHash": "b819c6cdb4efdd6a550c6e3cd13072b4", + "sourceName": "solidity/contracts/oracle/interfaces/IUniswapV3Pool.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": ">=0.5.0", + "artifacts": { + "IUniswapV3Pool": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IUniswapV3Pool.sol/IUniswapV3Pool.json" + }, + "IUniswapV3PoolImmutables": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IUniswapV3Pool.sol/IUniswapV3PoolImmutables.json" + }, + "IUniswapV3PoolState": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IUniswapV3Pool.sol/IUniswapV3PoolState.json" + } + } + }, + "solidity/contracts/oracle/libraries/LibFullMath.sol": { + "lastModificationDate": 1679402354857, + "contentHash": "ec6eaf606f4a0e5afa8bef0c379f121a", + "sourceName": "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "LibFullMath": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "oracle/libraries/LibFullMath.sol/LibFullMath.json" + } + } + }, + "solidity/contracts/reader/MoneyMarketReader.sol": { + "lastModificationDate": 1683614773959, + "contentHash": "d619675ee287ac16cf23842d7ec8ab4c", + "sourceName": "solidity/contracts/reader/MoneyMarketReader.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "solidity/contracts/interfaces/IMoneyMarketReader.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarketReader": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarketReader.sol/MoneyMarketReader.json" + } + } + }, + "solidity/contracts/reader/PCSV3PathReader.sol": { + "lastModificationDate": 1683614778800, + "contentHash": "3a935fbfb2c5c039a60a3e4f11361b73", + "sourceName": "solidity/contracts/reader/PCSV3PathReader.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol", + "solidity/contracts/reader/libraries/LibBytes.sol", + "solidity/contracts/reader/libraries/LibPath.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "PCSV3PathReader": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "PCSV3PathReader.sol/PCSV3PathReader.json" + } + } + }, + "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol": { + "lastModificationDate": 1683614778801, + "contentHash": "813d68480e80bbc0e6673ffc303c468f", + "sourceName": "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IUniSwapV3PathReader": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IUniSwapV3PathReader.sol/IUniSwapV3PathReader.json" + } + } + }, + "solidity/contracts/reader/libraries/LibBytes.sol": { + "lastModificationDate": 1683614778801, + "contentHash": "4d9a2016d58a8aaf4d15e59f991ac22d", + "sourceName": "solidity/contracts/reader/libraries/LibBytes.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "LibBytes": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "reader/libraries/LibBytes.sol/LibBytes.json" + } + } + }, + "solidity/contracts/reader/libraries/LibPath.sol": { + "lastModificationDate": 1683614778801, + "contentHash": "7a0e20af7cd08bed619792cdcb647798", + "sourceName": "solidity/contracts/reader/libraries/LibPath.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/reader/libraries/LibBytes.sol" + ], + "versionRequirement": ">=0.6.0", + "artifacts": { + "LibPath": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "LibPath.sol/LibPath.json" + } + } + }, + "solidity/tests/base/BaseTest.sol": { + "lastModificationDate": 1683625397835, + "contentHash": "226a5a7a78d0090ece4488d5729e3431", + "sourceName": "solidity/tests/base/BaseTest.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "BaseTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "BaseTest.sol/BaseTest.json" + } + } + }, + "solidity/tests/base/DSTest.sol": { + "lastModificationDate": 1665993426001, + "contentHash": "b04f778f0caf9f6cf9125f09aa68c3db", + "sourceName": "solidity/tests/base/DSTest.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": ">=0.5.0", + "artifacts": { + "DSTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "DSTest.sol/DSTest.json" + } + } + }, + "solidity/tests/helper/TestHelper.sol": { + "lastModificationDate": 1679402354869, + "contentHash": "d3a516236d910755898b78e924990b79", + "sourceName": "solidity/tests/helper/TestHelper.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "TestHelper": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "TestHelper.sol/TestHelper.json" + } + } + }, + "solidity/tests/interfaces/IBEP20.sol": { + "lastModificationDate": 1683011974687, + "contentHash": "15a42d344fe3c0c6ddfe772a74edc741", + "sourceName": "solidity/tests/interfaces/IBEP20.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IBEP20": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IBEP20.sol/IBEP20.json" + } + } + }, + "solidity/tests/interfaces/IERC20.sol": { + "lastModificationDate": 1679402354870, + "contentHash": "a2f5a69098785f473c27a18a1f51fd37", + "sourceName": "solidity/tests/interfaces/IERC20.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "IERC20": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "tests/interfaces/IERC20.sol/IERC20.json" + } + } + }, + "solidity/tests/interfaces/IQuoterV2.sol": { + "lastModificationDate": 1683011974687, + "contentHash": "73b38fd7b0aef635e8f58ccd586aefd8", + "sourceName": "solidity/tests/interfaces/IQuoterV2.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": ">=0.7.5", + "artifacts": { + "IQuoterV2": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "IQuoterV2.sol/IQuoterV2.json" + } + } + }, + "solidity/tests/interfaces/ProxyAdminLike.sol": { + "lastModificationDate": 1669967530448, + "contentHash": "7715c47b907d7b535267babb878564e8", + "sourceName": "solidity/tests/interfaces/ProxyAdminLike.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": ">=0.7.0, <0.9.0", + "artifacts": { + "ProxyAdminLike": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "ProxyAdminLike.sol/ProxyAdminLike.json" + } + } + }, + "solidity/tests/libs/LibAccount.sol": { + "lastModificationDate": 1679402354870, + "contentHash": "9268e0ac6176458835a659d71bcff161", + "sourceName": "solidity/tests/libs/LibAccount.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/tests/interfaces/IERC20.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "LibAccount": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "LibAccount.sol/LibAccount.json" + } + } + }, + "solidity/tests/libs/LibPCSV3PoolAddress.sol": { + "lastModificationDate": 1683526269296, + "contentHash": "1f83ede5f35f12e972e427a24000f25d", + "sourceName": "solidity/tests/libs/LibPCSV3PoolAddress.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": ">=0.5.0", + "artifacts": { + "LibPCSV3PoolAddress": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "LibPCSV3PoolAddress.sol/LibPCSV3PoolAddress.json" + } + } + }, + "solidity/tests/miniFL/MiniFL_AddPool.t.sol": { + "lastModificationDate": 1679402354882, + "contentHash": "5856b0e7d43f535b1dec2ad0c9d8e719", + "sourceName": "solidity/tests/miniFL/MiniFL_AddPool.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MiniFL_AddPoolTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_AddPool.t.sol/MiniFL_AddPoolTest.json" + } + } + }, + "solidity/tests/miniFL/MiniFL_BaseTest.t.sol": { + "lastModificationDate": 1679402354882, + "contentHash": "ecc9175a4dda81f3da77c81a802d2fc8", + "sourceName": "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MiniFL_BaseTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_BaseTest.t.sol/MiniFL_BaseTest.json" + } + } + }, + "solidity/tests/miniFL/MiniFL_Deposit.t.sol": { + "lastModificationDate": 1679402354882, + "contentHash": "f01e1554fbe2bf79bd0d62618053d8ff", + "sourceName": "solidity/tests/miniFL/MiniFL_Deposit.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MiniFL_DepositTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_Deposit.t.sol/MiniFL_DepositTest.json" + } + } + }, + "solidity/tests/miniFL/MiniFL_DepositWithRewarder.t.sol": { + "lastModificationDate": 1679402354883, + "contentHash": "e5d4f76ffe3447934db0db730858006f", + "sourceName": "solidity/tests/miniFL/MiniFL_DepositWithRewarder.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MiniFL_DepositWithRewarderTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_DepositWithRewarder.t.sol/MiniFL_DepositWithRewarderTest.json" + } + } + }, + "solidity/tests/miniFL/MiniFL_Harvest.t.sol": { + "lastModificationDate": 1679402354884, + "contentHash": "f4a7bd93ed8e7007838ae4b11c4c4786", + "sourceName": "solidity/tests/miniFL/MiniFL_Harvest.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/IERC20.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/libs/LibAccount.sol", + "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MiniFL_HarvestTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_Harvest.t.sol/MiniFL_HarvestTest.json" + } + } + }, + "solidity/tests/miniFL/MiniFL_HarvestWithRewarder.t.sol": { + "lastModificationDate": 1679402354884, + "contentHash": "f3b1d6dbe1f154bc22273cc3fc740cb8", + "sourceName": "solidity/tests/miniFL/MiniFL_HarvestWithRewarder.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/IERC20.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/libs/LibAccount.sol", + "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MiniFL_HarvestWithRewarderTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_HarvestWithRewarder.t.sol/MiniFL_HarvestWithRewarderTest.json" + } + } + }, + "solidity/tests/miniFL/MiniFL_PendingReward.t.sol": { + "lastModificationDate": 1679402354884, + "contentHash": "f3139976ed0da53fd084c93776639291", + "sourceName": "solidity/tests/miniFL/MiniFL_PendingReward.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/IERC20.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/libs/LibAccount.sol", + "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MiniFL_PendingRewardTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_PendingReward.t.sol/MiniFL_PendingRewardTest.json" + } + } + }, + "solidity/tests/miniFL/MiniFL_PendingRewardWithRewarder.t.sol": { + "lastModificationDate": 1679402354884, + "contentHash": "40c9263c8f21fe9515996b6a849a20f3", + "sourceName": "solidity/tests/miniFL/MiniFL_PendingRewardWithRewarder.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/IERC20.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/libs/LibAccount.sol", + "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MiniFL_PendingRewardWithRewarderTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_PendingRewardWithRewarder.t.sol/MiniFL_PendingRewardWithRewarderTest.json" + } + } + }, + "solidity/tests/miniFL/MiniFL_SetAlpacaPerSecond.t.sol": { + "lastModificationDate": 1679402354885, + "contentHash": "d1f6c0ab0b94290e4cdbd6450a729482", + "sourceName": "solidity/tests/miniFL/MiniFL_SetAlpacaPerSecond.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MiniFL_SetAlpacaPerSecondTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_SetAlpacaPerSecond.t.sol/MiniFL_SetAlpacaPerSecondTest.json" + } + } + }, + "solidity/tests/miniFL/MiniFL_SetMaxAlpacaPerSecond.t.sol": { + "lastModificationDate": 1679402354885, + "contentHash": "f1caa8ca7b159d2af1924985b6ae9cf4", + "sourceName": "solidity/tests/miniFL/MiniFL_SetMaxAlpacaPerSecond.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MiniFL_SetMaxAlpacaPerSecondTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_SetMaxAlpacaPerSecond.t.sol/MiniFL_SetMaxAlpacaPerSecondTest.json" + } + } + }, + "solidity/tests/miniFL/MiniFL_SetPool.t.sol": { + "lastModificationDate": 1679402354885, + "contentHash": "3900763af4f593fbd44740d6f4c86c19", + "sourceName": "solidity/tests/miniFL/MiniFL_SetPool.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MiniFL_SetPoolTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_SetPool.t.sol/MiniFL_SetPoolTest.json" + } + } + }, + "solidity/tests/miniFL/MiniFL_SetPoolRewarders.t.sol": { + "lastModificationDate": 1679402354886, + "contentHash": "762295b6e3ccb2d3d9953092529e7249", + "sourceName": "solidity/tests/miniFL/MiniFL_SetPoolRewarders.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MiniFL_SetPoolRewardersTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_SetPoolRewarders.t.sol/MiniFL_SetPoolRewardersTest.json" + } + } + }, + "solidity/tests/miniFL/MiniFL_SetWhitelistedCallers.t.sol": { + "lastModificationDate": 1679402354886, + "contentHash": "d5629b24a2fdb3850f31aadff88c8df5", + "sourceName": "solidity/tests/miniFL/MiniFL_SetWhitelistedCallers.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MiniFL_SetWhitelistedCallersTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_SetWhitelistedCallers.t.sol/MiniFL_SetWhitelistedCallersTest.json" + } + } + }, + "solidity/tests/miniFL/MiniFL_Withdraw.t.sol": { + "lastModificationDate": 1679402354887, + "contentHash": "54fc30e893cb4b84bf066e163bbed658", + "sourceName": "solidity/tests/miniFL/MiniFL_Withdraw.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MiniFL_WithdrawTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_Withdraw.t.sol/MiniFL_WithdrawTest.json" + } + } + }, + "solidity/tests/miniFL/MiniFL_WithdrawWithRewarder.t.sol": { + "lastModificationDate": 1679402354887, + "contentHash": "a275bc9b2acb860fb9a696808f0b78d6", + "sourceName": "solidity/tests/miniFL/MiniFL_WithdrawWithRewarder.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MiniFL_WithdrawWithRewarderTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_WithdrawWithRewarder.t.sol/MiniFL_WithdrawWithRewarderTest.json" + } + } + }, + "solidity/tests/mocks/MockAlpacaV2Oracle.sol": { + "lastModificationDate": 1683004944283, + "contentHash": "82d01dc382fb1cd9213de75f2e4f1425", + "sourceName": "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "MockAlpacaV2Oracle": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockAlpacaV2Oracle.sol/MockAlpacaV2Oracle.json" + } + } + }, + "solidity/tests/mocks/MockBadLiquidationStrategy.sol": { + "lastModificationDate": 1683011974688, + "contentHash": "2d89cb5b82ada16edaf1260941159d52", + "sourceName": "solidity/tests/mocks/MockBadLiquidationStrategy.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MockBadLiquidationStrategy": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockBadLiquidationStrategy.sol/MockBadLiquidationStrategy.json" + } + } + }, + "solidity/tests/mocks/MockChainLinkAggregator.sol": { + "lastModificationDate": 1679402354888, + "contentHash": "24362a4a6f94024e2d149adddbc0bacf", + "sourceName": "solidity/tests/mocks/MockChainLinkAggregator.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/oracle/interfaces/IAggregatorV3.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MockChainLinkAggregator": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockChainLinkAggregator.sol/MockChainLinkAggregator.json" + } + } + }, + "solidity/tests/mocks/MockChainLinkPriceOracle.sol": { + "lastModificationDate": 1679402354888, + "contentHash": "abd10870c33f03b979de4c739c5c74a8", + "sourceName": "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/oracle/interfaces/IPriceOracle.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MockChainLinkPriceOracle": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockChainLinkPriceOracle.sol/MockChainLinkPriceOracle.json" + } + } + }, + "solidity/tests/mocks/MockERC20.sol": { + "lastModificationDate": 1679402354889, + "contentHash": "40eb36bf0706be78d00eb4d888703a45", + "sourceName": "solidity/tests/mocks/MockERC20.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MockERC20": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockERC20.sol/MockERC20.json" + } + } + }, + "solidity/tests/mocks/MockFeeOnTransferToken.sol": { + "lastModificationDate": 1679402354889, + "contentHash": "1fd47fa6ae6f27303a46258d8cce12ea", + "sourceName": "solidity/tests/mocks/MockFeeOnTransferToken.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "solidity/tests/mocks/MockERC20.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MockFeeOnTransferToken": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockFeeOnTransferToken.sol/MockFeeOnTransferToken.json" + } + } + }, + "solidity/tests/mocks/MockFlashloan.sol": { + "lastModificationDate": 1683526269297, + "contentHash": "29697293a9ee14181d6b7f8893a76c27", + "sourceName": "solidity/tests/mocks/MockFlashloan.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MockFlashloan": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockFlashloan.sol/MockFlashloan.json" + } + } + }, + "solidity/tests/mocks/MockFlashloan_Redeposit.sol": { + "lastModificationDate": 1683526269297, + "contentHash": "70cf7fa0c5f57b81e8e1e22b4c239ac1", + "sourceName": "solidity/tests/mocks/MockFlashloan_Redeposit.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MockFlashloan_Redeposit": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockFlashloan_Redeposit.sol/MockFlashloan_Redeposit.json" + } + } + }, + "solidity/tests/mocks/MockFlashloan_Repurchase.sol": { + "lastModificationDate": 1683526269298, + "contentHash": "7b6ad082af9884cd4e18a0020f987dbe", + "sourceName": "solidity/tests/mocks/MockFlashloan_Repurchase.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MockFlashloan_Repurchase": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockFlashloan_Repurchase.sol/MockFlashloan_Repurchase.json" + } + } + }, + "solidity/tests/mocks/MockInterestModel.sol": { + "lastModificationDate": 1679402354890, + "contentHash": "4becfc795121e34db3aa2bedda86ede1", + "sourceName": "solidity/tests/mocks/MockInterestModel.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": "=0.8.19", + "artifacts": { + "MockInterestModel": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockInterestModel.sol/MockInterestModel.json" + } + } + }, + "solidity/tests/mocks/MockLPToken.sol": { + "lastModificationDate": 1679402354891, + "contentHash": "301c66b7ace7b0990c49e6503ddd265a", + "sourceName": "solidity/tests/mocks/MockLPToken.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MockLPToken": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockLPToken.sol/MockLPToken.json" + } + } + }, + "solidity/tests/mocks/MockLiquidationStrategy.sol": { + "lastModificationDate": 1679402354891, + "contentHash": "de8d41579b709f5f047b0e6e8827bbde", + "sourceName": "solidity/tests/mocks/MockLiquidationStrategy.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MockLiquidationStrategy": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockLiquidationStrategy.sol/MockLiquidationStrategy.json" + } + } + }, + "solidity/tests/mocks/MockMoneyMarket.sol": { + "lastModificationDate": 1683011974689, + "contentHash": "b38bd29e1fff99e84adfae884d29786c", + "sourceName": "solidity/tests/mocks/MockMoneyMarket.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/tests/interfaces/IERC20.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MockMoneyMarket": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockMoneyMarket.sol/MockMoneyMarket.json" + } + } + }, + "solidity/tests/mocks/MockRouter.sol": { + "lastModificationDate": 1679402354893, + "contentHash": "d946874bce302f2f72b82691c3df3f5f", + "sourceName": "solidity/tests/mocks/MockRouter.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "solidity/tests/interfaces/IERC20.sol", + "solidity/tests/utils/console.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MockRouter": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockRouter.sol/MockRouter.json" + } + } + }, + "solidity/tests/mocks/MockRouter02.sol": { + "lastModificationDate": 1679402354893, + "contentHash": "a8d67037b59b5c3b6244ea88521a8307", + "sourceName": "solidity/tests/mocks/MockRouter02.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/tests/interfaces/IERC20.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MockRouter02": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockRouter02.sol/MockRouter02.json" + } + } + }, + "solidity/tests/mocks/MockWNative.sol": { + "lastModificationDate": 1679402354894, + "contentHash": "e8c46e6400ddf1e8df79297ffad19c3e", + "sourceName": "solidity/tests/mocks/MockWNative.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/interfaces/IWNative.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MockWNative": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockWNative.sol/MockWNative.json" + } + } + }, + "solidity/tests/mocks/MockWNativeRelayer.sol": { + "lastModificationDate": 1679402354894, + "contentHash": "0931d143ca0d53c05864dc1ff51ce9f0", + "sourceName": "solidity/tests/mocks/MockWNativeRelayer.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/contracts/interfaces/IWNative.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MockWNativeRelayer": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockWNativeRelayer.sol/MockWNativeRelayer.json" + } + } + }, + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol": { + "lastModificationDate": 1683614778802, + "contentHash": "2a9ed51df326d2edbfdea773dc619e2b", + "sourceName": "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_BaseTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_BaseTest.t.sol/MoneyMarket_BaseTest.json" + } + } + }, + "solidity/tests/money-market/MoneyMarket_Ownership.t.sol": { + "lastModificationDate": 1679402354895, + "contentHash": "41d95132fee92f851f868ebdbe793d39", + "sourceName": "solidity/tests/money-market/MoneyMarket_Ownership.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_OwnershipTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Ownership.t.sol/MoneyMarket_OwnershipTest.json" + } + } + }, + "solidity/tests/money-market/MoneyMarket_ReentrancyGuard.t.sol": { + "lastModificationDate": 1679402354895, + "contentHash": "6bcf5ed349ec32f189d8751759b3507b", + "sourceName": "solidity/tests/money-market/MoneyMarket_ReentrancyGuard.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MockAttacker": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_ReentrancyGuard.t.sol/MockAttacker.json" + }, + "MoneyMarket_ReentrancyGuardTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_ReentrancyGuard.t.sol/MoneyMarket_ReentrancyGuardTest.json" + } + } + }, + "solidity/tests/money-market/MoneyMarket_To18ConversionFactor.t.sol": { + "lastModificationDate": 1679402354895, + "contentHash": "9164ae0c44d5ee1a1bd271805ba90242", + "sourceName": "solidity/tests/money-market/MoneyMarket_To18ConversionFactor.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/helper/TestHelper.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_To18ConversionFactorTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_To18ConversionFactor.t.sol/MoneyMarket_To18ConversionFactorTest.json" + } + } + }, + "solidity/tests/money-market/account-manager/MoneyMarket_AccountManager.t.sol": { + "lastModificationDate": 1679402354896, + "contentHash": "859f75c7814bcc3bc4c8058d6062fca7", + "sourceName": "solidity/tests/money-market/account-manager/MoneyMarket_AccountManager.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interest-models/FixedInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_AccountManagerTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_AccountManager.t.sol/MoneyMarket_AccountManagerTest.json" + } + } + }, + "solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol": { + "lastModificationDate": 1683625397835, + "contentHash": "ed3137307cba40187f9eab8a6483f9a7", + "sourceName": "solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interest-models/FixedInterestRateModel.sol", + "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol", + "solidity/contracts/money-market/interest-models/TripleSlopeModel7.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_AccrueInterest_Borrow": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_AccrueInterest_Borrow.t.sol/MoneyMarket_AccrueInterest_Borrow.json" + } + } + }, + "solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_RemoveCollateral.t.sol": { + "lastModificationDate": 1679402354897, + "contentHash": "65cbe4e33b9b8336856cd138a1bc51e7", + "sourceName": "solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_RemoveCollateral.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interest-models/FixedInterestRateModel.sol", + "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol", + "solidity/contracts/money-market/interest-models/TripleSlopeModel7.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_AccrueInterest_RemoveCollateralTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_AccrueInterest_RemoveCollateral.t.sol/MoneyMarket_AccrueInterest_RemoveCollateralTest.json" + } + } + }, + "solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_TransferCollatertal.t.sol": { + "lastModificationDate": 1679402354898, + "contentHash": "1ec56e5f41d7d16df4c4aced11450bb0", + "sourceName": "solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_TransferCollatertal.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interest-models/FixedInterestRateModel.sol", + "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol", + "solidity/contracts/money-market/interest-models/TripleSlopeModel7.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_AccrueInterest_TransferCollatertalTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_AccrueInterest_TransferCollatertal.t.sol/MoneyMarket_AccrueInterest_TransferCollatertalTest.json" + } + } + }, + "solidity/tests/money-market/admin/MoneyMarket_Admin_LiquidationParams.t.sol": { + "lastModificationDate": 1679402354898, + "contentHash": "a96d36fc2b5647ae60f50a9c4af66c04", + "sourceName": "solidity/tests/money-market/admin/MoneyMarket_Admin_LiquidationParams.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_Admin_LiquidationParamsTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Admin_LiquidationParams.t.sol/MoneyMarket_Admin_LiquidationParamsTest.json" + } + } + }, + "solidity/tests/money-market/admin/MoneyMarket_Admin_OpenMarket.t.sol": { + "lastModificationDate": 1679402354898, + "contentHash": "6d05edd411b1dad4fc155e4edc7374ac", + "sourceName": "solidity/tests/money-market/admin/MoneyMarket_Admin_OpenMarket.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_Admin_OpenMarketTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Admin_OpenMarket.t.sol/MoneyMarket_Admin_OpenMarketTest.json" + } + } + }, + "solidity/tests/money-market/admin/MoneyMarket_Admin_SetLiquidationTreasury.t.sol": { + "lastModificationDate": 1679402354898, + "contentHash": "8ddb1201f086a0a6ccaf68494146a9aa", + "sourceName": "solidity/tests/money-market/admin/MoneyMarket_Admin_SetLiquidationTreasury.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_Admin_SetLiquidationTreasuryTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Admin_SetLiquidationTreasury.t.sol/MoneyMarket_Admin_SetLiquidationTreasuryTest.json" + } + } + }, + "solidity/tests/money-market/admin/MoneyMarket_Admin_SetMaxNumberOfToken.t.sol": { + "lastModificationDate": 1679402354899, + "contentHash": "fb8cdb8bbb9396eed80354525743dc3a", + "sourceName": "solidity/tests/money-market/admin/MoneyMarket_Admin_SetMaxNumberOfToken.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_Admin_SetMaxNumberOfTokenTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Admin_SetMaxNumberOfToken.t.sol/MoneyMarket_Admin_SetMaxNumberOfTokenTest.json" + } + } + }, + "solidity/tests/money-market/admin/MoneyMarket_Admin_SetMinUsedBorrowingPower.t.sol": { + "lastModificationDate": 1679402354899, + "contentHash": "1f5d78e8826f34552b67fa0a81fc17c9", + "sourceName": "solidity/tests/money-market/admin/MoneyMarket_Admin_SetMinUsedBorrowingPower.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_Admin_SetMinDebtSizeTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Admin_SetMinUsedBorrowingPower.t.sol/MoneyMarket_Admin_SetMinDebtSizeTest.json" + } + } + }, + "solidity/tests/money-market/admin/MoneyMarket_Admin_SetRepurchaseRewardModel.t.sol": { + "lastModificationDate": 1683011974691, + "contentHash": "932145203a3525ac7dfe5f3443b938b3", + "sourceName": "solidity/tests/money-market/admin/MoneyMarket_Admin_SetRepurchaseRewardModel.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/fee-models/FixedFeeModel100Bps.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_Admin_SetRepurchaseRewardModelTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Admin_SetRepurchaseRewardModel.t.sol/MoneyMarket_Admin_SetRepurchaseRewardModelTest.json" + } + } + }, + "solidity/tests/money-market/admin/MoneyMarket_Admin_SetTokenConfig.t.sol": { + "lastModificationDate": 1683011974692, + "contentHash": "1d7465e81f35496917ccedbd978f4ae9", + "sourceName": "solidity/tests/money-market/admin/MoneyMarket_Admin_SetTokenConfig.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_Admin_SetTokenConfigTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Admin_SetTokenConfig.t.sol/MoneyMarket_Admin_SetTokenConfigTest.json" + } + } + }, + "solidity/tests/money-market/admin/MoneyMarket_Admin_TopUpTokenReserves.t.sol": { + "lastModificationDate": 1679402354900, + "contentHash": "a323089d9330a557b94ca9f2c1587683", + "sourceName": "solidity/tests/money-market/admin/MoneyMarket_Admin_TopUpTokenReserves.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_Admin_TopUpTokenReserveTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Admin_TopUpTokenReserves.t.sol/MoneyMarket_Admin_TopUpTokenReserveTest.json" + } + } + }, + "solidity/tests/money-market/debt-tokens/DebtToken_BaseTest.t.sol": { + "lastModificationDate": 1679402354901, + "contentHash": "904a196da9ebd65f742b8f6510341bdf", + "sourceName": "solidity/tests/money-market/debt-tokens/DebtToken_BaseTest.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DebtToken_BaseTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "DebtToken_BaseTest.t.sol/DebtToken_BaseTest.json" + } + } + }, + "solidity/tests/money-market/debt-tokens/DebtToken_Burn.t.sol": { + "lastModificationDate": 1679402354901, + "contentHash": "c9cb840d6162b86050c5df6a227957e2", + "sourceName": "solidity/tests/money-market/debt-tokens/DebtToken_Burn.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/money-market/debt-tokens/DebtToken_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DebtToken_BurnTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "DebtToken_Burn.t.sol/DebtToken_BurnTest.json" + } + } + }, + "solidity/tests/money-market/debt-tokens/DebtToken_Initializer.t.sol": { + "lastModificationDate": 1679402354901, + "contentHash": "c1f25f70435b4b130a7732a3dcb1f6c5", + "sourceName": "solidity/tests/money-market/debt-tokens/DebtToken_Initializer.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/money-market/debt-tokens/DebtToken_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DebtToken_InitializerTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "DebtToken_Initializer.t.sol/DebtToken_InitializerTest.json" + } + } + }, + "solidity/tests/money-market/debt-tokens/DebtToken_Mint.t.sol": { + "lastModificationDate": 1679402354901, + "contentHash": "8cb2a843460c8fd360c297e7bdadd693", + "sourceName": "solidity/tests/money-market/debt-tokens/DebtToken_Mint.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/money-market/debt-tokens/DebtToken_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DebtToken_MintTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "DebtToken_Mint.t.sol/DebtToken_MintTest.json" + } + } + }, + "solidity/tests/money-market/debt-tokens/DebtToken_SetOkHolders.t.sol": { + "lastModificationDate": 1679402354902, + "contentHash": "b6f68817cb49bd013155102a6a131fd1", + "sourceName": "solidity/tests/money-market/debt-tokens/DebtToken_SetOkHolders.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/money-market/debt-tokens/DebtToken_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DebtToken_SetOkHoldersTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "DebtToken_SetOkHolders.t.sol/DebtToken_SetOkHoldersTest.json" + } + } + }, + "solidity/tests/money-market/debt-tokens/DebtToken_Transfer.t.sol": { + "lastModificationDate": 1679402354902, + "contentHash": "ad04e11b64d52df8f0ebdf19db2f1f77", + "sourceName": "solidity/tests/money-market/debt-tokens/DebtToken_Transfer.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/money-market/debt-tokens/DebtToken_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "DebtToken_TransferTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "DebtToken_Transfer.t.sol/DebtToken_TransferTest.json" + } + } + }, + "solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol": { + "lastModificationDate": 1683614778803, + "contentHash": "8bbf10776fb1290ff5851aea7a4e4bdf", + "sourceName": "solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockFlashloan.sol", + "solidity/tests/mocks/MockFlashloan_Redeposit.sol", + "solidity/tests/mocks/MockFlashloan_Repurchase.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_Flashloan": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Flashloan.t.sol/MoneyMarket_Flashloan.json" + } + } + }, + "solidity/tests/money-market/interest-bearing-tokens/InterestBearingTokenBaseTest.sol": { + "lastModificationDate": 1679402354902, + "contentHash": "3f6240b2a5cb128dd927b4aa25f204cd", + "sourceName": "solidity/tests/money-market/interest-bearing-tokens/InterestBearingTokenBaseTest.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "InterestBearingTokenBaseTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "InterestBearingTokenBaseTest.sol/InterestBearingTokenBaseTest.json" + } + } + }, + "solidity/tests/money-market/interest-bearing-tokens/InterestBearingToken_ERC4626.t.sol": { + "lastModificationDate": 1679402354902, + "contentHash": "191550d6caa2ba41451a6ea0f280c993", + "sourceName": "solidity/tests/money-market/interest-bearing-tokens/InterestBearingToken_ERC4626.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/money-market/interest-bearing-tokens/InterestBearingTokenBaseTest.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "InterestBearingToken_ERC4626Test": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "InterestBearingToken_ERC4626.t.sol/InterestBearingToken_ERC4626Test.json" + } + } + }, + "solidity/tests/money-market/interest-bearing-tokens/InterestBearingToken_Hooks.t.sol": { + "lastModificationDate": 1679402354903, + "contentHash": "62c41594633033ef649d74b73dac9e21", + "sourceName": "solidity/tests/money-market/interest-bearing-tokens/InterestBearingToken_Hooks.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/money-market/interest-bearing-tokens/InterestBearingTokenBaseTest.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "InterestBearingToken_HooksTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "InterestBearingToken_Hooks.t.sol/InterestBearingToken_HooksTest.json" + } + } + }, + "solidity/tests/money-market/interest-bearing-tokens/InterestBearingToken_Initializer.t.sol": { + "lastModificationDate": 1679402354903, + "contentHash": "b877664ba6da0aebf346c1ccbe55232a", + "sourceName": "solidity/tests/money-market/interest-bearing-tokens/InterestBearingToken_Initializer.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/money-market/interest-bearing-tokens/InterestBearingTokenBaseTest.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "InterestBearingToken_InitializerTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "InterestBearingToken_Initializer.t.sol/InterestBearingToken_InitializerTest.json" + } + } + }, + "solidity/tests/money-market/interest-bearing-tokens/InterestBearingToken_Transfer.t.sol": { + "lastModificationDate": 1679402354903, + "contentHash": "13d2a922acce0d3ab5809e5e8672a0f7", + "sourceName": "solidity/tests/money-market/interest-bearing-tokens/InterestBearingToken_Transfer.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/money-market/interest-bearing-tokens/InterestBearingTokenBaseTest.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "InterestBearingToken_TransferTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "InterestBearingToken_Transfer.t.sol/InterestBearingToken_TransferTest.json" + } + } + }, + "solidity/tests/money-market/interest-models/MMDoubleSlope1.t.sol": { + "lastModificationDate": 1683011974692, + "contentHash": "c95a270a2b656ec313199a3024942d4e", + "sourceName": "solidity/tests/money-market/interest-models/MMDoubleSlope1.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel1.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MMDoubleSlope1_Test": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMDoubleSlope1.t.sol/MMDoubleSlope1_Test.json" + } + } + }, + "solidity/tests/money-market/interest-models/MMDoubleSlope2.t.sol": { + "lastModificationDate": 1683011974693, + "contentHash": "35ada43251f2f3951b0598415fd4ba05", + "sourceName": "solidity/tests/money-market/interest-models/MMDoubleSlope2.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel2.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MMDoubleSlope2_Test": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMDoubleSlope2.t.sol/MMDoubleSlope2_Test.json" + } + } + }, + "solidity/tests/money-market/interest-models/MMDoubleSlope3.t.sol": { + "lastModificationDate": 1683011974694, + "contentHash": "0c8e55edaca71c2aa2c71d424a0a1a0d", + "sourceName": "solidity/tests/money-market/interest-models/MMDoubleSlope3.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel3.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MMDoubleSlope3_Test": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMDoubleSlope3.t.sol/MMDoubleSlope3_Test.json" + } + } + }, + "solidity/tests/money-market/interest-models/TripleSlope0.t.sol": { + "lastModificationDate": 1683011974694, + "contentHash": "4820fed34a30800254c5bf3f5a654ff4", + "sourceName": "solidity/tests/money-market/interest-models/TripleSlope0.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interest-models/TripleSlopeModel0.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "TripleSlope0_Test": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "TripleSlope0.t.sol/TripleSlope0_Test.json" + } + } + }, + "solidity/tests/money-market/interest-models/TripleSlope6.t.sol": { + "lastModificationDate": 1679402354904, + "contentHash": "c119fe66c64d482986e85ddf80f87192", + "sourceName": "solidity/tests/money-market/interest-models/TripleSlope6.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "TripleSlope6_Test": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "TripleSlope6.t.sol/TripleSlope6_Test.json" + } + } + }, + "solidity/tests/money-market/interest-models/TripleSlope7.t.sol": { + "lastModificationDate": 1679402354905, + "contentHash": "e5feac588bbd7b03f8e0925277e0f6f4", + "sourceName": "solidity/tests/money-market/interest-models/TripleSlope7.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interest-models/TripleSlopeModel7.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "TripleSlope7_Test": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "TripleSlope7.t.sol/TripleSlope7_Test.json" + } + } + }, + "solidity/tests/money-market/lend/MoneyMarket_Lend_Deposit.t.sol": { + "lastModificationDate": 1679402354906, + "contentHash": "e1b2a6edaa1224a8a7791343b6c9ef3d", + "sourceName": "solidity/tests/money-market/lend/MoneyMarket_Lend_Deposit.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interest-models/FixedInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_Lend_DepositTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Lend_Deposit.t.sol/MoneyMarket_Lend_DepositTest.json" + } + } + }, + "solidity/tests/money-market/lend/MoneyMarket_Lend_Withdraw.t.sol": { + "lastModificationDate": 1679402354906, + "contentHash": "4261f5532d17e45635239760da837978", + "sourceName": "solidity/tests/money-market/lend/MoneyMarket_Lend_Withdraw.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockInterestModel.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_Lend_WithdrawTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Lend_Withdraw.t.sol/MoneyMarket_Lend_WithdrawTest.json" + } + } + }, + "solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_IbLiquidate.t.sol": { + "lastModificationDate": 1683011974698, + "contentHash": "0a73abbfa9751c1850bcea4229387203", + "sourceName": "solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_IbLiquidate.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/PancakeswapV2IbTokenLiquidationStrategy.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/IERC20.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockBadLiquidationStrategy.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockInterestModel.sol", + "solidity/tests/mocks/MockLPToken.sol", + "solidity/tests/mocks/MockLiquidationStrategy.sol", + "solidity/tests/mocks/MockRouter02.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_Liquidation_IbLiquidateTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Liquidation_IbLiquidate.t.sol/MoneyMarket_Liquidation_IbLiquidateTest.json" + } + } + }, + "solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_IbRepurchase.t.sol": { + "lastModificationDate": 1683011974699, + "contentHash": "37e5ac7d4a13f8ada4287cff6574517d", + "sourceName": "solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_IbRepurchase.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/fee-models/FixedFeeModel100Bps.sol", + "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_Liquidation_IbRepurchaseTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Liquidation_IbRepurchase.t.sol/MoneyMarket_Liquidation_IbRepurchaseTest.json" + } + } + }, + "solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_Liquidate.t.sol": { + "lastModificationDate": 1683011974699, + "contentHash": "dd19cd32578185d398043be78b2a7d63", + "sourceName": "solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_Liquidate.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockBadLiquidationStrategy.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockLiquidationStrategy.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_Liquidation_LiquidateTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Liquidation_Liquidate.t.sol/MoneyMarket_Liquidation_LiquidateTest.json" + } + } + }, + "solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_Repurchase.t.sol": { + "lastModificationDate": 1683011974701, + "contentHash": "c57d49b323b6b7cde0e92d7281dae6ff", + "sourceName": "solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_Repurchase.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/fee-models/FixedFeeModel100Bps.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockInterestModel.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_Liquidation_RepurchaseTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Liquidation_Repurchase.t.sol/MoneyMarket_Liquidation_RepurchaseTest.json" + } + } + }, + "solidity/tests/money-market/liquidation-strategies/PancakeswapV2IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol": { + "lastModificationDate": 1683011974695, + "contentHash": "00da5e082cf6895b552a2a9e5d40ad84", + "sourceName": "solidity/tests/money-market/liquidation-strategies/PancakeswapV2IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/PancakeswapV2IbTokenLiquidationStrategy.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/IERC20.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockLPToken.sol", + "solidity/tests/mocks/MockMoneyMarket.sol", + "solidity/tests/mocks/MockRouter.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "PancakeswapV2IbTokenLiquidationStrategy_ExecuteLiquidationTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV2IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol/PancakeswapV2IbTokenLiquidationStrategy_ExecuteLiquidationTest.json" + } + } + }, + "solidity/tests/money-market/liquidation-strategies/PancakeswapV2IbTokenLiquidationStrategy_SetConfigs.t.sol": { + "lastModificationDate": 1679402354907, + "contentHash": "a466841fbfdd20bf1271757d061956dd", + "sourceName": "solidity/tests/money-market/liquidation-strategies/PancakeswapV2IbTokenLiquidationStrategy_SetConfigs.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/PancakeswapV2IbTokenLiquidationStrategy.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/IERC20.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockLPToken.sol", + "solidity/tests/mocks/MockRouter.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "PancakeswapV2IbTokenLiquidationStrategy_SetConfigsTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV2IbTokenLiquidationStrategy_SetConfigs.t.sol/PancakeswapV2IbTokenLiquidationStrategy_SetConfigsTest.json" + } + } + }, + "solidity/tests/money-market/liquidation-strategies/PancakeswapV2LiquidationStrategy_ExecuteLiquidation.t.sol": { + "lastModificationDate": 1683011974695, + "contentHash": "c2dcb5b394fa8c6eb3ff8a9db9250e11", + "sourceName": "solidity/tests/money-market/liquidation-strategies/PancakeswapV2LiquidationStrategy_ExecuteLiquidation.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/PancakeswapV2LiquidationStrategy.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/IERC20.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockLPToken.sol", + "solidity/tests/mocks/MockRouter.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "PancakeswapV2LiquidationStrategy_ExecuteLiquidationTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV2LiquidationStrategy_ExecuteLiquidation.t.sol/PancakeswapV2LiquidationStrategy_ExecuteLiquidationTest.json" + } + } + }, + "solidity/tests/money-market/liquidation-strategies/PancakeswapV2LiquidationStrategy_SetConfigs.t.sol": { + "lastModificationDate": 1679402354907, + "contentHash": "81121b37d3ad35f1b59dd1015dc3e761", + "sourceName": "solidity/tests/money-market/liquidation-strategies/PancakeswapV2LiquidationStrategy_SetConfigs.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/PancakeswapV2LiquidationStrategy.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/IERC20.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockLPToken.sol", + "solidity/tests/mocks/MockRouter.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "PancakeswapV2LiquidationStrategy_SetConfigsTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV2LiquidationStrategy_SetConfigs.t.sol/PancakeswapV2LiquidationStrategy_SetConfigsTest.json" + } + } + }, + "solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol": { + "lastModificationDate": 1683614778804, + "contentHash": "3ce09a8dea635c4e3f4dff4e49fb9773", + "sourceName": "solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/reader/PCSV3PathReader.sol", + "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol", + "solidity/contracts/reader/libraries/LibBytes.sol", + "solidity/contracts/reader/libraries/LibPath.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/IBEP20.sol", + "solidity/tests/interfaces/IERC20.sol", + "solidity/tests/interfaces/IQuoterV2.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockMoneyMarket.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "BasePCSV3LiquidationForkTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "BasePCSV3LiquidationForkTest.sol/BasePCSV3LiquidationForkTest.json" + } + } + }, + "solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol": { + "lastModificationDate": 1683526269301, + "contentHash": "465b6e25fdbbd2a7fb5695e251e34326", + "sourceName": "solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/reader/PCSV3PathReader.sol", + "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol", + "solidity/contracts/reader/libraries/LibBytes.sol", + "solidity/contracts/reader/libraries/LibPath.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/IBEP20.sol", + "solidity/tests/interfaces/IERC20.sol", + "solidity/tests/interfaces/IQuoterV2.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockMoneyMarket.sol", + "solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol/PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.json" + } + } + }, + "solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol": { + "lastModificationDate": 1683614778804, + "contentHash": "ca62db5c737d3c9492e8b16b687f2863", + "sourceName": "solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/reader/PCSV3PathReader.sol", + "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol", + "solidity/contracts/reader/libraries/LibBytes.sol", + "solidity/contracts/reader/libraries/LibPath.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/IBEP20.sol", + "solidity/tests/interfaces/IERC20.sol", + "solidity/tests/interfaces/IQuoterV2.sol", + "solidity/tests/libs/LibPCSV3PoolAddress.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockMoneyMarket.sol", + "solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "PancakeswapV3IbTokenLiquidationStrategy_SetConfigs": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol/PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.json" + } + } + }, + "solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation.t.sol": { + "lastModificationDate": 1683614778806, + "contentHash": "65d6940511c493e545796b430fb36376", + "sourceName": "solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/reader/PCSV3PathReader.sol", + "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol", + "solidity/contracts/reader/libraries/LibBytes.sol", + "solidity/contracts/reader/libraries/LibPath.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/IBEP20.sol", + "solidity/tests/interfaces/IERC20.sol", + "solidity/tests/interfaces/IQuoterV2.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockMoneyMarket.sol", + "solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation.t.sol/PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation.json" + } + } + }, + "solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol": { + "lastModificationDate": 1683614778806, + "contentHash": "ed9eb097f93e42707aba1b0a04d69cab", + "sourceName": "solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/reader/PCSV3PathReader.sol", + "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol", + "solidity/contracts/reader/libraries/LibBytes.sol", + "solidity/contracts/reader/libraries/LibPath.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/IBEP20.sol", + "solidity/tests/interfaces/IERC20.sol", + "solidity/tests/interfaces/IQuoterV2.sol", + "solidity/tests/libs/LibPCSV3PoolAddress.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockMoneyMarket.sol", + "solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "PancakeswapV3TokenLiquidationStrategy_SetConfigs": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol/PancakeswapV3TokenLiquidationStrategy_SetConfigs.json" + } + } + }, + "solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol": { + "lastModificationDate": 1683614778807, + "contentHash": "36a2253a7d464e8b38dc35ee92ce5744", + "sourceName": "solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/reader/PCSV3PathReader.sol", + "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol", + "solidity/contracts/reader/libraries/LibBytes.sol", + "solidity/contracts/reader/libraries/LibPath.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/IBEP20.sol", + "solidity/tests/interfaces/IERC20.sol", + "solidity/tests/interfaces/IQuoterV2.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockMoneyMarket.sol", + "solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "WithReader_PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "WithReader_PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol/WithReader_PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.json" + } + } + }, + "solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol": { + "lastModificationDate": 1683614778807, + "contentHash": "f9f56cac6aff2e32e332106e49710d46", + "sourceName": "solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/reader/PCSV3PathReader.sol", + "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol", + "solidity/contracts/reader/libraries/LibBytes.sol", + "solidity/contracts/reader/libraries/LibPath.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/IBEP20.sol", + "solidity/tests/interfaces/IERC20.sol", + "solidity/tests/interfaces/IQuoterV2.sol", + "solidity/tests/libs/LibPCSV3PoolAddress.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockMoneyMarket.sol", + "solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol/WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.json" + } + } + }, + "solidity/tests/money-market/non-collat/MoneyMarket_NonCollatBorrow_Borrow.t.sol": { + "lastModificationDate": 1679402354913, + "contentHash": "7298fa903b6c2ee24da3993ba7120a89", + "sourceName": "solidity/tests/money-market/non-collat/MoneyMarket_NonCollatBorrow_Borrow.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol", + "solidity/contracts/money-market/interest-models/TripleSlopeModel7.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_NonCollatBorrow_BorrowTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_NonCollatBorrow_Borrow.t.sol/MoneyMarket_NonCollatBorrow_BorrowTest.json" + } + } + }, + "solidity/tests/money-market/non-collat/MoneyMarket_NonCollatBorrow_Repay.t.sol": { + "lastModificationDate": 1679402354914, + "contentHash": "82fa8316c7ca161c6d55d2d897b4739c", + "sourceName": "solidity/tests/money-market/non-collat/MoneyMarket_NonCollatBorrow_Repay.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol", + "solidity/contracts/money-market/interest-models/TripleSlopeModel7.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_NonCollatBorrow_RepayTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_NonCollatBorrow_Repay.t.sol/MoneyMarket_NonCollatBorrow_RepayTest.json" + } + } + }, + "solidity/tests/money-market/over-collat/MoneyMarket_Collateral_AddCollateral.t.sol": { + "lastModificationDate": 1679402354914, + "contentHash": "af93f14df4c4c48ed6a0478d717c5d25", + "sourceName": "solidity/tests/money-market/over-collat/MoneyMarket_Collateral_AddCollateral.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_Collateral_AddCollateralTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Collateral_AddCollateral.t.sol/MoneyMarket_Collateral_AddCollateralTest.json" + } + } + }, + "solidity/tests/money-market/over-collat/MoneyMarket_Collateral_RemoveCollateral.t.sol": { + "lastModificationDate": 1679402354915, + "contentHash": "a67f3581735f3531edb11b25a6fe6cf5", + "sourceName": "solidity/tests/money-market/over-collat/MoneyMarket_Collateral_RemoveCollateral.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_Collateral_RemoveCollateralTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Collateral_RemoveCollateral.t.sol/MoneyMarket_Collateral_RemoveCollateralTest.json" + } + } + }, + "solidity/tests/money-market/over-collat/MoneyMarket_Collateral_TransferCollateral.t.sol": { + "lastModificationDate": 1679402354915, + "contentHash": "009bbfe2518391ce20145627902cca0e", + "sourceName": "solidity/tests/money-market/over-collat/MoneyMarket_Collateral_TransferCollateral.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_Collateral_TransferCollateralTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Collateral_TransferCollateral.t.sol/MoneyMarket_Collateral_TransferCollateralTest.json" + } + } + }, + "solidity/tests/money-market/over-collat/MoneyMarket_FeeOnTransferTokens.t.sol": { + "lastModificationDate": 1683011974701, + "contentHash": "b40c99854a63cd5b20aab5d271656baf", + "sourceName": "solidity/tests/money-market/over-collat/MoneyMarket_FeeOnTransferTokens.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/fee-models/FixedFeeModel100Bps.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/helper/TestHelper.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockFeeOnTransferToken.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_FeeOnTransferTokensTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_FeeOnTransferTokens.t.sol/MoneyMarket_FeeOnTransferTokensTest.json" + } + } + }, + "solidity/tests/money-market/over-collat/MoneyMarket_OverCollatBorrow_Borrow.t.sol": { + "lastModificationDate": 1679402354917, + "contentHash": "a834d66c2614752fb505f1d579bb42ba", + "sourceName": "solidity/tests/money-market/over-collat/MoneyMarket_OverCollatBorrow_Borrow.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_OverCollatBorrow_BorrowTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_OverCollatBorrow_Borrow.t.sol/MoneyMarket_OverCollatBorrow_BorrowTest.json" + } + } + }, + "solidity/tests/money-market/over-collat/MoneyMarket_OverCollatBorrow_Repay.t.sol": { + "lastModificationDate": 1679402354917, + "contentHash": "354773153baf8ee0130367f25429642f", + "sourceName": "solidity/tests/money-market/over-collat/MoneyMarket_OverCollatBorrow_Repay.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interest-models/FixedInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMiniFL.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_OverCollatBorrow_RepayTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_OverCollatBorrow_Repay.t.sol/MoneyMarket_OverCollatBorrow_RepayTest.json" + } + } + }, + "solidity/tests/money-market/over-collat/MoneyMarket_OverCollatBorrow_RepayWithCollat.t.sol": { + "lastModificationDate": 1679402354918, + "contentHash": "d0066115e81346004a86a9ee9d2f752b", + "sourceName": "solidity/tests/money-market/over-collat/MoneyMarket_OverCollatBorrow_RepayWithCollat.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "script/deployments/libraries/LibMoneyMarketDeployment.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/DebtToken.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", + "solidity/contracts/money-market/interest-models/FixedInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IDebtToken.sol", + "solidity/contracts/money-market/interfaces/IERC165.sol", + "solidity/contracts/money-market/interfaces/IERC173.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", + "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", + "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", + "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDiamond.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockAlpacaV2Oracle.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "MoneyMarket_OverCollatBorrow_RepayWithCollatTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_OverCollatBorrow_RepayWithCollat.t.sol/MoneyMarket_OverCollatBorrow_RepayWithCollatTest.json" + } + } + }, + "solidity/tests/oracle/AlpacaV2Oracle_Initialize.t.sol": { + "lastModificationDate": 1679402354918, + "contentHash": "4c634b9f1cfb7f3660586bc1941a4c92", + "sourceName": "solidity/tests/oracle/AlpacaV2Oracle_Initialize.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "AlpacaV2Oracle_InitializeTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "AlpacaV2Oracle_Initialize.t.sol/AlpacaV2Oracle_InitializeTest.json" + } + } + }, + "solidity/tests/oracle/AlpacaV2Oracle_IsStable.t.sol": { + "lastModificationDate": 1683004944298, + "contentHash": "35d6ef458eb0805a0a595473b4d496a8", + "sourceName": "solidity/tests/oracle/AlpacaV2Oracle_IsStable.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "AlpacaV2Oracle_IsStableTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "AlpacaV2Oracle_IsStable.t.sol/AlpacaV2Oracle_IsStableTest.json" + } + } + }, + "solidity/tests/oracle/AlpacaV2Oracle_SetTokenConfig.t.sol": { + "lastModificationDate": 1683004944299, + "contentHash": "263a3a7aa3738a8d4f6d88d0cd6e1348", + "sourceName": "solidity/tests/oracle/AlpacaV2Oracle_SetTokenConfig.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "AlpacaV2Oracle_SetTokenConfigTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "AlpacaV2Oracle_SetTokenConfig.t.sol/AlpacaV2Oracle_SetTokenConfigTest.json" + } + } + }, + "solidity/tests/oracle/AlpacaV2Oracle_WithPCSv3.sol": { + "lastModificationDate": 1683011974702, + "contentHash": "60196eb2b3fec537b65730cdee6a3e29", + "sourceName": "solidity/tests/oracle/AlpacaV2Oracle_WithPCSv3.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "AlpacaV2Oracle_WithPCSv3": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "AlpacaV2Oracle_WithPCSv3.sol/AlpacaV2Oracle_WithPCSv3.json" + } + } + }, + "solidity/tests/oracle/Oracle_SimpleOracleTest.t.sol": { + "lastModificationDate": 1679402354920, + "contentHash": "d6d0bfbef9f1397bf9875037357bd6ce", + "sourceName": "solidity/tests/oracle/Oracle_SimpleOracleTest.t.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "node_modules/@openzeppelin/contracts/access/Ownable.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", + "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "node_modules/@openzeppelin/contracts/utils/Address.sol", + "node_modules/@openzeppelin/contracts/utils/Context.sol", + "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", + "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", + "solidity/contracts/interfaces/IWNative.sol", + "solidity/contracts/interfaces/IWNativeRelayer.sol", + "solidity/contracts/miniFL/MiniFL.sol", + "solidity/contracts/miniFL/Rewarder.sol", + "solidity/contracts/miniFL/interfaces/IMiniFL.sol", + "solidity/contracts/miniFL/interfaces/IRewarder.sol", + "solidity/contracts/money-market/InterestBearingToken.sol", + "solidity/contracts/money-market/interfaces/IAdminFacet.sol", + "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", + "solidity/contracts/money-market/interfaces/IERC20.sol", + "solidity/contracts/money-market/interfaces/IFeeModel.sol", + "solidity/contracts/money-market/interfaces/ILendFacet.sol", + "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", + "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", + "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", + "solidity/contracts/money-market/interfaces/IViewFacet.sol", + "solidity/contracts/money-market/libraries/LibConstant.sol", + "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", + "solidity/contracts/money-market/libraries/LibFullMath.sol", + "solidity/contracts/money-market/libraries/LibSafeToken.sol", + "solidity/contracts/money-market/libraries/LibShareUtil.sol", + "solidity/contracts/oracle/AlpacaV2Oracle.sol", + "solidity/contracts/oracle/OracleMedianizer.sol", + "solidity/contracts/oracle/SimplePriceOracle.sol", + "solidity/contracts/oracle/interfaces/IAggregatorV3.sol", + "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", + "solidity/contracts/oracle/interfaces/IERC20.sol", + "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", + "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", + "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", + "solidity/contracts/oracle/interfaces/IPriceOracle.sol", + "solidity/contracts/oracle/interfaces/IRouterLike.sol", + "solidity/contracts/oracle/libraries/LibFullMath.sol", + "solidity/tests/base/BaseTest.sol", + "solidity/tests/base/DSTest.sol", + "solidity/tests/interfaces/ProxyAdminLike.sol", + "solidity/tests/mocks/MockChainLinkAggregator.sol", + "solidity/tests/mocks/MockChainLinkPriceOracle.sol", + "solidity/tests/mocks/MockERC20.sol", + "solidity/tests/mocks/MockWNative.sol", + "solidity/tests/mocks/MockWNativeRelayer.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": "=0.8.19", + "artifacts": { + "Oracle_SimpleOracleTest": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "Oracle_SimpleOracleTest.t.sol/Oracle_SimpleOracleTest.json" + } + } + }, + "solidity/tests/utils/Common.sol": { + "lastModificationDate": 1668666287281, + "contentHash": "209153632fd2cbf09580de0ff6889813", + "sourceName": "solidity/tests/utils/Common.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": ">=0.6.2, <0.9.0", + "artifacts": { + "CommonBase": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "Common.sol/CommonBase.json" + } + } + }, + "solidity/tests/utils/Components.sol": { + "lastModificationDate": 1677218020549, + "contentHash": "20eed79801bf0dbf3fb2912e9cb4af8b", + "sourceName": "solidity/tests/utils/Components.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": ">=0.6.2, <0.9.0", + "artifacts": { + "Components": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "Components.sol/Components.json" + } + } + }, + "solidity/tests/utils/Script.sol": { + "lastModificationDate": 1668666287282, + "contentHash": "cdffb76489503f2367f6dbbe29720b2f", + "sourceName": "solidity/tests/utils/Script.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/Common.sol", + "solidity/tests/utils/Components.sol", + "solidity/tests/utils/StdAssertions.sol", + "solidity/tests/utils/StdCheats.sol", + "solidity/tests/utils/StdMath.sol", + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/StdUtils.sol", + "solidity/tests/utils/VM.sol", + "solidity/tests/utils/console.sol", + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": ">=0.6.2, <0.9.0", + "artifacts": { + "Script": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "Script.sol/Script.json" + }, + "ScriptBase": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "Script.sol/ScriptBase.json" + } + } + }, + "solidity/tests/utils/StdAssertions.sol": { + "lastModificationDate": 1677218020549, + "contentHash": "dea76ad286917f5c27ac18ba143cc799", + "sourceName": "solidity/tests/utils/StdAssertions.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/tests/base/DSTest.sol", + "solidity/tests/utils/StdMath.sol" + ], + "versionRequirement": ">=0.6.2, <0.9.0", + "artifacts": { + "StdAssertions": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "StdAssertions.sol/StdAssertions.json" + } + } + }, + "solidity/tests/utils/StdCheats.sol": { + "lastModificationDate": 1668666287283, + "contentHash": "1ad362f72fe4ff78af46af7a4111bb91", + "sourceName": "solidity/tests/utils/StdCheats.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/tests/utils/StdStorage.sol", + "solidity/tests/utils/VM.sol" + ], + "versionRequirement": ">=0.6.2, <0.9.0", + "artifacts": { + "StdCheats": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "StdCheats.sol/StdCheats.json" + }, + "StdCheatsSafe": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "StdCheats.sol/StdCheatsSafe.json" + } + } + }, + "solidity/tests/utils/StdJson.sol": { + "lastModificationDate": 1675422693731, + "contentHash": "d8867145209faa33303743c3a2865499", + "sourceName": "solidity/tests/utils/StdJson.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/tests/utils/VM.sol" + ], + "versionRequirement": ">=0.6.0, <0.9.0", + "artifacts": { + "stdJson": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "StdJson.sol/stdJson.json" + } + } + }, + "solidity/tests/utils/StdMath.sol": { + "lastModificationDate": 1677218020549, + "contentHash": "62a9437426121a5a9a53f865bc196a59", + "sourceName": "solidity/tests/utils/StdMath.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": ">=0.6.2, <0.9.0", + "artifacts": { + "stdMath": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "StdMath.sol/stdMath.json" + } + } + }, + "solidity/tests/utils/StdStorage.sol": { + "lastModificationDate": 1668666287283, + "contentHash": "e1a063b6f12459b0731ef9b4b38dab5d", + "sourceName": "solidity/tests/utils/StdStorage.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/tests/utils/VM.sol" + ], + "versionRequirement": ">=0.6.2, <0.9.0", + "artifacts": { + "stdStorage": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "StdStorage.sol/stdStorage.json" + }, + "stdStorageSafe": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "StdStorage.sol/stdStorageSafe.json" + } + } + }, + "solidity/tests/utils/StdUtils.sol": { + "lastModificationDate": 1668666287284, + "contentHash": "bba5b39dcb6417c5f8ba97246aba6360", + "sourceName": "solidity/tests/utils/StdUtils.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [ + "solidity/tests/utils/console2.sol" + ], + "versionRequirement": ">=0.6.2, <0.9.0", + "artifacts": { + "StdUtils": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "StdUtils.sol/StdUtils.json" + } + } + }, + "solidity/tests/utils/VM.sol": { + "lastModificationDate": 1680497541286, + "contentHash": "fb95c1fa6b2b5632adea8410d2119936", + "sourceName": "solidity/tests/utils/VM.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": ">=0.6.2, <0.9.0", + "artifacts": { + "VM": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "VM.sol/VM.json" + }, + "VmSafe": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "VM.sol/VmSafe.json" + } + } + }, + "solidity/tests/utils/console.sol": { + "lastModificationDate": 1667383748204, + "contentHash": "2abedd37b83d3c31b960ca554b501a4d", + "sourceName": "solidity/tests/utils/console.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": ">=0.4.22, <0.9.0", + "artifacts": { + "console": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "console.sol/console.json" + } + } + }, + "solidity/tests/utils/console2.sol": { + "lastModificationDate": 1668666287286, + "contentHash": "d61478336bd6c934ea4a5f7e31a002bb", + "sourceName": "solidity/tests/utils/console2.sol", + "solcConfig": { + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "metadata": { + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "evmVersion": "london", + "libraries": {} + } + }, + "imports": [], + "versionRequirement": ">=0.4.22, <0.9.0", + "artifacts": { + "console2": { + "0.8.19+commit.7dd6d404.Darwin.appleclang": "console2.sol/console2.json" + } + } + } + } +} \ No newline at end of file diff --git a/package.json b/package.json index 681daf26..ceff7604 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "exec:bsc_mainnet:minifl:config:set-alpaca-per-sec": "forge script script/deployments/MiniFL/config/SetAlpacaPerSecond.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:minifl:config:set-whitelist-callers": "forge script script/deployments/MiniFL/config/SetWhitelistedCallers.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:minifl:script:mass-update-pools": "forge script script/deployments/MiniFL/script/MassUpdatePools.s.sol --rpc-url bsc_mainnet --broadcast --slow", + "exec:bsc_mainnet:minifl:config:set-pool-rewarders": "forge script script/deployments/MiniFL/config/SetPoolRewarders.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:ib-token:deploy": "forge script script/deployments/InterestBearingToken/deploy/InterestBearingTokenImplementation.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:debt-token:deploy": "forge script script/deployments/DebtToken/deploy/DebtTokenImplementation.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:money-market:deploy": "forge script script/deployments/MoneyMarket/deploy/MoneyMarket.s.sol --rpc-url bsc_mainnet --broadcast --slow", @@ -56,7 +57,10 @@ "exec:bsc_mainnet:double-slope-model1:deploy": "forge script script/deployments/InterestModels/deploy/MMDoubleSlopeModel1.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:double-slope-model2:deploy": "forge script script/deployments/InterestModels/deploy/MMDoubleSlopeModel2.s.sol --rpc-url bsc_mainnet --broadcast --slow", "exec:bsc_mainnet:double-slope-model3:deploy": "forge script script/deployments/InterestModels/deploy/MMDoubleSlopeModel3.s.sol --rpc-url bsc_mainnet --broadcast --slow", - "exec:bsc_mainnet:rewarder:deploy": "forge script script/deployments/Rewarder/deploy/Rewarder.s.sol --rpc-url bsc_mainnet --broadcast --slow" + "exec:bsc_mainnet:rewarder:deploy": "forge script script/deployments/Rewarder/deploy/Rewarder.s.sol --rpc-url bsc_mainnet --broadcast --slow", + "exec:bsc_mainnet:rewarder:config:add-pool": "forge script script/deployments/Rewarder/config/AddPool.s.sol --rpc-url bsc_mainnet --broadcast --slow", + "exec:bsc_mainnet:rewarder:config:set-pool": "forge script script/deployments/Rewarder/config/SetPool.s.sol --rpc-url bsc_mainnet --broadcast --slow", + "exec:bsc_mainnet:rewarder:config:set-reward-per-second": "forge script script/deployments/Rewarder/config/SetRewardPerSecond.s.sol --rpc-url bsc_mainnet --broadcast --slow" }, "dependencies": { "@nomiclabs/hardhat-ethers": "^2.0.5", diff --git a/script/deployments/MiniFL/config/SetPoolRewarders.s.sol b/script/deployments/MiniFL/config/SetPoolRewarders.s.sol new file mode 100644 index 00000000..9c2e799f --- /dev/null +++ b/script/deployments/MiniFL/config/SetPoolRewarders.s.sol @@ -0,0 +1,29 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import "../../../BaseScript.sol"; + +contract SetPoolRewardersScript is BaseScript { + function run() public { + /* + ░██╗░░░░░░░██╗░█████╗░██████╗░███╗░░██╗██╗███╗░░██╗░██████╗░ + ░██║░░██╗░░██║██╔══██╗██╔══██╗████╗░██║██║████╗░██║██╔════╝░ + ░╚██╗████╗██╔╝███████║██████╔╝██╔██╗██║██║██╔██╗██║██║░░██╗░ + ░░████╔═████║░██╔══██║██╔══██╗██║╚████║██║██║╚████║██║░░╚██╗ + ░░╚██╔╝░╚██╔╝░██║░░██║██║░░██║██║░╚███║██║██║░╚███║╚██████╔╝ + ░░░╚═╝░░░╚═╝░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝╚═╝╚═╝░░╚══╝░╚═════╝░ + Check all variables below before execute the deployment script + */ + + uint256 _pid = 1; + address[] memory rewarders = new address[](1); + rewarders[0] = 0x0886B13E413bc0fBAeDB76b0855CA5F2dae82E99; + + //---- execution ----// + _startDeployerBroadcast(); + + miniFL.setPoolRewarders(_pid, rewarders); + + _stopBroadcast(); + } +} diff --git a/script/deployments/Rewarder/config/AddPool.s.sol b/script/deployments/Rewarder/config/AddPool.s.sol new file mode 100644 index 00000000..147a0095 --- /dev/null +++ b/script/deployments/Rewarder/config/AddPool.s.sol @@ -0,0 +1,73 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import "../../../BaseScript.sol"; + +import { IRewarder } from "solidity/contracts/miniFL/interfaces/IRewarder.sol"; + +contract SetPoolScript is BaseScript { + struct AddPoolInput { + uint256 pid; + uint256 allocPoint; + } + + AddPoolInput[] addPoolInputs; + + function run() public { + /* + ░██╗░░░░░░░██╗░█████╗░██████╗░███╗░░██╗██╗███╗░░██╗░██████╗░ + ░██║░░██╗░░██║██╔══██╗██╔══██╗████╗░██║██║████╗░██║██╔════╝░ + ░╚██╗████╗██╔╝███████║██████╔╝██╔██╗██║██║██╔██╗██║██║░░██╗░ + ░░████╔═████║░██╔══██║██╔══██╗██║╚████║██║██║╚████║██║░░╚██╗ + ░░╚██╔╝░╚██╔╝░██║░░██║██║░░██║██║░╚███║██║██║░╚███║╚██████╔╝ + ░░░╚═╝░░░╚═╝░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝╚═╝╚═╝░░╚══╝░╚═════╝░ + Check all variables below before execute the deployment script + */ + + IRewarder rewarder = IRewarder(0x0886B13E413bc0fBAeDB76b0855CA5F2dae82E99); + + // WBNB + addIbPool(wbnb, 75); + addDebtPool(wbnb, 100); + // BTCB + addIbPool(btcb, 100); + addDebtPool(btcb, 125); + // USDT + addIbPool(usdt, 100); + addDebtPool(usdt, 175); + // ETH + addIbPool(eth, 75); + addDebtPool(eth, 100); + // USDC + addIbPool(usdc, 50); + addDebtPool(usdc, 75); + // BUSD + addIbPool(busd, 50); + addDebtPool(busd, 75); + + //---- execution ----// + _startDeployerBroadcast(); + + for (uint256 i; i < addPoolInputs.length; i++) { + rewarder.addPool(addPoolInputs[i].pid, addPoolInputs[i].allocPoint, true); + } + + _stopBroadcast(); + } + + function addIbPool(address _token, uint256 _allocaPoint) internal { + address _ibToken = moneyMarket.getIbTokenFromToken(_token); + uint256 _pid = moneyMarket.getMiniFLPoolIdOfToken(_ibToken); + addRewarderPool(_pid, _allocaPoint); + } + + function addDebtPool(address _token, uint256 _allocaPoint) internal { + address _debtToken = moneyMarket.getDebtTokenFromToken(_token); + uint256 _pid = moneyMarket.getMiniFLPoolIdOfToken(_debtToken); + addRewarderPool(_pid, _allocaPoint); + } + + function addRewarderPool(uint256 _pid, uint256 _allocPoint) internal { + addPoolInputs.push(AddPoolInput({ pid: _pid, allocPoint: _allocPoint })); + } +} diff --git a/script/deployments/Rewarder/config/SetPool.s.sol b/script/deployments/Rewarder/config/SetPool.s.sol new file mode 100644 index 00000000..821fb6b7 --- /dev/null +++ b/script/deployments/Rewarder/config/SetPool.s.sol @@ -0,0 +1,72 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import "../../../BaseScript.sol"; + +import { IRewarder } from "solidity/contracts/miniFL/interfaces/IRewarder.sol"; + +contract SetPoolScript is BaseScript { + struct SetPoolInput { + uint256 pid; + uint256 allocPoint; + } + + SetPoolInput[] setPoolInputs; + + function run() public { + /* + ░██╗░░░░░░░██╗░█████╗░██████╗░███╗░░██╗██╗███╗░░██╗░██████╗░ + ░██║░░██╗░░██║██╔══██╗██╔══██╗████╗░██║██║████╗░██║██╔════╝░ + ░╚██╗████╗██╔╝███████║██████╔╝██╔██╗██║██║██╔██╗██║██║░░██╗░ + ░░████╔═████║░██╔══██║██╔══██╗██║╚████║██║██║╚████║██║░░╚██╗ + ░░╚██╔╝░╚██╔╝░██║░░██║██║░░██║██║░╚███║██║██║░╚███║╚██████╔╝ + ░░░╚═╝░░░╚═╝░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝╚═╝╚═╝░░╚══╝░╚═════╝░ + Check all variables below before execute the deployment script + */ + + IRewarder rewarder = IRewarder(0x767adcb3650BAB4FEA44469fCe3FA66D767Bc22c); + + setIbAllocPoint(wbnb, 75); // WBNB + setDebtAllocPoint(wbnb, 100); + // BTCB + // setIbAllocPoint(btcb, 100); + // setDebtAllocPoint(btcb, 125); + // // USDT + // setIbAllocPoint(usdt, 100); + // setDebtAllocPoint(usdt, 175); + // // ETH + // setIbAllocPoint(eth, 75); + // setDebtAllocPoint(eth, 100); + // // USDC + // setIbAllocPoint(usdc, 50); + // setDebtAllocPoint(usdc, 75); + // // BUSD + // setIbAllocPoint(busd, 50); + // setDebtAllocPoint(busd, 75); + + //---- execution ----// + _startDeployerBroadcast(); + + for (uint256 i; i < setPoolInputs.length; i++) { + rewarder.setPool(setPoolInputs[i].pid, setPoolInputs[i].allocPoint, true); + } + + _stopBroadcast(); + } + + function setIbAllocPoint(address _token, uint256 _allocaPoint) internal { + address _ibToken = moneyMarket.getIbTokenFromToken(_token); + uint256 _pid = moneyMarket.getMiniFLPoolIdOfToken(_ibToken); + setPoolAllocPoint(_pid, _allocaPoint); + } + + function setDebtAllocPoint(address _token, uint256 _allocaPoint) internal { + address _debtToken = moneyMarket.getDebtTokenFromToken(_token); + uint256 _pid = moneyMarket.getMiniFLPoolIdOfToken(_debtToken); + setPoolAllocPoint(_pid, _allocaPoint); + } + + function setPoolAllocPoint(uint256 _pid, uint256 _allocPoint) internal { + setPoolInputs.push(SetPoolInput({ pid: _pid, allocPoint: _allocPoint })); + } +} diff --git a/script/deployments/Rewarder/config/SetRewardPerSecond.s.sol b/script/deployments/Rewarder/config/SetRewardPerSecond.s.sol new file mode 100644 index 00000000..ffac9e41 --- /dev/null +++ b/script/deployments/Rewarder/config/SetRewardPerSecond.s.sol @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import "../../../BaseScript.sol"; + +import { IRewarder } from "solidity/contracts/miniFL/interfaces/IRewarder.sol"; + +contract SetRewardPerSecondScript is BaseScript { + function run() public { + /* + ░██╗░░░░░░░██╗░█████╗░██████╗░███╗░░██╗██╗███╗░░██╗░██████╗░ + ░██║░░██╗░░██║██╔══██╗██╔══██╗████╗░██║██║████╗░██║██╔════╝░ + ░╚██╗████╗██╔╝███████║██████╔╝██╔██╗██║██║██╔██╗██║██║░░██╗░ + ░░████╔═████║░██╔══██║██╔══██╗██║╚████║██║██║╚████║██║░░╚██╗ + ░░╚██╔╝░╚██╔╝░██║░░██║██║░░██║██║░╚███║██║██║░╚███║╚██████╔╝ + ░░░╚═╝░░░╚═╝░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝╚═╝╚═╝░░╚══╝░╚═════╝░ + Check all variables below before execute the deployment script + */ + + IRewarder rewarder = IRewarder(0x429CEb4aD26712Ead1b534f6c3662Cd129e465a9); + uint256 _newRewardPerSecond = 33068783068783070; + bool _withUpdate = true; + + //---- execution ----// + _startDeployerBroadcast(); + + rewarder.setRewardPerSecond(_newRewardPerSecond, _withUpdate); + + _stopBroadcast(); + } +} diff --git a/script/deployments/Rewarder/deploy/Rewarder.s.sol b/script/deployments/Rewarder/deploy/Rewarder.s.sol new file mode 100644 index 00000000..2a100bc2 --- /dev/null +++ b/script/deployments/Rewarder/deploy/Rewarder.s.sol @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.19; + +import "../../../BaseScript.sol"; + +import { Rewarder } from "solidity/contracts/miniFL/Rewarder.sol"; +import { TransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; + +contract DeployRewarderScript is BaseScript { + using stdJson for string; + + function run() public { + /* + ░██╗░░░░░░░██╗░█████╗░██████╗░███╗░░██╗██╗███╗░░██╗░██████╗░ + ░██║░░██╗░░██║██╔══██╗██╔══██╗████╗░██║██║████╗░██║██╔════╝░ + ░╚██╗████╗██╔╝███████║██████╔╝██╔██╗██║██║██╔██╗██║██║░░██╗░ + ░░████╔═████║░██╔══██║██╔══██╗██║╚████║██║██║╚████║██║░░╚██╗ + ░░╚██╔╝░╚██╔╝░██║░░██║██║░░██║██║░╚███║██║██║░╚███║╚██████╔╝ + ░░░╚═╝░░░╚═╝░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝╚═╝╚═╝░░╚══╝░╚═════╝░ + Check all variables below before execute the deployment script + */ + + string memory name = "HIGH Street"; + address miniFL = address(miniFL); + address rewardToken = 0x5f4Bde007Dc06b867f86EBFE4802e34A1fFEEd63; + uint256 maxRewardPerSecond = 1 ether; + + bytes memory data = abi.encodeWithSelector( + bytes4(keccak256("initialize(string,address,address,uint256)")), + name, + miniFL, + rewardToken, + maxRewardPerSecond + ); + + _startDeployerBroadcast(); + // deploy implementation + address rewarderImplementation = address(new Rewarder()); + // deploy proxy + address proxy = address(new TransparentUpgradeableProxy(rewarderImplementation, proxyAdminAddress, data)); + + console.log("rewarder", proxy); + _stopBroadcast(); + } +} diff --git a/solidity/contracts/interfaces/IMoneyMarketReader.sol b/solidity/contracts/interfaces/IMoneyMarketReader.sol index 0e719a95..34909484 100644 --- a/solidity/contracts/interfaces/IMoneyMarketReader.sol +++ b/solidity/contracts/interfaces/IMoneyMarketReader.sol @@ -49,9 +49,11 @@ interface IMoneyMarketReader { uint256 pendingReward; } - // function getRewardSummary(address _underlyingToken, address _account) external view returns (RewardSummary memory); - - function getRewardSummary(uint256 _pId, address _account) external view returns (RewardSummary[] memory); + function getRewardSummary( + uint256 _pId, + address _account, + address[] calldata _rewarders + ) external view returns (RewardSummary[] memory); function getSubAccountSummary(address _account, uint256 _subAccountId) external @@ -101,10 +103,6 @@ interface IMoneyMarketReader { function getMarketStats(address _underlyingToken) external view returns (MarketStats memory); struct MarketRewardInfo { - uint256 debtTokenAllocPoint; - uint256 ibTokenAllocPoint; - uint256 rewardPerSec; - uint256 totalAllocPoint; uint256 totalDebtTokenInPool; uint256 totalUnderlyingTokenInPool; RewarderInfo[] ibRewarderInfos; @@ -119,7 +117,10 @@ interface IMoneyMarketReader { uint256 allocPoint; } - function getMarketRewardInfo(address _underlyingToken) external view returns (MarketRewardInfo memory); + function getMarketRewardInfo(address _underlyingToken, address[] calldata _rewarders) + external + view + returns (MarketRewardInfo memory); struct MarketPriceInfo { uint256 underlyingTokenPrice; diff --git a/solidity/contracts/miniFL/Rewarder.sol b/solidity/contracts/miniFL/Rewarder.sol index 2e85472b..8e0e871f 100644 --- a/solidity/contracts/miniFL/Rewarder.sol +++ b/solidity/contracts/miniFL/Rewarder.sol @@ -197,12 +197,12 @@ contract Rewarder is IRewarder, OwnableUpgradeable, ReentrancyGuardUpgradeable { } /// @notice Add a new pool. Can only be called by the owner. - /// @param _allocPoint The new allocation point /// @param _pid The Pool ID on MiniFL + /// @param _allocPoint The new allocation point /// @param _withUpdate If true, do mass update pools function addPool( - uint256 _allocPoint, uint256 _pid, + uint256 _allocPoint, bool _withUpdate ) external onlyOwner { if (poolInfo[_pid].lastRewardTime != 0) revert Rewarder1_PoolExisted(); diff --git a/solidity/contracts/miniFL/interfaces/IMiniFL.sol b/solidity/contracts/miniFL/interfaces/IMiniFL.sol index 85504832..fc59d8f1 100644 --- a/solidity/contracts/miniFL/interfaces/IMiniFL.sol +++ b/solidity/contracts/miniFL/interfaces/IMiniFL.sol @@ -43,4 +43,6 @@ interface IMiniFL { function harvestMany(uint256[] calldata _pids) external; function massUpdatePools() external; + + function setPoolRewarders(uint256 _pid, address[] calldata _newRewarders) external; } diff --git a/solidity/contracts/miniFL/interfaces/IRewarder.sol b/solidity/contracts/miniFL/interfaces/IRewarder.sol index 71119e27..0f45c527 100644 --- a/solidity/contracts/miniFL/interfaces/IRewarder.sol +++ b/solidity/contracts/miniFL/interfaces/IRewarder.sol @@ -29,12 +29,20 @@ interface IRewarder { function lastRewardTime(uint256 _pid) external view returns (uint256); + function addPool( + uint256 _pid, + uint256 _allocPoint, + bool _withUpdate + ) external; + function setPool( uint256 _pid, uint256 _newAllocPoint, bool _withUpdate ) external; + function setRewardPerSecond(uint256 _newRewardPerSecond, bool _withUpdate) external; + function rewardToken() external view returns (address); function rewardPerSecond() external view returns (uint256); diff --git a/solidity/contracts/money-market/interfaces/IMiniFL.sol b/solidity/contracts/money-market/interfaces/IMiniFL.sol index 1ec359b9..38c0a056 100644 --- a/solidity/contracts/money-market/interfaces/IMiniFL.sol +++ b/solidity/contracts/money-market/interfaces/IMiniFL.sol @@ -44,7 +44,5 @@ interface IMiniFL { function harvestMany(uint256[] calldata _pids) external; - function rewarders(uint256 _pid) external view returns (address[] memory _rewarders); - function ALPACA() external view returns (address); } diff --git a/solidity/contracts/reader/MoneyMarketReader.sol b/solidity/contracts/reader/MoneyMarketReader.sol index fa7c47e3..9a4f05c5 100644 --- a/solidity/contracts/reader/MoneyMarketReader.sol +++ b/solidity/contracts/reader/MoneyMarketReader.sol @@ -28,48 +28,32 @@ contract MoneyMarketReader is IMoneyMarketReader { _moneyMarketAccountManager = moneyMarketAccountManager_; } - // /// @dev Get the reward summary - // /// @param _underlyingToken The underlying token address - // /// @param _account The account address - // function getRewardSummary(address _underlyingToken, address _account) external view returns (RewardSummary memory) { - // address _ibAddress = _moneyMarket.getIbTokenFromToken(_underlyingToken); - // address _debtAddress = _moneyMarket.getDebtTokenFromToken(_underlyingToken); - - // uint256 _ibPoolId = _moneyMarket.getMiniFLPoolIdOfToken(_ibAddress); - // uint256 _debtPoolId = _moneyMarket.getMiniFLPoolIdOfToken(_debtAddress); - - // return - // RewardSummary({ - // ibPoolId: _ibPoolId, - // debtPoolId: _debtPoolId, - // lendingPendingReward: _miniFL.pendingAlpaca(_ibPoolId, _account), - // borrowingPendingReward: _miniFL.pendingAlpaca(_debtPoolId, _account) - // }); - // } - - function getRewardSummary(uint256 _pId, address account) - external - view - returns (RewardSummary[] memory _rewardSummary) - { - address[] memory _rewarders = _miniFL.rewarders(_pId); + /// @dev Get the reward summary + /// @param _pId Pool if of miniFL + /// @param _account The account address + /// @param _rewarders List of rewarder addresses associate with miniFL pId + function getRewardSummary( + uint256 _pId, + address _account, + address[] calldata _rewarders + ) external view returns (RewardSummary[] memory _rewardSummary) { // include miniFL reward - uint256 _rewarderLength = _rewarders.length + 1; - _rewardSummary = new RewardSummary[](_rewarderLength); + uint256 _rewardLength = _rewarders.length + 1; + _rewardSummary = new RewardSummary[](_rewardLength); _rewardSummary[0] = RewardSummary({ rewardToken: _miniFL.ALPACA(), pId: _pId, - pendingReward: _miniFL.pendingAlpaca(_pId, account) + pendingReward: _miniFL.pendingAlpaca(_pId, _account) }); - for (uint256 i = 1; i < _rewarderLength; ) { + for (uint256 i; i < _rewarders.length; ) { IRewarder _rewarder = IRewarder(_rewarders[i]); - _rewardSummary[i] = RewardSummary({ + _rewardSummary[i + 1] = RewardSummary({ rewardToken: _rewarder.rewardToken(), pId: _pId, - pendingReward: _rewarder.pendingToken(_pId, account) + pendingReward: _rewarder.pendingToken(_pId, _account) }); unchecked { ++i; @@ -356,7 +340,11 @@ contract MoneyMarketReader is IMoneyMarketReader { return marketStats; } - function getMarketRewardInfo(address _underlyingToken) external view returns (MarketRewardInfo memory) { + function getMarketRewardInfo(address _underlyingToken, address[] calldata _rewarders) + external + view + returns (MarketRewardInfo memory) + { address _ibAddress = _moneyMarket.getIbTokenFromToken(_underlyingToken); address _debtAddress = _moneyMarket.getDebtTokenFromToken(_underlyingToken); @@ -371,25 +359,33 @@ contract MoneyMarketReader is IMoneyMarketReader { return MarketRewardInfo({ - debtTokenAllocPoint: _miniFL.getPoolAllocPoint(_debtPoolId), - ibTokenAllocPoint: _miniFL.getPoolAllocPoint(_ibPoolId), - totalAllocPoint: _miniFL.totalAllocPoint(), - rewardPerSec: _miniFL.alpacaPerSecond(), totalUnderlyingTokenInPool: IInterestBearingToken(_ibAddress).convertToAssets(_ibReserveAmount), totalDebtTokenInPool: _totalDebtToken, - ibRewarderInfos: _getRewardersInfo(_ibPoolId), - debtRewarderInfos: _getRewardersInfo(_debtPoolId) + ibRewarderInfos: _getRewardersInfo(_ibPoolId, _rewarders), + debtRewarderInfos: _getRewardersInfo(_debtPoolId, _rewarders) }); } - function _getRewardersInfo(uint256 _pId) internal view returns (RewarderInfo[] memory _rewarderInfos) { - address[] memory _rewarders = _miniFL.rewarders(_pId); - uint256 rewarderLength = _rewarders.length; + function _getRewardersInfo(uint256 _pId, address[] calldata _rewarders) + internal + view + returns (RewarderInfo[] memory _rewarderInfos) + { + uint256 rewarderLength = _rewarders.length + 1; _rewarderInfos = new RewarderInfo[](rewarderLength); - for (uint256 i; i < rewarderLength; ) { + + _rewarderInfos[0] = RewarderInfo({ + rewardToken: _miniFL.ALPACA(), + pId: _pId, + rewardPerSec: _miniFL.alpacaPerSecond(), + allocPoint: _miniFL.getPoolAllocPoint(_pId), + totalAllocPoint: _miniFL.totalAllocPoint() + }); + + for (uint256 i; i < _rewarders.length; ) { IRewarder _rewarder = IRewarder(_rewarders[i]); - _rewarderInfos[i] = RewarderInfo({ + _rewarderInfos[i + 1] = RewarderInfo({ rewardToken: _rewarder.rewardToken(), pId: _pId, rewardPerSec: _rewarder.rewardPerSecond(), diff --git a/type-script/scripts/write-rewarder.ts b/type-script/scripts/write-rewarder.ts new file mode 100644 index 00000000..58babc94 --- /dev/null +++ b/type-script/scripts/write-rewarder.ts @@ -0,0 +1,33 @@ +import { Command } from "commander"; +import { ConfigFileHelper } from "../file-helper.ts/config-file.helper"; +import { MiniFLPool } from "../interfaces"; + +async function main(id: string, name: string, stakingToken: string) { + const configFileHelper = new ConfigFileHelper(); + + const newMiniFLPool: MiniFLPool = { + id: Number(id), + name, + stakingToken, + rewarders: [], + }; + + configFileHelper.addMiniFLPool(newMiniFLPool); + console.log("✅ Done"); +} + +const program = new Command(); +program.requiredOption("-i, --id "); +program.requiredOption("-n, --name "); +program.requiredOption("-token, --stakingToken "); + +program.parse(process.argv); + +const options = program.opts(); + +main(options.id, options.name, options.stakingToken) + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); From e1f28d8c8b4c746b7252cc3a1576db157bc8d939 Mon Sep 17 00:00:00 2001 From: jr-alpaca Date: Thu, 11 May 2023 21:23:18 +0700 Subject: [PATCH 72/87] chore: typo --- solidity/contracts/reader/MoneyMarketReader.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solidity/contracts/reader/MoneyMarketReader.sol b/solidity/contracts/reader/MoneyMarketReader.sol index 9a4f05c5..2c74511b 100644 --- a/solidity/contracts/reader/MoneyMarketReader.sol +++ b/solidity/contracts/reader/MoneyMarketReader.sol @@ -29,7 +29,7 @@ contract MoneyMarketReader is IMoneyMarketReader { } /// @dev Get the reward summary - /// @param _pId Pool if of miniFL + /// @param _pId Pool id of miniFL /// @param _account The account address /// @param _rewarders List of rewarder addresses associate with miniFL pId function getRewardSummary( From d741d5eaac1e20cbf4026382d1e771e0f32858ff Mon Sep 17 00:00:00 2001 From: jr-alpaca Date: Thu, 11 May 2023 22:32:44 +0700 Subject: [PATCH 73/87] chore: remove unused --- forge_cache/solidity-files-cache.json | 22679 ------------------------ 1 file changed, 22679 deletions(-) delete mode 100644 forge_cache/solidity-files-cache.json diff --git a/forge_cache/solidity-files-cache.json b/forge_cache/solidity-files-cache.json deleted file mode 100644 index 78e9e12f..00000000 --- a/forge_cache/solidity-files-cache.json +++ /dev/null @@ -1,22679 +0,0 @@ -{ - "_format": "ethers-rs-sol-cache-3", - "paths": { - "artifacts": "out", - "build_infos": "out/build-info", - "sources": "solidity/contracts", - "tests": "solidity/tests", - "scripts": "script", - "libraries": [ - "node_modules" - ] - }, - "files": { - "node_modules/@openzeppelin/contracts/access/Ownable.sol": { - "lastModificationDate": 1665339326105, - "contentHash": "e436cea06129be2c73cda4b1acc848b5", - "sourceName": "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/utils/Context.sol" - ], - "versionRequirement": "^0.8.0", - "artifacts": { - "Ownable": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "Ownable.sol/Ownable.json" - } - } - }, - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol": { - "lastModificationDate": 1665339326105, - "contentHash": "d151fbfe7939989b9acf22797b32058b", - "sourceName": "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol" - ], - "versionRequirement": "^0.8.0", - "artifacts": { - "IERC20": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IERC20.sol/IERC20.json" - } - } - }, - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol": { - "lastModificationDate": 1665339326105, - "contentHash": "cb420c41d73987fa812167081de427a5", - "sourceName": "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol" - ], - "versionRequirement": "^0.8.0", - "artifacts": { - "IERC4626": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IERC4626.sol/IERC4626.json" - } - } - }, - "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol": { - "lastModificationDate": 1665339326105, - "contentHash": "2858d98e74e67987ec81b39605230b74", - "sourceName": "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "^0.8.0", - "artifacts": { - "IERC1822Proxiable": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "draft-IERC1822.sol/IERC1822Proxiable.json" - } - } - }, - "node_modules/@openzeppelin/contracts/proxy/Clones.sol": { - "lastModificationDate": 1665339326105, - "contentHash": "8d03477cb67af28579646fdb2508ddb0", - "sourceName": "node_modules/@openzeppelin/contracts/proxy/Clones.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "^0.8.0", - "artifacts": { - "Clones": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "Clones.sol/Clones.json" - } - } - }, - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol": { - "lastModificationDate": 1665339326105, - "contentHash": "3fc3c7c0a2956f36e766691bb9473b06", - "sourceName": "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", - "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", - "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol" - ], - "versionRequirement": "^0.8.0", - "artifacts": { - "ERC1967Proxy": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "ERC1967Proxy.sol/ERC1967Proxy.json" - } - } - }, - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol": { - "lastModificationDate": 1665339326105, - "contentHash": "6baa887a798e95b14f34e093f117e9b2", - "sourceName": "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", - "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol" - ], - "versionRequirement": "^0.8.2", - "artifacts": { - "ERC1967Upgrade": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "ERC1967Upgrade.sol/ERC1967Upgrade.json" - } - } - }, - "node_modules/@openzeppelin/contracts/proxy/Proxy.sol": { - "lastModificationDate": 1665339326105, - "contentHash": "40b3d81a836d50ff47e03893dcaaf204", - "sourceName": "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "^0.8.0", - "artifacts": { - "Proxy": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "Proxy.sol/Proxy.json" - } - } - }, - "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol": { - "lastModificationDate": 1665339326105, - "contentHash": "b6bd23bf19e90b771337037706470933", - "sourceName": "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "^0.8.0", - "artifacts": { - "IBeacon": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IBeacon.sol/IBeacon.json" - } - } - }, - "node_modules/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol": { - "lastModificationDate": 1665339326105, - "contentHash": "a947492251ac15d6bfd899c9fdb4d82b", - "sourceName": "node_modules/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", - "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", - "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", - "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol" - ], - "versionRequirement": "^0.8.0", - "artifacts": { - "ProxyAdmin": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "ProxyAdmin.sol/ProxyAdmin.json" - } - } - }, - "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol": { - "lastModificationDate": 1665339326105, - "contentHash": "ea48b4a63fd733eec048191be006daa8", - "sourceName": "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", - "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", - "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol" - ], - "versionRequirement": "^0.8.0", - "artifacts": { - "TransparentUpgradeableProxy": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json" - } - } - }, - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol": { - "lastModificationDate": 1665339326105, - "contentHash": "bcba485bbfd0aab6b8875b58224f6330", - "sourceName": "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/utils/Address.sol" - ], - "versionRequirement": "^0.8.2", - "artifacts": { - "Initializable": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "proxy/utils/Initializable.sol/Initializable.json" - } - } - }, - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol": { - "lastModificationDate": 1665339326105, - "contentHash": "af7bd64e1cfefbf6cb07f2adc1a25392", - "sourceName": "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol" - ], - "versionRequirement": "^0.8.0", - "artifacts": { - "ERC20": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "ERC20.sol/ERC20.json" - } - } - }, - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": { - "lastModificationDate": 1665339326105, - "contentHash": "ad7c2d0af148c8f9f097d65deeb4da6b", - "sourceName": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "^0.8.0", - "artifacts": { - "IERC20": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "ERC20/IERC20.sol/IERC20.json" - } - } - }, - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { - "lastModificationDate": 1665339326105, - "contentHash": "909ab67fc5c25033fe6cd364f8c056f9", - "sourceName": "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol" - ], - "versionRequirement": "^0.8.0", - "artifacts": { - "IERC20Metadata": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IERC20Metadata.sol/IERC20Metadata.json" - } - } - }, - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol": { - "lastModificationDate": 1665339326105, - "contentHash": "fb77f144244b9ab12533aa6ce85ef8c5", - "sourceName": "node_modules/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "^0.8.0", - "artifacts": { - "IERC20Permit": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "draft-IERC20Permit.sol/IERC20Permit.json" - } - } - }, - "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { - "lastModificationDate": 1665339326105, - "contentHash": "3a843b05b85a270e9455e3d2e804e633", - "sourceName": "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol" - ], - "versionRequirement": "^0.8.0", - "artifacts": { - "SafeERC20": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SafeERC20.sol/SafeERC20.json" - } - } - }, - "node_modules/@openzeppelin/contracts/utils/Address.sol": { - "lastModificationDate": 1665339326105, - "contentHash": "c476b3895a94798b88a4bb97399e6dfe", - "sourceName": "node_modules/@openzeppelin/contracts/utils/Address.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "^0.8.1", - "artifacts": { - "Address": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "Address.sol/Address.json" - } - } - }, - "node_modules/@openzeppelin/contracts/utils/Context.sol": { - "lastModificationDate": 1665339326105, - "contentHash": "5f2c5c4b6af2dd4551027144797bc8be", - "sourceName": "node_modules/@openzeppelin/contracts/utils/Context.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "^0.8.0", - "artifacts": { - "Context": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "Context.sol/Context.json" - } - } - }, - "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol": { - "lastModificationDate": 1665339326105, - "contentHash": "f993f8f50186952a59ee5e3a30b68222", - "sourceName": "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "^0.8.0", - "artifacts": { - "StorageSlot": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "StorageSlot.sol/StorageSlot.json" - } - } - }, - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol": { - "lastModificationDate": 1665339326105, - "contentHash": "64e3f111253497ba40c2ad9bdf48a191", - "sourceName": "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "^0.8.0", - "artifacts": { - "SafeCast": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SafeCast.sol/SafeCast.json" - } - } - }, - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol": { - "lastModificationDate": 1665339326113, - "contentHash": "403ce8273abde646bff81558ddf512ad", - "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol" - ], - "versionRequirement": "^0.8.0", - "artifacts": { - "OwnableUpgradeable": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "OwnableUpgradeable.sol/OwnableUpgradeable.json" - } - } - }, - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { - "lastModificationDate": 1665339326113, - "contentHash": "b98e2f3a856e6e7f2106fb919bacab9e", - "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol" - ], - "versionRequirement": "^0.8.2", - "artifacts": { - "Initializable": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "utils/Initializable.sol/Initializable.json" - } - } - }, - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol": { - "lastModificationDate": 1665339326113, - "contentHash": "c9cde6037fc8b1fe0ef04b79149ba733", - "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol" - ], - "versionRequirement": "^0.8.0", - "artifacts": { - "ReentrancyGuardUpgradeable": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.json" - } - } - }, - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol": { - "lastModificationDate": 1665339326113, - "contentHash": "a9ed3c7bc7d9ebb5e34f20829274f088", - "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "^0.8.0", - "artifacts": { - "IERC20Upgradeable": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IERC20Upgradeable.sol/IERC20Upgradeable.json" - } - } - }, - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol": { - "lastModificationDate": 1665339326113, - "contentHash": "afab576c4d1f55fbf293a0daf3826e31", - "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "^0.8.0", - "artifacts": { - "IERC20PermitUpgradeable": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "draft-IERC20PermitUpgradeable.sol/IERC20PermitUpgradeable.json" - } - } - }, - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol": { - "lastModificationDate": 1665339326113, - "contentHash": "c7dc9c967eb71371d53462f02b280441", - "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol" - ], - "versionRequirement": "^0.8.0", - "artifacts": { - "SafeERC20Upgradeable": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SafeERC20Upgradeable.sol/SafeERC20Upgradeable.json" - } - } - }, - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol": { - "lastModificationDate": 1665339326113, - "contentHash": "d42e87f4fba2b03ab4d3c14cb53d0c51", - "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "^0.8.1", - "artifacts": { - "AddressUpgradeable": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "AddressUpgradeable.sol/AddressUpgradeable.json" - } - } - }, - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { - "lastModificationDate": 1665339326113, - "contentHash": "6200b84950eb05b4a92a39fd1d6e0f9b", - "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol" - ], - "versionRequirement": "^0.8.0", - "artifacts": { - "ContextUpgradeable": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "ContextUpgradeable.sol/ContextUpgradeable.json" - } - } - }, - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol": { - "lastModificationDate": 1665339326113, - "contentHash": "00d9c0b8534f648176c53b50a914c19a", - "sourceName": "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "^0.8.0", - "artifacts": { - "SafeCastUpgradeable": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SafeCastUpgradeable.sol/SafeCastUpgradeable.json" - } - } - }, - "script/BaseScript.sol": { - "lastModificationDate": 1683614771298, - "contentHash": "ad27ebf26eef03b36bfb1e3246b9c1c6", - "sourceName": "script/BaseScript.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "BaseScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "BaseScript.sol/BaseScript.json" - }, - "IMoneyMarket": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "BaseScript.sol/IMoneyMarket.json" - } - } - }, - "script/deployments/01_DeployProxyAdmin.s.sol": { - "lastModificationDate": 1679481016242, - "contentHash": "490d45b05c37788d491fb2985691506c", - "sourceName": "script/deployments/01_DeployProxyAdmin.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", - "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", - "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", - "node_modules/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol", - "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployProxyAdminScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "01_DeployProxyAdmin.s.sol/DeployProxyAdminScript.json" - } - } - }, - "script/deployments/02_DeployMiniFL.s.sol": { - "lastModificationDate": 1683011974597, - "contentHash": "5235a936d2c15b542459a6ba4f2d2342", - "sourceName": "script/deployments/02_DeployMiniFL.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", - "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", - "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", - "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployMiniFLScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "02_DeployMiniFL.s.sol/DeployMiniFLScript.json" - } - } - }, - "script/deployments/03_DeployMoneyMarket.s.sol": { - "lastModificationDate": 1683011974599, - "contentHash": "62c90c96a1e00c58d6b7899645585222", - "sourceName": "script/deployments/03_DeployMoneyMarket.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/PancakeswapV2IbTokenLiquidationStrategy.sol", - "solidity/contracts/money-market/PancakeswapV2LiquidationStrategy.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/fee-models/FixedFeeModel100Bps.sol", - "solidity/contracts/money-market/interest-models/TripleSlopeModel7.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployMoneyMarketScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "03_DeployMoneyMarket.s.sol/DeployMoneyMarketScript.json" - } - } - }, - "script/deployments/04_DeployMoneyMarketAccountManager.s.sol": { - "lastModificationDate": 1683011974600, - "contentHash": "6e64b7fe5bea3ef6d03acc508214fb27", - "sourceName": "script/deployments/04_DeployMoneyMarketAccountManager.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", - "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", - "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", - "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployMoneyMarketAccountManagerScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "04_DeployMoneyMarketAccountManager.s.sol/DeployMoneyMarketAccountManagerScript.json" - } - } - }, - "script/deployments/05_DeployMoneyMarketReader.s.sol": { - "lastModificationDate": 1683011974601, - "contentHash": "a8a48aa3d3aecab111b9ee111e569eb3", - "sourceName": "script/deployments/05_DeployMoneyMarketReader.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketReader.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/reader/MoneyMarketReader.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployMoneyMarketReaderScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "05_DeployMoneyMarketReader.s.sol/DeployMoneyMarketReaderScript.json" - } - } - }, - "script/deployments/06_DeployOracle.s.sol": { - "lastModificationDate": 1683011974602, - "contentHash": "b368d52a305f3f204e924a83053a8d07", - "sourceName": "script/deployments/06_DeployOracle.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployOracleScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "06_DeployOracle.s.sol/DeployOracleScript.json" - } - } - }, - "script/deployments/AlpacaV2Oracle/config/SetOracle.s.sol": { - "lastModificationDate": 1683011974603, - "contentHash": "6a18362d63fc7b292c8a1bcc90cbbb3a", - "sourceName": "script/deployments/AlpacaV2Oracle/config/SetOracle.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetOracleScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "config/SetOracle.s.sol/SetOracleScript.json" - } - } - }, - "script/deployments/AlpacaV2Oracle/config/SetPools.s.sol": { - "lastModificationDate": 1683105360821, - "contentHash": "213581597513614dd593480c8728e9bb", - "sourceName": "script/deployments/AlpacaV2Oracle/config/SetPools.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "IPancakeSwapV3Factory": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetPools.s.sol/IPancakeSwapV3Factory.json" - }, - "SetPoolsScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetPools.s.sol/SetPoolsScript.json" - } - } - }, - "script/deployments/AlpacaV2Oracle/config/SetTokenConfig.s.sol": { - "lastModificationDate": 1683614771299, - "contentHash": "91f6158510987bbc059b2dc876bbb1e6", - "sourceName": "script/deployments/AlpacaV2Oracle/config/SetTokenConfig.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetTokenConfigScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetTokenConfig.s.sol/SetTokenConfigScript.json" - } - } - }, - "script/deployments/AlpacaV2Oracle/deploy/AlpacaV2Oracle.s.sol": { - "lastModificationDate": 1683105360822, - "contentHash": "81aeb7d587515da319955abc080284e8", - "sourceName": "script/deployments/AlpacaV2Oracle/deploy/AlpacaV2Oracle.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployAlpacaV2OracleScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "AlpacaV2Oracle.s.sol/DeployAlpacaV2OracleScript.json" - } - } - }, - "script/deployments/ChainLinkOracle/config/SetPriceFeeds.s.sol": { - "lastModificationDate": 1683614771299, - "contentHash": "97fd63c9460adf8761ea8f6fdfbe3ac1", - "sourceName": "script/deployments/ChainLinkOracle/config/SetPriceFeeds.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAggregatorV3.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IChainLinkPriceOracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetPriceFeedsScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetPriceFeeds.s.sol/SetPriceFeedsScript.json" - } - } - }, - "script/deployments/DebtToken/deploy/DebtTokenImplementation.s.sol": { - "lastModificationDate": 1683011974613, - "contentHash": "67160433652e4e4b7ec99e05f1cbaee8", - "sourceName": "script/deployments/DebtToken/deploy/DebtTokenImplementation.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployDebtTokenImplementationScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "DebtTokenImplementation.s.sol/DeployDebtTokenImplementationScript.json" - } - } - }, - "script/deployments/InterestBearingToken/deploy/InterestBearingTokenImplementation.s.sol": { - "lastModificationDate": 1683011974614, - "contentHash": "36b408c32bc4152d97006824c1dc6f63", - "sourceName": "script/deployments/InterestBearingToken/deploy/InterestBearingTokenImplementation.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployInterestBearingTokenImplementationScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "InterestBearingTokenImplementation.s.sol/DeployInterestBearingTokenImplementationScript.json" - } - } - }, - "script/deployments/InterestModels/deploy/MMDoubleSlopeModel1.s.sol": { - "lastModificationDate": 1683011974616, - "contentHash": "09551b1147cbc933a0e4f3ce16a4a454", - "sourceName": "script/deployments/InterestModels/deploy/MMDoubleSlopeModel1.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel1.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployMMDoubleSlopeModel1Script": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMDoubleSlopeModel1.s.sol/DeployMMDoubleSlopeModel1Script.json" - } - } - }, - "script/deployments/InterestModels/deploy/MMDoubleSlopeModel2.s.sol": { - "lastModificationDate": 1683011974616, - "contentHash": "f6dd13876a5300f6f827ec6ba9ff3815", - "sourceName": "script/deployments/InterestModels/deploy/MMDoubleSlopeModel2.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel2.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployMMDoubleSlopeModel2Script": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMDoubleSlopeModel2.s.sol/DeployMMDoubleSlopeModel2Script.json" - } - } - }, - "script/deployments/InterestModels/deploy/MMDoubleSlopeModel3.s.sol": { - "lastModificationDate": 1683011974617, - "contentHash": "cee5982287fe8c498198a5b03e3af5e5", - "sourceName": "script/deployments/InterestModels/deploy/MMDoubleSlopeModel3.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel3.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployMMDoubleSlopeModel3Script": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMDoubleSlopeModel3.s.sol/DeployMMDoubleSlopeModel3Script.json" - } - } - }, - "script/deployments/InterestModels/deploy/TripleSlopeModel0.s.sol": { - "lastModificationDate": 1683011974617, - "contentHash": "04e67e5932ef88ffc8739462ee2f774f", - "sourceName": "script/deployments/InterestModels/deploy/TripleSlopeModel0.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interest-models/TripleSlopeModel0.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployTripleSlopeModel0Script": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "TripleSlopeModel0.s.sol/DeployTripleSlopeModel0Script.json" - } - } - }, - "script/deployments/MiniFL/config/SetAlpacaPerSecond.s.sol": { - "lastModificationDate": 1683105360824, - "contentHash": "07227192901aa094cfb6227b84d33613", - "sourceName": "script/deployments/MiniFL/config/SetAlpacaPerSecond.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetAlpacaPerSecondScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetAlpacaPerSecond.s.sol/SetAlpacaPerSecondScript.json" - } - } - }, - "script/deployments/MiniFL/config/SetPool.s.sol": { - "lastModificationDate": 1683105360824, - "contentHash": "ed080f0d7e4e425ac00f780501f28ec8", - "sourceName": "script/deployments/MiniFL/config/SetPool.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetPoolScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetPool.s.sol/SetPoolScript.json" - } - } - }, - "script/deployments/MiniFL/config/SetWhitelistedCallers.s.sol": { - "lastModificationDate": 1683105360825, - "contentHash": "f2d7ca3ef09b67b5c8f8dad7aed93783", - "sourceName": "script/deployments/MiniFL/config/SetWhitelistedCallers.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetWhitelistedCallersScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetWhitelistedCallers.s.sol/SetWhitelistedCallersScript.json" - } - } - }, - "script/deployments/MiniFL/deploy/MiniFL.s.sol": { - "lastModificationDate": 1683011974621, - "contentHash": "1377ffffb73b83758c3b0cde26796e1e", - "sourceName": "script/deployments/MiniFL/deploy/MiniFL.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", - "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", - "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", - "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployMiniFLScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL.s.sol/DeployMiniFLScript.json" - } - } - }, - "script/deployments/MiniFL/script/MassUpdatePools.s.sol": { - "lastModificationDate": 1683105360825, - "contentHash": "d2f5e966c77b8b2638e3745743df24cc", - "sourceName": "script/deployments/MiniFL/script/MassUpdatePools.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MassUpdatePools": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MassUpdatePools.s.sol/MassUpdatePools.json" - } - } - }, - "script/deployments/MiniFL/upgrade/MiniFL.s.sol": { - "lastModificationDate": 1683011974622, - "contentHash": "f6efde11791f2118fdeaffd5faf6aff4", - "sourceName": "script/deployments/MiniFL/upgrade/MiniFL.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", - "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", - "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", - "node_modules/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol", - "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "UpgradeMiniFLScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL.s.sol/UpgradeMiniFLScript.json" - } - } - }, - "script/deployments/MoneyMarket/config/OpenMarket.s.sol": { - "lastModificationDate": 1683614771300, - "contentHash": "0fa3f78c46b8d303e9a8d7df88c3a733", - "sourceName": "script/deployments/MoneyMarket/config/OpenMarket.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "OpenMarketScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "OpenMarket.s.sol/OpenMarketScript.json" - } - } - }, - "script/deployments/MoneyMarket/config/SetAccountManagersOk.s.sol": { - "lastModificationDate": 1683011974623, - "contentHash": "4823839e2f13822a889e1de4ddebdf20", - "sourceName": "script/deployments/MoneyMarket/config/SetAccountManagersOk.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetAccountManagersOkScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetAccountManagersOk.s.sol/SetAccountManagersOkScript.json" - } - } - }, - "script/deployments/MoneyMarket/config/SetDebtTokenImplementation.s.sol": { - "lastModificationDate": 1683011974624, - "contentHash": "d1c1a6b2a8e02247335f4ab602721e5d", - "sourceName": "script/deployments/MoneyMarket/config/SetDebtTokenImplementation.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetDebtTokenImplementationScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetDebtTokenImplementation.s.sol/SetDebtTokenImplementationScript.json" - } - } - }, - "script/deployments/MoneyMarket/config/SetFees.s.sol": { - "lastModificationDate": 1683011974625, - "contentHash": "f0433565cccf19f1cd9cc51430df5e18", - "sourceName": "script/deployments/MoneyMarket/config/SetFees.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetFeesScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetFees.s.sol/SetFeesScript.json" - } - } - }, - "script/deployments/MoneyMarket/config/SetIbTokenImplementation.s.sol": { - "lastModificationDate": 1683011974627, - "contentHash": "f4bbe336d1ebbf9bc11651b8a5cefcc5", - "sourceName": "script/deployments/MoneyMarket/config/SetIbTokenImplementation.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetIbTokenImplementationScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetIbTokenImplementation.s.sol/SetIbTokenImplementationScript.json" - } - } - }, - "script/deployments/MoneyMarket/config/SetInterestModel.s.sol": { - "lastModificationDate": 1683011974628, - "contentHash": "edf287654653a22aecb73bcc8a42fd25", - "sourceName": "script/deployments/MoneyMarket/config/SetInterestModel.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetInterestModelScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetInterestModel.s.sol/SetInterestModelScript.json" - } - } - }, - "script/deployments/MoneyMarket/config/SetLiquidationParams.s.sol": { - "lastModificationDate": 1683011974629, - "contentHash": "ab4343a3e3e6f6e14bfcce5811b29c36", - "sourceName": "script/deployments/MoneyMarket/config/SetLiquidationParams.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetLiquidationParamsScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetLiquidationParams.s.sol/SetLiquidationParamsScript.json" - } - } - }, - "script/deployments/MoneyMarket/config/SetLiquidationStratsOk.s.sol": { - "lastModificationDate": 1683011974630, - "contentHash": "34ec9789b9e50febddff469a13f9b531", - "sourceName": "script/deployments/MoneyMarket/config/SetLiquidationStratsOk.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetLiquidationStratsOkScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetLiquidationStratsOk.s.sol/SetLiquidationStratsOkScript.json" - } - } - }, - "script/deployments/MoneyMarket/config/SetLiquidationTreasury.s.sol": { - "lastModificationDate": 1683105360826, - "contentHash": "5fd394f1f302ba6c12d88f7cefd127a3", - "sourceName": "script/deployments/MoneyMarket/config/SetLiquidationTreasury.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetLiquidationTreasuryScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetLiquidationTreasury.s.sol/SetLiquidationTreasuryScript.json" - } - } - }, - "script/deployments/MoneyMarket/config/SetLiquidatorsOk.s.sol": { - "lastModificationDate": 1683105360827, - "contentHash": "ae9c87cc2606391595a94130f5b56790", - "sourceName": "script/deployments/MoneyMarket/config/SetLiquidatorsOk.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetLiquidatorsOkScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetLiquidatorsOk.s.sol/SetLiquidatorsOkScript.json" - } - } - }, - "script/deployments/MoneyMarket/config/SetMaxNumOfToken.s.sol": { - "lastModificationDate": 1683011974633, - "contentHash": "4521136aa350313cfdf09faa4af94a9f", - "sourceName": "script/deployments/MoneyMarket/config/SetMaxNumOfToken.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetMaxNumOfTokenScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetMaxNumOfToken.s.sol/SetMaxNumOfTokenScript.json" - } - } - }, - "script/deployments/MoneyMarket/config/SetMinDebtSize.s.sol": { - "lastModificationDate": 1683011974634, - "contentHash": "b2eca27e4e16cfe4f1e5dbba1f46e49f", - "sourceName": "script/deployments/MoneyMarket/config/SetMinDebtSize.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetMinDebtSizeScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetMinDebtSize.s.sol/SetMinDebtSizeScript.json" - } - } - }, - "script/deployments/MoneyMarket/config/SetOracle.s.sol": { - "lastModificationDate": 1683011974635, - "contentHash": "50bc11e7b126582621e48b2f18620989", - "sourceName": "script/deployments/MoneyMarket/config/SetOracle.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetOracleScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket/config/SetOracle.s.sol/SetOracleScript.json" - } - } - }, - "script/deployments/MoneyMarket/config/SetRepurchaseRewardModel.s.sol": { - "lastModificationDate": 1683011974636, - "contentHash": "50b977050ab593e900c550b88986190d", - "sourceName": "script/deployments/MoneyMarket/config/SetRepurchaseRewardModel.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetRepurchaseRewardModelScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetRepurchaseRewardModel.s.sol/SetRepurchaseRewardModelScript.json" - } - } - }, - "script/deployments/MoneyMarket/config/SetRiskManagersOkScript.s.sol": { - "lastModificationDate": 1683011974637, - "contentHash": "e4ce26f454931355d75e6b05774f0f84", - "sourceName": "script/deployments/MoneyMarket/config/SetRiskManagersOkScript.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetRiskManagersOkScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetRiskManagersOkScript.s.sol/SetRiskManagersOkScript.json" - } - } - }, - "script/deployments/MoneyMarket/config/WithdrawProtocolReserves.s.sol": { - "lastModificationDate": 1683105360827, - "contentHash": "6ea6731ce8d9a9abf3e885851469fdd9", - "sourceName": "script/deployments/MoneyMarket/config/WithdrawProtocolReserves.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "WithdrawProtocolReservesScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "WithdrawProtocolReserves.s.sol/WithdrawProtocolReservesScript.json" - } - } - }, - "script/deployments/MoneyMarket/deploy/AdminFacet.s.sol": { - "lastModificationDate": 1683638039516, - "contentHash": "d1181b9fe179db5249919cc6fee80e0e", - "sourceName": "script/deployments/MoneyMarket/deploy/AdminFacet.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/proxy/Clones.sol", - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/AdminFacet.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployAdminFacetScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "AdminFacet.s.sol/DeployAdminFacetScript.json" - } - } - }, - "script/deployments/MoneyMarket/deploy/FlashloanFacet.s.sol": { - "lastModificationDate": 1683638032273, - "contentHash": "56c22765329f90d2676355d7cbc128cd", - "sourceName": "script/deployments/MoneyMarket/deploy/FlashloanFacet.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/FlashloanFacet.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployFlashloanFacetScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "FlashloanFacet.s.sol/DeployFlashloanFacetScript.json" - } - } - }, - "script/deployments/MoneyMarket/deploy/MoneyMarket.s.sol": { - "lastModificationDate": 1683638042477, - "contentHash": "da82babc1012be1f28fa0be4e877ea2a", - "sourceName": "script/deployments/MoneyMarket/deploy/MoneyMarket.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/PancakeswapV2IbTokenLiquidationStrategy.sol", - "solidity/contracts/money-market/PancakeswapV2LiquidationStrategy.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/fee-models/FixedFeeModel100Bps.sol", - "solidity/contracts/money-market/interest-models/TripleSlopeModel7.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployMoneyMarketScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket.s.sol/DeployMoneyMarketScript.json" - } - } - }, - "script/deployments/MoneyMarket/deploy/ViewFacet.s.sol": { - "lastModificationDate": 1683638036594, - "contentHash": "6f96d3ea4d07119c2dfc199b5759b7d2", - "sourceName": "script/deployments/MoneyMarket/deploy/ViewFacet.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/facets/ViewFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployViewFacetScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "ViewFacet.s.sol/DeployViewFacetScript.json" - } - } - }, - "script/deployments/MoneyMarket/diamond-cut/FlashloanFacetCut.s.sol": { - "lastModificationDate": 1683691690196, - "contentHash": "32ebdc24757713b6ff3a3a55f3be0abe", - "sourceName": "script/deployments/MoneyMarket/diamond-cut/FlashloanFacetCut.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DiamondCutFlashloanFacetScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "FlashloanFacetCut.s.sol/DiamondCutFlashloanFacetScript.json" - } - } - }, - "script/deployments/MoneyMarketAccountManager/deploy/MoneyMarketAccountManager.s.sol": { - "lastModificationDate": 1683011974638, - "contentHash": "9810ff05bf74a49a01717c50b82a0917", - "sourceName": "script/deployments/MoneyMarketAccountManager/deploy/MoneyMarketAccountManager.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", - "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", - "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", - "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployMoneyMarketAccountManagerScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarketAccountManager.s.sol/DeployMoneyMarketAccountManagerScript.json" - } - } - }, - "script/deployments/MoneyMarketReader/deploy/MoneyMarketReader.s.sol": { - "lastModificationDate": 1683011974640, - "contentHash": "f8e72abd284478683a77e3b0a104df8c", - "sourceName": "script/deployments/MoneyMarketReader/deploy/MoneyMarketReader.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketReader.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/reader/MoneyMarketReader.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployMoneyMarketReaderScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarketReader.s.sol/DeployMoneyMarketReaderScript.json" - } - } - }, - "script/deployments/OracleMedianizer/config/SetMultiPrimarySources.s.sol": { - "lastModificationDate": 1683614771300, - "contentHash": "afd21b20494e93b0a5e5f2b78f5001a5", - "sourceName": "script/deployments/OracleMedianizer/config/SetMultiPrimarySources.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetMultiPrimarySourcesScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetMultiPrimarySources.s.sol/SetMultiPrimarySourcesScript.json" - } - } - }, - "script/deployments/OracleMedianizer/deploy/OracleMedianizer.s.sol": { - "lastModificationDate": 1683011974642, - "contentHash": "24aab66c4f6166b265d3a5424d7f50cf", - "sourceName": "script/deployments/OracleMedianizer/deploy/OracleMedianizer.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", - "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", - "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", - "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployOracleMedianizerScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "OracleMedianizer.s.sol/DeployOracleMedianizerScript.json" - } - } - }, - "script/deployments/PancakeswapV2IbTokenLiquidationStrategy/deploy/PancakeswapV2IbTokenLiquidationStrategy.s.sol": { - "lastModificationDate": 1683011974643, - "contentHash": "f563ad0cf8151c8d749d7b5a5d5e74fb", - "sourceName": "script/deployments/PancakeswapV2IbTokenLiquidationStrategy/deploy/PancakeswapV2IbTokenLiquidationStrategy.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/PancakeswapV2IbTokenLiquidationStrategy.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployPancakeswapV2IbTokenLiquidationStrategyScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV2IbTokenLiquidationStrategy.s.sol/DeployPancakeswapV2IbTokenLiquidationStrategyScript.json" - } - } - }, - "script/deployments/PancakeswapV2LiquidationStrategy/config/SetCallersOk.s.sol": { - "lastModificationDate": 1683011974645, - "contentHash": "6a32248a3eac008e68fa7d391ae1e2f4", - "sourceName": "script/deployments/PancakeswapV2LiquidationStrategy/config/SetCallersOk.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetLiquidatorsOkScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetCallersOk.s.sol/SetLiquidatorsOkScript.json" - } - } - }, - "script/deployments/PancakeswapV2LiquidationStrategy/config/SetPaths.s.sol": { - "lastModificationDate": 1683011974646, - "contentHash": "4b1002a9247e4bd20598f6c171d3dab7", - "sourceName": "script/deployments/PancakeswapV2LiquidationStrategy/config/SetPaths.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/PancakeswapV2LiquidationStrategy.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetPathsScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "config/SetPaths.s.sol/SetPathsScript.json" - } - } - }, - "script/deployments/PancakeswapV2LiquidationStrategy/deploy/PancakeswapV2LiquidationStrategy.s.sol": { - "lastModificationDate": 1683011974647, - "contentHash": "e8445615f86da5fb2e870169e35b051e", - "sourceName": "script/deployments/PancakeswapV2LiquidationStrategy/deploy/PancakeswapV2LiquidationStrategy.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/PancakeswapV2IbTokenLiquidationStrategy.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployPancakeswapV2IbTokenLiquidationStrategyScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV2LiquidationStrategy.s.sol/DeployPancakeswapV2IbTokenLiquidationStrategyScript.json" - } - } - }, - "script/deployments/PancakeswapV3IbTokenLiquidationStrategy/config/SetPaths.s.sol": { - "lastModificationDate": 1683011974648, - "contentHash": "27ebe0f9d0054027c73e1203405e972b", - "sourceName": "script/deployments/PancakeswapV3IbTokenLiquidationStrategy/config/SetPaths.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/reader/libraries/LibBytes.sol", - "solidity/contracts/reader/libraries/LibPath.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetPathsScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV3IbTokenLiquidationStrategy/config/SetPaths.s.sol/SetPathsScript.json" - } - } - }, - "script/deployments/PancakeswapV3IbTokenLiquidationStrategy/deploy/PancakeswapV3IbTokenLiquidationStrategy.s.sol": { - "lastModificationDate": 1683011974648, - "contentHash": "283cfd4e5fdfa180d8e46b08934ffb53", - "sourceName": "script/deployments/PancakeswapV3IbTokenLiquidationStrategy/deploy/PancakeswapV3IbTokenLiquidationStrategy.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/reader/libraries/LibBytes.sol", - "solidity/contracts/reader/libraries/LibPath.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployPancakeswapV3IbTokenLiquidationStrategyScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV3IbTokenLiquidationStrategy.s.sol/DeployPancakeswapV3IbTokenLiquidationStrategyScript.json" - } - } - }, - "script/deployments/ProxyAdmin/deploy/ProxyAdmin.s.sol": { - "lastModificationDate": 1681890136632, - "contentHash": "cfc2d52a47405d638ef89d309c4fce35", - "sourceName": "script/deployments/ProxyAdmin/deploy/ProxyAdmin.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol", - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", - "node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", - "node_modules/@openzeppelin/contracts/proxy/Proxy.sol", - "node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol", - "node_modules/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol", - "node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployProxyAdminScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "ProxyAdmin.s.sol/DeployProxyAdminScript.json" - } - } - }, - "script/deployments/RepurchaseRewardModel/deploy/FixedFeeModel500Bps.s.sol": { - "lastModificationDate": 1683011974649, - "contentHash": "7c3a0b79ec9bb85e99f8a61fbd3926e4", - "sourceName": "script/deployments/RepurchaseRewardModel/deploy/FixedFeeModel500Bps.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/fee-models/FixedFeeModel500Bps.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployFixedFeeModel500BpsScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "FixedFeeModel500Bps.s.sol/DeployFixedFeeModel500BpsScript.json" - } - } - }, - "script/deployments/RepurchaseRewardModel/deploy/FixedRepurchaseRewardModel.s.sol": { - "lastModificationDate": 1683011974650, - "contentHash": "71dac32012ef6433f202af42ec1ba1c3", - "sourceName": "script/deployments/RepurchaseRewardModel/deploy/FixedRepurchaseRewardModel.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/fee-models/FixedFeeModel100Bps.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployFixedRepurchaseRewardModelScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "FixedRepurchaseRewardModel.s.sol/DeployFixedRepurchaseRewardModelScript.json" - } - } - }, - "script/deployments/WNativeRelayer/config/setCallerOk.s.sol": { - "lastModificationDate": 1683011974651, - "contentHash": "e45195676bc3ab77afbd0398fd6e4f26", - "sourceName": "script/deployments/WNativeRelayer/config/setCallerOk.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetCallerOkScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "setCallerOk.s.sol/SetCallerOkScript.json" - } - } - }, - "script/deployments/WNativeRelayer/deploy/WNativeRelayer.s.sol": { - "lastModificationDate": 1683011974653, - "contentHash": "30499d92052ab00198132dd7db9bd326", - "sourceName": "script/deployments/WNativeRelayer/deploy/WNativeRelayer.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DeployWNativeRelayerScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "WNativeRelayer.s.sol/DeployWNativeRelayerScript.json" - } - } - }, - "script/deployments/libraries/LibMoneyMarketDeployment.sol": { - "lastModificationDate": 1683625397831, - "contentHash": "66bc5db5fa872f24340fbecea3c1c429", - "sourceName": "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/tests/utils/VM.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "LibMoneyMarketDeployment": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "LibMoneyMarketDeployment.sol/LibMoneyMarketDeployment.json" - } - } - }, - "script/utilities/BaseUtilsScript.sol": { - "lastModificationDate": 1683011974655, - "contentHash": "0f6b48085e2b0d62afe65c0e4d876a45", - "sourceName": "script/utilities/BaseUtilsScript.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "BaseUtilsScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "BaseUtilsScript.sol/BaseUtilsScript.json" - }, - "IMoneyMarket": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "BaseUtilsScript.sol/IMoneyMarket.json" - } - } - }, - "script/utilities/CreateLiquidationScenario.s.sol": { - "lastModificationDate": 1683011974655, - "contentHash": "d60ee29d4baa759175440c15b919b799", - "sourceName": "script/utilities/CreateLiquidationScenario.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "CreateLiquidationScenarioScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "CreateLiquidationScenario.s.sol/CreateLiquidationScenarioScript.json" - } - } - }, - "script/utilities/SetMoneyMarketConfigs.s.sol": { - "lastModificationDate": 1683004944255, - "contentHash": "8f5679ec912d99d7ee2e310e5a7345fe", - "sourceName": "script/utilities/SetMoneyMarketConfigs.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "script/utilities/BaseUtilsScript.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetMoneyMarketConfigsScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetMoneyMarketConfigs.s.sol/SetMoneyMarketConfigsScript.json" - } - } - }, - "script/utilities/SetProtocolConfigs.s.sol": { - "lastModificationDate": 1679481016246, - "contentHash": "cd0e1cb970f19145283bc312f2c3c508", - "sourceName": "script/utilities/SetProtocolConfigs.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "script/utilities/BaseUtilsScript.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetProtocolConfigsScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetProtocolConfigs.s.sol/SetProtocolConfigsScript.json" - } - } - }, - "script/utilities/SetTokenConfigs.s.sol": { - "lastModificationDate": 1679481016247, - "contentHash": "789cbe9ea82d061b43a74f19ae578fbe", - "sourceName": "script/utilities/SetTokenConfigs.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "script/utilities/BaseUtilsScript.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetTokenConfigsScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetTokenConfigs.s.sol/SetTokenConfigsScript.json" - } - } - }, - "script/utilities/SetUpMMForTest.s.sol": { - "lastModificationDate": 1683011974656, - "contentHash": "b6206a1a28b20335c6b8bc7833e7d21c", - "sourceName": "script/utilities/SetUpMMForTest.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol", - "solidity/contracts/money-market/interest-models/TripleSlopeModel7.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetUpMMForTestScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetUpMMForTest.s.sol/SetUpMMForTestScript.json" - } - } - }, - "script/utilities/SetUpMiniFLForTest.s.sol": { - "lastModificationDate": 1683011974657, - "contentHash": "d09a6d887a463b029b2c6bbb64086416", - "sourceName": "script/utilities/SetUpMiniFLForTest.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "script/BaseScript.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SetUpMiniFLForTestScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SetUpMiniFLForTest.s.sol/SetUpMiniFLForTestScript.json" - } - } - }, - "script/utilities/withdrawProtocolReserve.s.sol": { - "lastModificationDate": 1683011974658, - "contentHash": "61fc1317dbee701ea78217a3f53de5ab", - "sourceName": "script/utilities/withdrawProtocolReserve.s.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "script/utilities/BaseUtilsScript.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/Script.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdJson.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "withdrawProtocolReserveScript": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "withdrawProtocolReserve.s.sol/withdrawProtocolReserveScript.json" - } - } - }, - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol": { - "lastModificationDate": 1683620715991, - "contentHash": "8b17ef18fd456e884dcdce06182829b7", - "sourceName": "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarketAccountManager": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarketAccountManager.sol/MoneyMarketAccountManager.json" - } - } - }, - "solidity/contracts/interfaces/IERC20.sol": { - "lastModificationDate": 1681890136641, - "contentHash": "d0506d733c90381fa2e929a5094f48b8", - "sourceName": "solidity/contracts/interfaces/IERC20.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IERC20": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "interfaces/IERC20.sol/IERC20.json" - } - } - }, - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol": { - "lastModificationDate": 1679402354791, - "contentHash": "ac2334d8bb1c6465f4b0bfe08d0aa721", - "sourceName": "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IMoneyMarketAccountManager": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IMoneyMarketAccountManager.sol/IMoneyMarketAccountManager.json" - } - } - }, - "solidity/contracts/interfaces/IMoneyMarketReader.sol": { - "lastModificationDate": 1683614773955, - "contentHash": "bd3a6ce91a95477f7f49bdd21af5c90a", - "sourceName": "solidity/contracts/interfaces/IMoneyMarketReader.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IMoneyMarketReader": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IMoneyMarketReader.sol/IMoneyMarketReader.json" - } - } - }, - "solidity/contracts/interfaces/IWNative.sol": { - "lastModificationDate": 1679402354792, - "contentHash": "f4366372bc4ba26b3772197bbfd00dcf", - "sourceName": "solidity/contracts/interfaces/IWNative.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IWNative": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IWNative.sol/IWNative.json" - } - } - }, - "solidity/contracts/interfaces/IWNativeRelayer.sol": { - "lastModificationDate": 1681890136642, - "contentHash": "37432e1986e5950f973921d7cbcea97b", - "sourceName": "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IWNativeRelayer": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IWNativeRelayer.sol/IWNativeRelayer.json" - } - } - }, - "solidity/contracts/miniFL/MiniFL.sol": { - "lastModificationDate": 1683004944260, - "contentHash": "a31291b3ac768021a2686829f31cc02d", - "sourceName": "solidity/contracts/miniFL/MiniFL.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MiniFL": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL.sol/MiniFL.json" - } - } - }, - "solidity/contracts/miniFL/Rewarder.sol": { - "lastModificationDate": 1683614773956, - "contentHash": "630ee9fd4fceed2e8ebdc47be1f4c46b", - "sourceName": "solidity/contracts/miniFL/Rewarder.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "Rewarder": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "Rewarder.sol/Rewarder.json" - } - } - }, - "solidity/contracts/miniFL/interfaces/IMiniFL.sol": { - "lastModificationDate": 1683614771303, - "contentHash": "248d0e960ede27add31e7ceff0a34d67", - "sourceName": "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/miniFL/interfaces/IRewarder.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "IMiniFL": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "interfaces/IMiniFL.sol/IMiniFL.json" - } - } - }, - "solidity/contracts/miniFL/interfaces/IRewarder.sol": { - "lastModificationDate": 1683614773956, - "contentHash": "5ee18121f2d673dbef4c3d503d317c4c", - "sourceName": "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IRewarder": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IRewarder.sol/IRewarder.json" - } - } - }, - "solidity/contracts/money-market/DebtToken.sol": { - "lastModificationDate": 1679402354824, - "contentHash": "eef274e7700c06854f50725f41f4acff", - "sourceName": "solidity/contracts/money-market/DebtToken.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DebtToken": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "DebtToken.sol/DebtToken.json" - } - } - }, - "solidity/contracts/money-market/InterestBearingToken.sol": { - "lastModificationDate": 1679402354825, - "contentHash": "dc938b5e3c494307c9cb9c6cbdc742a7", - "sourceName": "solidity/contracts/money-market/InterestBearingToken.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "InterestBearingToken": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "InterestBearingToken.sol/InterestBearingToken.json" - } - } - }, - "solidity/contracts/money-market/MoneyMarketDiamond.sol": { - "lastModificationDate": 1683011974661, - "contentHash": "f8a5d17ceae0c0ca45e3b244a96e670a", - "sourceName": "solidity/contracts/money-market/MoneyMarketDiamond.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarketDiamond": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarketDiamond.sol/MoneyMarketDiamond.json" - } - } - }, - "solidity/contracts/money-market/PancakeswapV2IbTokenLiquidationStrategy.sol": { - "lastModificationDate": 1683011974662, - "contentHash": "a8b9d00dbe54406c7a799af2c97121af", - "sourceName": "solidity/contracts/money-market/PancakeswapV2IbTokenLiquidationStrategy.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "PancakeswapV2IbTokenLiquidationStrategy": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV2IbTokenLiquidationStrategy.sol/PancakeswapV2IbTokenLiquidationStrategy.json" - } - } - }, - "solidity/contracts/money-market/PancakeswapV2LiquidationStrategy.sol": { - "lastModificationDate": 1683011974663, - "contentHash": "7feafed5220878a050c9e794d85fd27c", - "sourceName": "solidity/contracts/money-market/PancakeswapV2LiquidationStrategy.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "PancakeswapV2LiquidationStrategy": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV2LiquidationStrategy.sol/PancakeswapV2LiquidationStrategy.json" - } - } - }, - "solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol": { - "lastModificationDate": 1683614778796, - "contentHash": "a9a08650edd1d07fd953b283803d4891", - "sourceName": "solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/reader/libraries/LibBytes.sol", - "solidity/contracts/reader/libraries/LibPath.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "PancakeswapV3IbTokenLiquidationStrategy": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV3IbTokenLiquidationStrategy.sol/PancakeswapV3IbTokenLiquidationStrategy.json" - } - } - }, - "solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol": { - "lastModificationDate": 1683614778797, - "contentHash": "10bb87d7af43726a12753b42506ed966", - "sourceName": "solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "PancakeswapV3IbTokenLiquidationStrategy_WithPathReader": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.json" - } - } - }, - "solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol": { - "lastModificationDate": 1683614778797, - "contentHash": "ac44b73ac4b29d8432f077a80379e4fa", - "sourceName": "solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol", - "solidity/contracts/reader/libraries/LibBytes.sol", - "solidity/contracts/reader/libraries/LibPath.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "PancakeswapV3TokenLiquidationStrategy": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV3TokenLiquidationStrategy.sol/PancakeswapV3TokenLiquidationStrategy.json" - } - } - }, - "solidity/contracts/money-market/facets/AdminFacet.sol": { - "lastModificationDate": 1683625397832, - "contentHash": "47bdc720b199fa5bf5d3f927092902b7", - "sourceName": "solidity/contracts/money-market/facets/AdminFacet.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/proxy/Clones.sol", - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "AdminFacet": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "AdminFacet.sol/AdminFacet.json" - } - } - }, - "solidity/contracts/money-market/facets/BorrowFacet.sol": { - "lastModificationDate": 1679402354828, - "contentHash": "dbb0a596bc7e8bf6180150841765448a", - "sourceName": "solidity/contracts/money-market/facets/BorrowFacet.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "BorrowFacet": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "BorrowFacet.sol/BorrowFacet.json" - } - } - }, - "solidity/contracts/money-market/facets/CollateralFacet.sol": { - "lastModificationDate": 1679402354829, - "contentHash": "da4ce1e0959ec891141fa1fdb533a820", - "sourceName": "solidity/contracts/money-market/facets/CollateralFacet.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "CollateralFacet": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "CollateralFacet.sol/CollateralFacet.json" - } - } - }, - "solidity/contracts/money-market/facets/FlashloanFacet.sol": { - "lastModificationDate": 1683614778798, - "contentHash": "54b86a159ebb15050e16bb40b54706d6", - "sourceName": "solidity/contracts/money-market/facets/FlashloanFacet.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "FlashloanFacet": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "FlashloanFacet.sol/FlashloanFacet.json" - } - } - }, - "solidity/contracts/money-market/facets/LendFacet.sol": { - "lastModificationDate": 1683011974667, - "contentHash": "5157c0b62d59b3f1bad4a6d44f95795d", - "sourceName": "solidity/contracts/money-market/facets/LendFacet.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/proxy/Clones.sol", - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "LendFacet": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "LendFacet.sol/LendFacet.json" - } - } - }, - "solidity/contracts/money-market/facets/LiquidationFacet.sol": { - "lastModificationDate": 1683011974668, - "contentHash": "5c901123a810f57df7d7217c0ced8867", - "sourceName": "solidity/contracts/money-market/facets/LiquidationFacet.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "LiquidationFacet": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "LiquidationFacet.sol/LiquidationFacet.json" - } - } - }, - "solidity/contracts/money-market/facets/MMDiamondCutFacet.sol": { - "lastModificationDate": 1679402354832, - "contentHash": "132d20c80757dd88a33e330598583ff2", - "sourceName": "solidity/contracts/money-market/facets/MMDiamondCutFacet.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MMDiamondCutFacet": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMDiamondCutFacet.sol/MMDiamondCutFacet.json" - } - } - }, - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol": { - "lastModificationDate": 1679402354832, - "contentHash": "a1db41aceba5be3afe0c974c385998f2", - "sourceName": "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MMDiamondLoupeFacet": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMDiamondLoupeFacet.sol/MMDiamondLoupeFacet.json" - } - } - }, - "solidity/contracts/money-market/facets/MMOwnershipFacet.sol": { - "lastModificationDate": 1679402354832, - "contentHash": "9d424cdfc8a9e62f5f231ad79d6ea40c", - "sourceName": "solidity/contracts/money-market/facets/MMOwnershipFacet.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MMOwnershipFacet": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMOwnershipFacet.sol/MMOwnershipFacet.json" - } - } - }, - "solidity/contracts/money-market/facets/NonCollatBorrowFacet.sol": { - "lastModificationDate": 1679402354833, - "contentHash": "c81537170beadbcb4420d2d91cbecaa6", - "sourceName": "solidity/contracts/money-market/facets/NonCollatBorrowFacet.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "NonCollatBorrowFacet": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "NonCollatBorrowFacet.sol/NonCollatBorrowFacet.json" - } - } - }, - "solidity/contracts/money-market/facets/ViewFacet.sol": { - "lastModificationDate": 1683526269291, - "contentHash": "d2ff1d5954d2038de25cf0a1d6dc943e", - "sourceName": "solidity/contracts/money-market/facets/ViewFacet.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "ViewFacet": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "ViewFacet.sol/ViewFacet.json" - } - } - }, - "solidity/contracts/money-market/fee-models/FixedFeeModel100Bps.sol": { - "lastModificationDate": 1683011974669, - "contentHash": "d4e39cb20def9f96465c655659ecaae1", - "sourceName": "solidity/contracts/money-market/fee-models/FixedFeeModel100Bps.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/interfaces/IFeeModel.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "FixedFeeModel100Bps": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "FixedFeeModel100Bps.sol/FixedFeeModel100Bps.json" - } - } - }, - "solidity/contracts/money-market/fee-models/FixedFeeModel500Bps.sol": { - "lastModificationDate": 1683011974669, - "contentHash": "07dc483d4087ae49f0849117caf310bb", - "sourceName": "solidity/contracts/money-market/fee-models/FixedFeeModel500Bps.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/interfaces/IFeeModel.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "FixedFeeModel500Bps": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "FixedFeeModel500Bps.sol/FixedFeeModel500Bps.json" - } - } - }, - "solidity/contracts/money-market/interest-models/FixedInterestRateModel.sol": { - "lastModificationDate": 1679402354837, - "contentHash": "2604aad400ab75e551045575d2e6dced", - "sourceName": "solidity/contracts/money-market/interest-models/FixedInterestRateModel.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "FixedInterestRateModel": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "FixedInterestRateModel.sol/FixedInterestRateModel.json" - } - } - }, - "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel1.sol": { - "lastModificationDate": 1683011974670, - "contentHash": "7a2a82e582b14d25513d4c1905bf7d16", - "sourceName": "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel1.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MMDoubleSlopeModel1": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMDoubleSlopeModel1.sol/MMDoubleSlopeModel1.json" - } - } - }, - "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel2.sol": { - "lastModificationDate": 1683011974671, - "contentHash": "52b6e7a3a090567176107326d7fc1a74", - "sourceName": "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel2.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MMDoubleSlopeModel2": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMDoubleSlopeModel2.sol/MMDoubleSlopeModel2.json" - } - } - }, - "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel3.sol": { - "lastModificationDate": 1683011974671, - "contentHash": "7228bc63fc5bf22af9863a28992d60d4", - "sourceName": "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel3.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MMDoubleSlopeModel3": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMDoubleSlopeModel3.sol/MMDoubleSlopeModel3.json" - } - } - }, - "solidity/contracts/money-market/interest-models/TripleSlopeModel0.sol": { - "lastModificationDate": 1683011974672, - "contentHash": "7b50b47d61df120d9f288a1464329008", - "sourceName": "solidity/contracts/money-market/interest-models/TripleSlopeModel0.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "TripleSlopeModel0": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "TripleSlopeModel0.sol/TripleSlopeModel0.json" - } - } - }, - "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol": { - "lastModificationDate": 1679402354837, - "contentHash": "9be91a91b633b8a41f80bef7ea2d6b33", - "sourceName": "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "TripleSlopeModel6": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "TripleSlopeModel6.sol/TripleSlopeModel6.json" - } - } - }, - "solidity/contracts/money-market/interest-models/TripleSlopeModel7.sol": { - "lastModificationDate": 1679402354838, - "contentHash": "da68e6bc85190f4c192aa283717a3d61", - "sourceName": "solidity/contracts/money-market/interest-models/TripleSlopeModel7.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "TripleSlopeModel7": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "TripleSlopeModel7.sol/TripleSlopeModel7.json" - } - } - }, - "solidity/contracts/money-market/interfaces/IAdminFacet.sol": { - "lastModificationDate": 1683625397832, - "contentHash": "97a4e80a65f5c9ec912282371ba2fac8", - "sourceName": "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "IAdminFacet": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IAdminFacet.sol/IAdminFacet.json" - } - } - }, - "solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol": { - "lastModificationDate": 1683526269293, - "contentHash": "a961199abddcdf6e3a82e4913f32d10a", - "sourceName": "solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IAlpacaFlashloanCallback": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IAlpacaFlashloanCallback.sol/IAlpacaFlashloanCallback.json" - } - } - }, - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol": { - "lastModificationDate": 1679402354839, - "contentHash": "5db96763dcf47882bf8c1814aa2f482e", - "sourceName": "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IAlpacaV2Oracle": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "interfaces/IAlpacaV2Oracle.sol/IAlpacaV2Oracle.json" - } - } - }, - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol": { - "lastModificationDate": 1679402354839, - "contentHash": "bcc4a299df217e14109c2091a22cea6d", - "sourceName": "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "IBorrowFacet": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IBorrowFacet.sol/IBorrowFacet.json" - } - } - }, - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol": { - "lastModificationDate": 1679402354839, - "contentHash": "2d5ab3186abe99b805e87d3fd5e7d784", - "sourceName": "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "ICollateralFacet": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "ICollateralFacet.sol/ICollateralFacet.json" - } - } - }, - "solidity/contracts/money-market/interfaces/IDebtToken.sol": { - "lastModificationDate": 1679402354840, - "contentHash": "d0ed1daf5d130254e44f8c8d495f2dba", - "sourceName": "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IDebtToken": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IDebtToken.sol/IDebtToken.json" - } - } - }, - "solidity/contracts/money-market/interfaces/IERC165.sol": { - "lastModificationDate": 1679402354841, - "contentHash": "fe7563490fb306f2c8ef84564547f85e", - "sourceName": "solidity/contracts/money-market/interfaces/IERC165.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IERC165": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IERC165.sol/IERC165.json" - } - } - }, - "solidity/contracts/money-market/interfaces/IERC173.sol": { - "lastModificationDate": 1679402354841, - "contentHash": "1bbc01555ac17810c3b8ca6fe164ee5c", - "sourceName": "solidity/contracts/money-market/interfaces/IERC173.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IERC173": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IERC173.sol/IERC173.json" - } - } - }, - "solidity/contracts/money-market/interfaces/IERC20.sol": { - "lastModificationDate": 1679402354841, - "contentHash": "a2f5a69098785f473c27a18a1f51fd37", - "sourceName": "solidity/contracts/money-market/interfaces/IERC20.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IERC20": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "money-market/interfaces/IERC20.sol/IERC20.json" - } - } - }, - "solidity/contracts/money-market/interfaces/IFeeModel.sol": { - "lastModificationDate": 1679402354842, - "contentHash": "ad9f8bc94450bdd8ebd1ab66e81f2e2a", - "sourceName": "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IFeeModel": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IFeeModel.sol/IFeeModel.json" - } - } - }, - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol": { - "lastModificationDate": 1683614778798, - "contentHash": "66d402abc21fef310d106546e58e0c6b", - "sourceName": "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IFlashloanFacet": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IFlashloanFacet.sol/IFlashloanFacet.json" - } - } - }, - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol": { - "lastModificationDate": 1679402354843, - "contentHash": "af96180bc17161b072a1ae94f5636f0f", - "sourceName": "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/interfaces/IERC20.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "IInterestBearingToken": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IInterestBearingToken.sol/IInterestBearingToken.json" - } - } - }, - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol": { - "lastModificationDate": 1679402354843, - "contentHash": "ce5cfe287a2ec08e8a730ac403236bc7", - "sourceName": "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IInterestRateModel": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IInterestRateModel.sol/IInterestRateModel.json" - } - } - }, - "solidity/contracts/money-market/interfaces/ILendFacet.sol": { - "lastModificationDate": 1679402354844, - "contentHash": "ab701819933a4d31d61a82465def9303", - "sourceName": "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "ILendFacet": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "ILendFacet.sol/ILendFacet.json" - } - } - }, - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol": { - "lastModificationDate": 1683011974674, - "contentHash": "dbc5f297afc5813ea937e968ffbfc62f", - "sourceName": "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "ILiquidationFacet": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "ILiquidationFacet.sol/ILiquidationFacet.json" - } - } - }, - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol": { - "lastModificationDate": 1679402354845, - "contentHash": "4ca49983971cd566accd4627feacaa5e", - "sourceName": "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "ILiquidationStrategy": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "ILiquidationStrategy.sol/ILiquidationStrategy.json" - } - } - }, - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol": { - "lastModificationDate": 1679402354845, - "contentHash": "56dc7ac83c4d7c1798fd26b5cf08f79f", - "sourceName": "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IMMDiamondCut": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IMMDiamondCut.sol/IMMDiamondCut.json" - } - } - }, - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol": { - "lastModificationDate": 1679402354845, - "contentHash": "8db3f3bef1b6de66c394f2ec92ff702e", - "sourceName": "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IMMDiamondLoupe": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IMMDiamondLoupe.sol/IMMDiamondLoupe.json" - } - } - }, - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol": { - "lastModificationDate": 1679402354845, - "contentHash": "2750b97302960dd70c3093c421579732", - "sourceName": "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/interfaces/IERC173.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "IMMOwnershipFacet": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IMMOwnershipFacet.sol/IMMOwnershipFacet.json" - } - } - }, - "solidity/contracts/money-market/interfaces/IMiniFL.sol": { - "lastModificationDate": 1683614773957, - "contentHash": "c44fbcd512f1bd13792921949e7ce4f3", - "sourceName": "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IMiniFL": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "money-market/interfaces/IMiniFL.sol/IMiniFL.json" - } - } - }, - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol": { - "lastModificationDate": 1680932719799, - "contentHash": "347b14274400efea62ecb4a8b60d8b18", - "sourceName": "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "IMoneyMarket": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IMoneyMarket.sol/IMoneyMarket.json" - } - } - }, - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol": { - "lastModificationDate": 1679402354846, - "contentHash": "286a2ae5eff33932754c7d68da9aa6e2", - "sourceName": "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "INonCollatBorrowFacet": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "INonCollatBorrowFacet.sol/INonCollatBorrowFacet.json" - } - } - }, - "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol": { - "lastModificationDate": 1683011974675, - "contentHash": "ef1231232f9dce8f5c0c86434263d4fb", - "sourceName": "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IPancakeRouter02": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IPancakeRouter02.sol/IPancakeRouter02.json" - } - } - }, - "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol": { - "lastModificationDate": 1683011974676, - "contentHash": "141245e144bb3b3845e155f5a690ebdb", - "sourceName": "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol" - ], - "versionRequirement": ">=0.7.5", - "artifacts": { - "IPancakeSwapRouterV3": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IPancakeSwapRouterV3.sol/IPancakeSwapRouterV3.json" - } - } - }, - "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol": { - "lastModificationDate": 1683011974677, - "contentHash": "1b2c0ed04ff85e6fa2db38ab1065b841", - "sourceName": "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IPancakeV3Pool": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "interfaces/IPancakeV3Pool.sol/IPancakeV3Pool.json" - }, - "IPancakeV3PoolState": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IPancakeV3Pool.sol/IPancakeV3PoolState.json" - } - } - }, - "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol": { - "lastModificationDate": 1683011974679, - "contentHash": "b740c97d108fface05bdf844e667d3bb", - "sourceName": "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": ">=0.5.0", - "artifacts": { - "IPancakeV3SwapCallback": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IPancakeV3SwapCallback.sol/IPancakeV3SwapCallback.json" - } - } - }, - "solidity/contracts/money-market/interfaces/IPriceOracle.sol": { - "lastModificationDate": 1679402354846, - "contentHash": "e87932b2de1693c1eb01d49be7427d63", - "sourceName": "solidity/contracts/money-market/interfaces/IPriceOracle.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IPriceOracle": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "interfaces/IPriceOracle.sol/IPriceOracle.json" - } - } - }, - "solidity/contracts/money-market/interfaces/IViewFacet.sol": { - "lastModificationDate": 1683526269295, - "contentHash": "22bb4ea954ddd5a2a53dc71e24490c25", - "sourceName": "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "IViewFacet": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IViewFacet.sol/IViewFacet.json" - } - } - }, - "solidity/contracts/money-market/libraries/LibBytes.sol": { - "lastModificationDate": 1683614778799, - "contentHash": "4d9a2016d58a8aaf4d15e59f991ac22d", - "sourceName": "solidity/contracts/money-market/libraries/LibBytes.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "LibBytes": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "libraries/LibBytes.sol/LibBytes.json" - } - } - }, - "solidity/contracts/money-market/libraries/LibConstant.sol": { - "lastModificationDate": 1679402354847, - "contentHash": "c71559bc72217690e22dd1614a686c3b", - "sourceName": "solidity/contracts/money-market/libraries/LibConstant.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "LibConstant": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "LibConstant.sol/LibConstant.json" - } - } - }, - "solidity/contracts/money-market/libraries/LibDiamond.sol": { - "lastModificationDate": 1679402354847, - "contentHash": "af16a776aebeab72c2106f0badae0754", - "sourceName": "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "LibDiamond": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "LibDiamond.sol/LibDiamond.json" - } - } - }, - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol": { - "lastModificationDate": 1679402354848, - "contentHash": "1ef0bfa81bd9efcc8296c4888ff43171", - "sourceName": "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "LibDoublyLinkedList": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "LibDoublyLinkedList.sol/LibDoublyLinkedList.json" - } - } - }, - "solidity/contracts/money-market/libraries/LibFullMath.sol": { - "lastModificationDate": 1679402354849, - "contentHash": "fc446e94cbcf4885201bf8c28acf919f", - "sourceName": "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "LibFullMath": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "libraries/LibFullMath.sol/LibFullMath.json" - } - } - }, - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol": { - "lastModificationDate": 1683625397834, - "contentHash": "0d744da925dde6085c96afb6690fe52a", - "sourceName": "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "LibMoneyMarket01": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "LibMoneyMarket01.sol/LibMoneyMarket01.json" - } - } - }, - "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol": { - "lastModificationDate": 1679402354850, - "contentHash": "7db18481231da520c0346ee7ceba28d8", - "sourceName": "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "LibReentrancyGuard": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "LibReentrancyGuard.sol/LibReentrancyGuard.json" - } - } - }, - "solidity/contracts/money-market/libraries/LibSafeToken.sol": { - "lastModificationDate": 1679402354850, - "contentHash": "59fece0014bb86bfef256c1506e4e2df", - "sourceName": "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/interfaces/IERC20.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "LibSafeToken": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "LibSafeToken.sol/LibSafeToken.json" - } - } - }, - "solidity/contracts/money-market/libraries/LibShareUtil.sol": { - "lastModificationDate": 1679402354851, - "contentHash": "6134e77b5a2ea8f2581b085ad8454e9b", - "sourceName": "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/libraries/LibFullMath.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "LibShareUtil": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "LibShareUtil.sol/LibShareUtil.json" - } - } - }, - "solidity/contracts/oracle/AlpacaV2Oracle.sol": { - "lastModificationDate": 1683011974683, - "contentHash": "efb1c7fadc40d2b9ae09a797a78bda40", - "sourceName": "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "AlpacaV2Oracle": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "AlpacaV2Oracle.sol/AlpacaV2Oracle.json" - } - } - }, - "solidity/contracts/oracle/OracleMedianizer.sol": { - "lastModificationDate": 1679402354852, - "contentHash": "439c2fb289cd1d160e40866b16a87a1f", - "sourceName": "solidity/contracts/oracle/OracleMedianizer.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "OracleMedianizer": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "OracleMedianizer.sol/OracleMedianizer.json" - } - } - }, - "solidity/contracts/oracle/SimplePriceOracle.sol": { - "lastModificationDate": 1679402354853, - "contentHash": "2c18a1abd80321eb817d9696b3240eff", - "sourceName": "solidity/contracts/oracle/SimplePriceOracle.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "SimplePriceOracle": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "SimplePriceOracle.sol/SimplePriceOracle.json" - } - } - }, - "solidity/contracts/oracle/interfaces/IAggregatorV3.sol": { - "lastModificationDate": 1679402354854, - "contentHash": "f8c1fbd2c2546c9866b0153d34482d21", - "sourceName": "solidity/contracts/oracle/interfaces/IAggregatorV3.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IAggregatorV3": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IAggregatorV3.sol/IAggregatorV3.json" - } - } - }, - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol": { - "lastModificationDate": 1683011974684, - "contentHash": "0b3af88112aeaa71afc8a812730f48a1", - "sourceName": "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IAlpacaV2Oracle": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "oracle/interfaces/IAlpacaV2Oracle.sol/IAlpacaV2Oracle.json" - } - } - }, - "solidity/contracts/oracle/interfaces/IChainLinkPriceOracle.sol": { - "lastModificationDate": 1683614773958, - "contentHash": "5bcbf92b4decd8e8902f165e2ab6119f", - "sourceName": "solidity/contracts/oracle/interfaces/IChainLinkPriceOracle.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/oracle/interfaces/IAggregatorV3.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "IChainLinkPriceOracle": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IChainLinkPriceOracle.sol/IChainLinkPriceOracle.json" - } - } - }, - "solidity/contracts/oracle/interfaces/IChainLinkPriceOracle2.sol": { - "lastModificationDate": 1679402354855, - "contentHash": "2167ed2375caf973ec5d73d9da2e4934", - "sourceName": "solidity/contracts/oracle/interfaces/IChainLinkPriceOracle2.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/oracle/interfaces/IAggregatorV3.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "IChainLinkPriceOracle2": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IChainLinkPriceOracle2.sol/IChainLinkPriceOracle2.json" - } - } - }, - "solidity/contracts/oracle/interfaces/IERC20.sol": { - "lastModificationDate": 1679402354856, - "contentHash": "10bdd601e36392202a6b56eeb90356c7", - "sourceName": "solidity/contracts/oracle/interfaces/IERC20.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IERC20": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "oracle/interfaces/IERC20.sol/IERC20.json" - } - } - }, - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol": { - "lastModificationDate": 1679402354856, - "contentHash": "df2058934c009e5b5f41769d978d67a4", - "sourceName": "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "ILiquidityPair": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "ILiquidityPair.sol/ILiquidityPair.json" - } - } - }, - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol": { - "lastModificationDate": 1679402354856, - "contentHash": "afe00dff0ee3457e833729e133fbf7b9", - "sourceName": "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/oracle/interfaces/IPriceOracle.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "IOracleMedianizer": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IOracleMedianizer.sol/IOracleMedianizer.json" - } - } - }, - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol": { - "lastModificationDate": 1683011974685, - "contentHash": "d10e2df767b5ab6fefe6032f70868a4c", - "sourceName": "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": ">=0.5.0", - "artifacts": { - "IPancakeV3Pool": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "oracle/interfaces/IPancakeV3Pool.sol/IPancakeV3Pool.json" - } - } - }, - "solidity/contracts/oracle/interfaces/IPriceOracle.sol": { - "lastModificationDate": 1679402354857, - "contentHash": "ed32fd27e9c0f469439aa65b87541bdf", - "sourceName": "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IPriceOracle": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "oracle/interfaces/IPriceOracle.sol/IPriceOracle.json" - } - } - }, - "solidity/contracts/oracle/interfaces/IRouterLike.sol": { - "lastModificationDate": 1679402354857, - "contentHash": "abf8e37ab15e862ccf3bdefe53c8f532", - "sourceName": "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IRouterLike": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IRouterLike.sol/IRouterLike.json" - } - } - }, - "solidity/contracts/oracle/interfaces/IUniswapV3Pool.sol": { - "lastModificationDate": 1683004944280, - "contentHash": "b819c6cdb4efdd6a550c6e3cd13072b4", - "sourceName": "solidity/contracts/oracle/interfaces/IUniswapV3Pool.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": ">=0.5.0", - "artifacts": { - "IUniswapV3Pool": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IUniswapV3Pool.sol/IUniswapV3Pool.json" - }, - "IUniswapV3PoolImmutables": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IUniswapV3Pool.sol/IUniswapV3PoolImmutables.json" - }, - "IUniswapV3PoolState": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IUniswapV3Pool.sol/IUniswapV3PoolState.json" - } - } - }, - "solidity/contracts/oracle/libraries/LibFullMath.sol": { - "lastModificationDate": 1679402354857, - "contentHash": "ec6eaf606f4a0e5afa8bef0c379f121a", - "sourceName": "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "LibFullMath": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "oracle/libraries/LibFullMath.sol/LibFullMath.json" - } - } - }, - "solidity/contracts/reader/MoneyMarketReader.sol": { - "lastModificationDate": 1683614773959, - "contentHash": "d619675ee287ac16cf23842d7ec8ab4c", - "sourceName": "solidity/contracts/reader/MoneyMarketReader.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "solidity/contracts/interfaces/IMoneyMarketReader.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarketReader": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarketReader.sol/MoneyMarketReader.json" - } - } - }, - "solidity/contracts/reader/PCSV3PathReader.sol": { - "lastModificationDate": 1683614778800, - "contentHash": "3a935fbfb2c5c039a60a3e4f11361b73", - "sourceName": "solidity/contracts/reader/PCSV3PathReader.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol", - "solidity/contracts/reader/libraries/LibBytes.sol", - "solidity/contracts/reader/libraries/LibPath.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "PCSV3PathReader": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "PCSV3PathReader.sol/PCSV3PathReader.json" - } - } - }, - "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol": { - "lastModificationDate": 1683614778801, - "contentHash": "813d68480e80bbc0e6673ffc303c468f", - "sourceName": "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IUniSwapV3PathReader": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IUniSwapV3PathReader.sol/IUniSwapV3PathReader.json" - } - } - }, - "solidity/contracts/reader/libraries/LibBytes.sol": { - "lastModificationDate": 1683614778801, - "contentHash": "4d9a2016d58a8aaf4d15e59f991ac22d", - "sourceName": "solidity/contracts/reader/libraries/LibBytes.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "LibBytes": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "reader/libraries/LibBytes.sol/LibBytes.json" - } - } - }, - "solidity/contracts/reader/libraries/LibPath.sol": { - "lastModificationDate": 1683614778801, - "contentHash": "7a0e20af7cd08bed619792cdcb647798", - "sourceName": "solidity/contracts/reader/libraries/LibPath.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/reader/libraries/LibBytes.sol" - ], - "versionRequirement": ">=0.6.0", - "artifacts": { - "LibPath": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "LibPath.sol/LibPath.json" - } - } - }, - "solidity/tests/base/BaseTest.sol": { - "lastModificationDate": 1683625397835, - "contentHash": "226a5a7a78d0090ece4488d5729e3431", - "sourceName": "solidity/tests/base/BaseTest.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "BaseTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "BaseTest.sol/BaseTest.json" - } - } - }, - "solidity/tests/base/DSTest.sol": { - "lastModificationDate": 1665993426001, - "contentHash": "b04f778f0caf9f6cf9125f09aa68c3db", - "sourceName": "solidity/tests/base/DSTest.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": ">=0.5.0", - "artifacts": { - "DSTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "DSTest.sol/DSTest.json" - } - } - }, - "solidity/tests/helper/TestHelper.sol": { - "lastModificationDate": 1679402354869, - "contentHash": "d3a516236d910755898b78e924990b79", - "sourceName": "solidity/tests/helper/TestHelper.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "TestHelper": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "TestHelper.sol/TestHelper.json" - } - } - }, - "solidity/tests/interfaces/IBEP20.sol": { - "lastModificationDate": 1683011974687, - "contentHash": "15a42d344fe3c0c6ddfe772a74edc741", - "sourceName": "solidity/tests/interfaces/IBEP20.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IBEP20": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IBEP20.sol/IBEP20.json" - } - } - }, - "solidity/tests/interfaces/IERC20.sol": { - "lastModificationDate": 1679402354870, - "contentHash": "a2f5a69098785f473c27a18a1f51fd37", - "sourceName": "solidity/tests/interfaces/IERC20.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "IERC20": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "tests/interfaces/IERC20.sol/IERC20.json" - } - } - }, - "solidity/tests/interfaces/IQuoterV2.sol": { - "lastModificationDate": 1683011974687, - "contentHash": "73b38fd7b0aef635e8f58ccd586aefd8", - "sourceName": "solidity/tests/interfaces/IQuoterV2.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": ">=0.7.5", - "artifacts": { - "IQuoterV2": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "IQuoterV2.sol/IQuoterV2.json" - } - } - }, - "solidity/tests/interfaces/ProxyAdminLike.sol": { - "lastModificationDate": 1669967530448, - "contentHash": "7715c47b907d7b535267babb878564e8", - "sourceName": "solidity/tests/interfaces/ProxyAdminLike.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": ">=0.7.0, <0.9.0", - "artifacts": { - "ProxyAdminLike": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "ProxyAdminLike.sol/ProxyAdminLike.json" - } - } - }, - "solidity/tests/libs/LibAccount.sol": { - "lastModificationDate": 1679402354870, - "contentHash": "9268e0ac6176458835a659d71bcff161", - "sourceName": "solidity/tests/libs/LibAccount.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/tests/interfaces/IERC20.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "LibAccount": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "LibAccount.sol/LibAccount.json" - } - } - }, - "solidity/tests/libs/LibPCSV3PoolAddress.sol": { - "lastModificationDate": 1683526269296, - "contentHash": "1f83ede5f35f12e972e427a24000f25d", - "sourceName": "solidity/tests/libs/LibPCSV3PoolAddress.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": ">=0.5.0", - "artifacts": { - "LibPCSV3PoolAddress": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "LibPCSV3PoolAddress.sol/LibPCSV3PoolAddress.json" - } - } - }, - "solidity/tests/miniFL/MiniFL_AddPool.t.sol": { - "lastModificationDate": 1679402354882, - "contentHash": "5856b0e7d43f535b1dec2ad0c9d8e719", - "sourceName": "solidity/tests/miniFL/MiniFL_AddPool.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MiniFL_AddPoolTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_AddPool.t.sol/MiniFL_AddPoolTest.json" - } - } - }, - "solidity/tests/miniFL/MiniFL_BaseTest.t.sol": { - "lastModificationDate": 1679402354882, - "contentHash": "ecc9175a4dda81f3da77c81a802d2fc8", - "sourceName": "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MiniFL_BaseTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_BaseTest.t.sol/MiniFL_BaseTest.json" - } - } - }, - "solidity/tests/miniFL/MiniFL_Deposit.t.sol": { - "lastModificationDate": 1679402354882, - "contentHash": "f01e1554fbe2bf79bd0d62618053d8ff", - "sourceName": "solidity/tests/miniFL/MiniFL_Deposit.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MiniFL_DepositTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_Deposit.t.sol/MiniFL_DepositTest.json" - } - } - }, - "solidity/tests/miniFL/MiniFL_DepositWithRewarder.t.sol": { - "lastModificationDate": 1679402354883, - "contentHash": "e5d4f76ffe3447934db0db730858006f", - "sourceName": "solidity/tests/miniFL/MiniFL_DepositWithRewarder.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MiniFL_DepositWithRewarderTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_DepositWithRewarder.t.sol/MiniFL_DepositWithRewarderTest.json" - } - } - }, - "solidity/tests/miniFL/MiniFL_Harvest.t.sol": { - "lastModificationDate": 1679402354884, - "contentHash": "f4a7bd93ed8e7007838ae4b11c4c4786", - "sourceName": "solidity/tests/miniFL/MiniFL_Harvest.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/IERC20.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/libs/LibAccount.sol", - "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MiniFL_HarvestTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_Harvest.t.sol/MiniFL_HarvestTest.json" - } - } - }, - "solidity/tests/miniFL/MiniFL_HarvestWithRewarder.t.sol": { - "lastModificationDate": 1679402354884, - "contentHash": "f3b1d6dbe1f154bc22273cc3fc740cb8", - "sourceName": "solidity/tests/miniFL/MiniFL_HarvestWithRewarder.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/IERC20.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/libs/LibAccount.sol", - "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MiniFL_HarvestWithRewarderTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_HarvestWithRewarder.t.sol/MiniFL_HarvestWithRewarderTest.json" - } - } - }, - "solidity/tests/miniFL/MiniFL_PendingReward.t.sol": { - "lastModificationDate": 1679402354884, - "contentHash": "f3139976ed0da53fd084c93776639291", - "sourceName": "solidity/tests/miniFL/MiniFL_PendingReward.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/IERC20.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/libs/LibAccount.sol", - "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MiniFL_PendingRewardTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_PendingReward.t.sol/MiniFL_PendingRewardTest.json" - } - } - }, - "solidity/tests/miniFL/MiniFL_PendingRewardWithRewarder.t.sol": { - "lastModificationDate": 1679402354884, - "contentHash": "40c9263c8f21fe9515996b6a849a20f3", - "sourceName": "solidity/tests/miniFL/MiniFL_PendingRewardWithRewarder.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/IERC20.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/libs/LibAccount.sol", - "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MiniFL_PendingRewardWithRewarderTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_PendingRewardWithRewarder.t.sol/MiniFL_PendingRewardWithRewarderTest.json" - } - } - }, - "solidity/tests/miniFL/MiniFL_SetAlpacaPerSecond.t.sol": { - "lastModificationDate": 1679402354885, - "contentHash": "d1f6c0ab0b94290e4cdbd6450a729482", - "sourceName": "solidity/tests/miniFL/MiniFL_SetAlpacaPerSecond.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MiniFL_SetAlpacaPerSecondTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_SetAlpacaPerSecond.t.sol/MiniFL_SetAlpacaPerSecondTest.json" - } - } - }, - "solidity/tests/miniFL/MiniFL_SetMaxAlpacaPerSecond.t.sol": { - "lastModificationDate": 1679402354885, - "contentHash": "f1caa8ca7b159d2af1924985b6ae9cf4", - "sourceName": "solidity/tests/miniFL/MiniFL_SetMaxAlpacaPerSecond.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MiniFL_SetMaxAlpacaPerSecondTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_SetMaxAlpacaPerSecond.t.sol/MiniFL_SetMaxAlpacaPerSecondTest.json" - } - } - }, - "solidity/tests/miniFL/MiniFL_SetPool.t.sol": { - "lastModificationDate": 1679402354885, - "contentHash": "3900763af4f593fbd44740d6f4c86c19", - "sourceName": "solidity/tests/miniFL/MiniFL_SetPool.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MiniFL_SetPoolTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_SetPool.t.sol/MiniFL_SetPoolTest.json" - } - } - }, - "solidity/tests/miniFL/MiniFL_SetPoolRewarders.t.sol": { - "lastModificationDate": 1679402354886, - "contentHash": "762295b6e3ccb2d3d9953092529e7249", - "sourceName": "solidity/tests/miniFL/MiniFL_SetPoolRewarders.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MiniFL_SetPoolRewardersTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_SetPoolRewarders.t.sol/MiniFL_SetPoolRewardersTest.json" - } - } - }, - "solidity/tests/miniFL/MiniFL_SetWhitelistedCallers.t.sol": { - "lastModificationDate": 1679402354886, - "contentHash": "d5629b24a2fdb3850f31aadff88c8df5", - "sourceName": "solidity/tests/miniFL/MiniFL_SetWhitelistedCallers.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MiniFL_SetWhitelistedCallersTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_SetWhitelistedCallers.t.sol/MiniFL_SetWhitelistedCallersTest.json" - } - } - }, - "solidity/tests/miniFL/MiniFL_Withdraw.t.sol": { - "lastModificationDate": 1679402354887, - "contentHash": "54fc30e893cb4b84bf066e163bbed658", - "sourceName": "solidity/tests/miniFL/MiniFL_Withdraw.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MiniFL_WithdrawTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_Withdraw.t.sol/MiniFL_WithdrawTest.json" - } - } - }, - "solidity/tests/miniFL/MiniFL_WithdrawWithRewarder.t.sol": { - "lastModificationDate": 1679402354887, - "contentHash": "a275bc9b2acb860fb9a696808f0b78d6", - "sourceName": "solidity/tests/miniFL/MiniFL_WithdrawWithRewarder.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/miniFL/MiniFL_BaseTest.t.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MiniFL_WithdrawWithRewarderTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MiniFL_WithdrawWithRewarder.t.sol/MiniFL_WithdrawWithRewarderTest.json" - } - } - }, - "solidity/tests/mocks/MockAlpacaV2Oracle.sol": { - "lastModificationDate": 1683004944283, - "contentHash": "82d01dc382fb1cd9213de75f2e4f1425", - "sourceName": "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "MockAlpacaV2Oracle": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockAlpacaV2Oracle.sol/MockAlpacaV2Oracle.json" - } - } - }, - "solidity/tests/mocks/MockBadLiquidationStrategy.sol": { - "lastModificationDate": 1683011974688, - "contentHash": "2d89cb5b82ada16edaf1260941159d52", - "sourceName": "solidity/tests/mocks/MockBadLiquidationStrategy.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MockBadLiquidationStrategy": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockBadLiquidationStrategy.sol/MockBadLiquidationStrategy.json" - } - } - }, - "solidity/tests/mocks/MockChainLinkAggregator.sol": { - "lastModificationDate": 1679402354888, - "contentHash": "24362a4a6f94024e2d149adddbc0bacf", - "sourceName": "solidity/tests/mocks/MockChainLinkAggregator.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/oracle/interfaces/IAggregatorV3.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MockChainLinkAggregator": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockChainLinkAggregator.sol/MockChainLinkAggregator.json" - } - } - }, - "solidity/tests/mocks/MockChainLinkPriceOracle.sol": { - "lastModificationDate": 1679402354888, - "contentHash": "abd10870c33f03b979de4c739c5c74a8", - "sourceName": "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/oracle/interfaces/IPriceOracle.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MockChainLinkPriceOracle": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockChainLinkPriceOracle.sol/MockChainLinkPriceOracle.json" - } - } - }, - "solidity/tests/mocks/MockERC20.sol": { - "lastModificationDate": 1679402354889, - "contentHash": "40eb36bf0706be78d00eb4d888703a45", - "sourceName": "solidity/tests/mocks/MockERC20.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MockERC20": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockERC20.sol/MockERC20.json" - } - } - }, - "solidity/tests/mocks/MockFeeOnTransferToken.sol": { - "lastModificationDate": 1679402354889, - "contentHash": "1fd47fa6ae6f27303a46258d8cce12ea", - "sourceName": "solidity/tests/mocks/MockFeeOnTransferToken.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "solidity/tests/mocks/MockERC20.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MockFeeOnTransferToken": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockFeeOnTransferToken.sol/MockFeeOnTransferToken.json" - } - } - }, - "solidity/tests/mocks/MockFlashloan.sol": { - "lastModificationDate": 1683526269297, - "contentHash": "29697293a9ee14181d6b7f8893a76c27", - "sourceName": "solidity/tests/mocks/MockFlashloan.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MockFlashloan": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockFlashloan.sol/MockFlashloan.json" - } - } - }, - "solidity/tests/mocks/MockFlashloan_Redeposit.sol": { - "lastModificationDate": 1683526269297, - "contentHash": "70cf7fa0c5f57b81e8e1e22b4c239ac1", - "sourceName": "solidity/tests/mocks/MockFlashloan_Redeposit.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MockFlashloan_Redeposit": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockFlashloan_Redeposit.sol/MockFlashloan_Redeposit.json" - } - } - }, - "solidity/tests/mocks/MockFlashloan_Repurchase.sol": { - "lastModificationDate": 1683526269298, - "contentHash": "7b6ad082af9884cd4e18a0020f987dbe", - "sourceName": "solidity/tests/mocks/MockFlashloan_Repurchase.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MockFlashloan_Repurchase": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockFlashloan_Repurchase.sol/MockFlashloan_Repurchase.json" - } - } - }, - "solidity/tests/mocks/MockInterestModel.sol": { - "lastModificationDate": 1679402354890, - "contentHash": "4becfc795121e34db3aa2bedda86ede1", - "sourceName": "solidity/tests/mocks/MockInterestModel.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": "=0.8.19", - "artifacts": { - "MockInterestModel": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockInterestModel.sol/MockInterestModel.json" - } - } - }, - "solidity/tests/mocks/MockLPToken.sol": { - "lastModificationDate": 1679402354891, - "contentHash": "301c66b7ace7b0990c49e6503ddd265a", - "sourceName": "solidity/tests/mocks/MockLPToken.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MockLPToken": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockLPToken.sol/MockLPToken.json" - } - } - }, - "solidity/tests/mocks/MockLiquidationStrategy.sol": { - "lastModificationDate": 1679402354891, - "contentHash": "de8d41579b709f5f047b0e6e8827bbde", - "sourceName": "solidity/tests/mocks/MockLiquidationStrategy.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MockLiquidationStrategy": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockLiquidationStrategy.sol/MockLiquidationStrategy.json" - } - } - }, - "solidity/tests/mocks/MockMoneyMarket.sol": { - "lastModificationDate": 1683011974689, - "contentHash": "b38bd29e1fff99e84adfae884d29786c", - "sourceName": "solidity/tests/mocks/MockMoneyMarket.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/tests/interfaces/IERC20.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MockMoneyMarket": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockMoneyMarket.sol/MockMoneyMarket.json" - } - } - }, - "solidity/tests/mocks/MockRouter.sol": { - "lastModificationDate": 1679402354893, - "contentHash": "d946874bce302f2f72b82691c3df3f5f", - "sourceName": "solidity/tests/mocks/MockRouter.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "solidity/tests/interfaces/IERC20.sol", - "solidity/tests/utils/console.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MockRouter": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockRouter.sol/MockRouter.json" - } - } - }, - "solidity/tests/mocks/MockRouter02.sol": { - "lastModificationDate": 1679402354893, - "contentHash": "a8d67037b59b5c3b6244ea88521a8307", - "sourceName": "solidity/tests/mocks/MockRouter02.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/tests/interfaces/IERC20.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MockRouter02": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockRouter02.sol/MockRouter02.json" - } - } - }, - "solidity/tests/mocks/MockWNative.sol": { - "lastModificationDate": 1679402354894, - "contentHash": "e8c46e6400ddf1e8df79297ffad19c3e", - "sourceName": "solidity/tests/mocks/MockWNative.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/interfaces/IWNative.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MockWNative": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockWNative.sol/MockWNative.json" - } - } - }, - "solidity/tests/mocks/MockWNativeRelayer.sol": { - "lastModificationDate": 1679402354894, - "contentHash": "0931d143ca0d53c05864dc1ff51ce9f0", - "sourceName": "solidity/tests/mocks/MockWNativeRelayer.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/contracts/interfaces/IWNative.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MockWNativeRelayer": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MockWNativeRelayer.sol/MockWNativeRelayer.json" - } - } - }, - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol": { - "lastModificationDate": 1683614778802, - "contentHash": "2a9ed51df326d2edbfdea773dc619e2b", - "sourceName": "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_BaseTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_BaseTest.t.sol/MoneyMarket_BaseTest.json" - } - } - }, - "solidity/tests/money-market/MoneyMarket_Ownership.t.sol": { - "lastModificationDate": 1679402354895, - "contentHash": "41d95132fee92f851f868ebdbe793d39", - "sourceName": "solidity/tests/money-market/MoneyMarket_Ownership.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_OwnershipTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Ownership.t.sol/MoneyMarket_OwnershipTest.json" - } - } - }, - "solidity/tests/money-market/MoneyMarket_ReentrancyGuard.t.sol": { - "lastModificationDate": 1679402354895, - "contentHash": "6bcf5ed349ec32f189d8751759b3507b", - "sourceName": "solidity/tests/money-market/MoneyMarket_ReentrancyGuard.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MockAttacker": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_ReentrancyGuard.t.sol/MockAttacker.json" - }, - "MoneyMarket_ReentrancyGuardTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_ReentrancyGuard.t.sol/MoneyMarket_ReentrancyGuardTest.json" - } - } - }, - "solidity/tests/money-market/MoneyMarket_To18ConversionFactor.t.sol": { - "lastModificationDate": 1679402354895, - "contentHash": "9164ae0c44d5ee1a1bd271805ba90242", - "sourceName": "solidity/tests/money-market/MoneyMarket_To18ConversionFactor.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/helper/TestHelper.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_To18ConversionFactorTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_To18ConversionFactor.t.sol/MoneyMarket_To18ConversionFactorTest.json" - } - } - }, - "solidity/tests/money-market/account-manager/MoneyMarket_AccountManager.t.sol": { - "lastModificationDate": 1679402354896, - "contentHash": "859f75c7814bcc3bc4c8058d6062fca7", - "sourceName": "solidity/tests/money-market/account-manager/MoneyMarket_AccountManager.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interest-models/FixedInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_AccountManagerTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_AccountManager.t.sol/MoneyMarket_AccountManagerTest.json" - } - } - }, - "solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol": { - "lastModificationDate": 1683625397835, - "contentHash": "ed3137307cba40187f9eab8a6483f9a7", - "sourceName": "solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_Borrow.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interest-models/FixedInterestRateModel.sol", - "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol", - "solidity/contracts/money-market/interest-models/TripleSlopeModel7.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_AccrueInterest_Borrow": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_AccrueInterest_Borrow.t.sol/MoneyMarket_AccrueInterest_Borrow.json" - } - } - }, - "solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_RemoveCollateral.t.sol": { - "lastModificationDate": 1679402354897, - "contentHash": "65cbe4e33b9b8336856cd138a1bc51e7", - "sourceName": "solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_RemoveCollateral.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interest-models/FixedInterestRateModel.sol", - "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol", - "solidity/contracts/money-market/interest-models/TripleSlopeModel7.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_AccrueInterest_RemoveCollateralTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_AccrueInterest_RemoveCollateral.t.sol/MoneyMarket_AccrueInterest_RemoveCollateralTest.json" - } - } - }, - "solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_TransferCollatertal.t.sol": { - "lastModificationDate": 1679402354898, - "contentHash": "1ec56e5f41d7d16df4c4aced11450bb0", - "sourceName": "solidity/tests/money-market/accrue-interest/MoneyMarket_AccrueInterest_TransferCollatertal.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interest-models/FixedInterestRateModel.sol", - "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol", - "solidity/contracts/money-market/interest-models/TripleSlopeModel7.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_AccrueInterest_TransferCollatertalTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_AccrueInterest_TransferCollatertal.t.sol/MoneyMarket_AccrueInterest_TransferCollatertalTest.json" - } - } - }, - "solidity/tests/money-market/admin/MoneyMarket_Admin_LiquidationParams.t.sol": { - "lastModificationDate": 1679402354898, - "contentHash": "a96d36fc2b5647ae60f50a9c4af66c04", - "sourceName": "solidity/tests/money-market/admin/MoneyMarket_Admin_LiquidationParams.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_Admin_LiquidationParamsTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Admin_LiquidationParams.t.sol/MoneyMarket_Admin_LiquidationParamsTest.json" - } - } - }, - "solidity/tests/money-market/admin/MoneyMarket_Admin_OpenMarket.t.sol": { - "lastModificationDate": 1679402354898, - "contentHash": "6d05edd411b1dad4fc155e4edc7374ac", - "sourceName": "solidity/tests/money-market/admin/MoneyMarket_Admin_OpenMarket.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_Admin_OpenMarketTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Admin_OpenMarket.t.sol/MoneyMarket_Admin_OpenMarketTest.json" - } - } - }, - "solidity/tests/money-market/admin/MoneyMarket_Admin_SetLiquidationTreasury.t.sol": { - "lastModificationDate": 1679402354898, - "contentHash": "8ddb1201f086a0a6ccaf68494146a9aa", - "sourceName": "solidity/tests/money-market/admin/MoneyMarket_Admin_SetLiquidationTreasury.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_Admin_SetLiquidationTreasuryTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Admin_SetLiquidationTreasury.t.sol/MoneyMarket_Admin_SetLiquidationTreasuryTest.json" - } - } - }, - "solidity/tests/money-market/admin/MoneyMarket_Admin_SetMaxNumberOfToken.t.sol": { - "lastModificationDate": 1679402354899, - "contentHash": "fb8cdb8bbb9396eed80354525743dc3a", - "sourceName": "solidity/tests/money-market/admin/MoneyMarket_Admin_SetMaxNumberOfToken.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_Admin_SetMaxNumberOfTokenTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Admin_SetMaxNumberOfToken.t.sol/MoneyMarket_Admin_SetMaxNumberOfTokenTest.json" - } - } - }, - "solidity/tests/money-market/admin/MoneyMarket_Admin_SetMinUsedBorrowingPower.t.sol": { - "lastModificationDate": 1679402354899, - "contentHash": "1f5d78e8826f34552b67fa0a81fc17c9", - "sourceName": "solidity/tests/money-market/admin/MoneyMarket_Admin_SetMinUsedBorrowingPower.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_Admin_SetMinDebtSizeTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Admin_SetMinUsedBorrowingPower.t.sol/MoneyMarket_Admin_SetMinDebtSizeTest.json" - } - } - }, - "solidity/tests/money-market/admin/MoneyMarket_Admin_SetRepurchaseRewardModel.t.sol": { - "lastModificationDate": 1683011974691, - "contentHash": "932145203a3525ac7dfe5f3443b938b3", - "sourceName": "solidity/tests/money-market/admin/MoneyMarket_Admin_SetRepurchaseRewardModel.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/fee-models/FixedFeeModel100Bps.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_Admin_SetRepurchaseRewardModelTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Admin_SetRepurchaseRewardModel.t.sol/MoneyMarket_Admin_SetRepurchaseRewardModelTest.json" - } - } - }, - "solidity/tests/money-market/admin/MoneyMarket_Admin_SetTokenConfig.t.sol": { - "lastModificationDate": 1683011974692, - "contentHash": "1d7465e81f35496917ccedbd978f4ae9", - "sourceName": "solidity/tests/money-market/admin/MoneyMarket_Admin_SetTokenConfig.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_Admin_SetTokenConfigTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Admin_SetTokenConfig.t.sol/MoneyMarket_Admin_SetTokenConfigTest.json" - } - } - }, - "solidity/tests/money-market/admin/MoneyMarket_Admin_TopUpTokenReserves.t.sol": { - "lastModificationDate": 1679402354900, - "contentHash": "a323089d9330a557b94ca9f2c1587683", - "sourceName": "solidity/tests/money-market/admin/MoneyMarket_Admin_TopUpTokenReserves.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_Admin_TopUpTokenReserveTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Admin_TopUpTokenReserves.t.sol/MoneyMarket_Admin_TopUpTokenReserveTest.json" - } - } - }, - "solidity/tests/money-market/debt-tokens/DebtToken_BaseTest.t.sol": { - "lastModificationDate": 1679402354901, - "contentHash": "904a196da9ebd65f742b8f6510341bdf", - "sourceName": "solidity/tests/money-market/debt-tokens/DebtToken_BaseTest.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DebtToken_BaseTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "DebtToken_BaseTest.t.sol/DebtToken_BaseTest.json" - } - } - }, - "solidity/tests/money-market/debt-tokens/DebtToken_Burn.t.sol": { - "lastModificationDate": 1679402354901, - "contentHash": "c9cb840d6162b86050c5df6a227957e2", - "sourceName": "solidity/tests/money-market/debt-tokens/DebtToken_Burn.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/money-market/debt-tokens/DebtToken_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DebtToken_BurnTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "DebtToken_Burn.t.sol/DebtToken_BurnTest.json" - } - } - }, - "solidity/tests/money-market/debt-tokens/DebtToken_Initializer.t.sol": { - "lastModificationDate": 1679402354901, - "contentHash": "c1f25f70435b4b130a7732a3dcb1f6c5", - "sourceName": "solidity/tests/money-market/debt-tokens/DebtToken_Initializer.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/money-market/debt-tokens/DebtToken_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DebtToken_InitializerTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "DebtToken_Initializer.t.sol/DebtToken_InitializerTest.json" - } - } - }, - "solidity/tests/money-market/debt-tokens/DebtToken_Mint.t.sol": { - "lastModificationDate": 1679402354901, - "contentHash": "8cb2a843460c8fd360c297e7bdadd693", - "sourceName": "solidity/tests/money-market/debt-tokens/DebtToken_Mint.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/money-market/debt-tokens/DebtToken_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DebtToken_MintTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "DebtToken_Mint.t.sol/DebtToken_MintTest.json" - } - } - }, - "solidity/tests/money-market/debt-tokens/DebtToken_SetOkHolders.t.sol": { - "lastModificationDate": 1679402354902, - "contentHash": "b6f68817cb49bd013155102a6a131fd1", - "sourceName": "solidity/tests/money-market/debt-tokens/DebtToken_SetOkHolders.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/money-market/debt-tokens/DebtToken_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DebtToken_SetOkHoldersTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "DebtToken_SetOkHolders.t.sol/DebtToken_SetOkHoldersTest.json" - } - } - }, - "solidity/tests/money-market/debt-tokens/DebtToken_Transfer.t.sol": { - "lastModificationDate": 1679402354902, - "contentHash": "ad04e11b64d52df8f0ebdf19db2f1f77", - "sourceName": "solidity/tests/money-market/debt-tokens/DebtToken_Transfer.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/money-market/debt-tokens/DebtToken_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "DebtToken_TransferTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "DebtToken_Transfer.t.sol/DebtToken_TransferTest.json" - } - } - }, - "solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol": { - "lastModificationDate": 1683614778803, - "contentHash": "8bbf10776fb1290ff5851aea7a4e4bdf", - "sourceName": "solidity/tests/money-market/flashloan/MoneyMarket_Flashloan.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IAlpacaFlashloanCallback.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibReentrancyGuard.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockFlashloan.sol", - "solidity/tests/mocks/MockFlashloan_Redeposit.sol", - "solidity/tests/mocks/MockFlashloan_Repurchase.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_Flashloan": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Flashloan.t.sol/MoneyMarket_Flashloan.json" - } - } - }, - "solidity/tests/money-market/interest-bearing-tokens/InterestBearingTokenBaseTest.sol": { - "lastModificationDate": 1679402354902, - "contentHash": "3f6240b2a5cb128dd927b4aa25f204cd", - "sourceName": "solidity/tests/money-market/interest-bearing-tokens/InterestBearingTokenBaseTest.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "InterestBearingTokenBaseTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "InterestBearingTokenBaseTest.sol/InterestBearingTokenBaseTest.json" - } - } - }, - "solidity/tests/money-market/interest-bearing-tokens/InterestBearingToken_ERC4626.t.sol": { - "lastModificationDate": 1679402354902, - "contentHash": "191550d6caa2ba41451a6ea0f280c993", - "sourceName": "solidity/tests/money-market/interest-bearing-tokens/InterestBearingToken_ERC4626.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/money-market/interest-bearing-tokens/InterestBearingTokenBaseTest.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "InterestBearingToken_ERC4626Test": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "InterestBearingToken_ERC4626.t.sol/InterestBearingToken_ERC4626Test.json" - } - } - }, - "solidity/tests/money-market/interest-bearing-tokens/InterestBearingToken_Hooks.t.sol": { - "lastModificationDate": 1679402354903, - "contentHash": "62c41594633033ef649d74b73dac9e21", - "sourceName": "solidity/tests/money-market/interest-bearing-tokens/InterestBearingToken_Hooks.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/money-market/interest-bearing-tokens/InterestBearingTokenBaseTest.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "InterestBearingToken_HooksTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "InterestBearingToken_Hooks.t.sol/InterestBearingToken_HooksTest.json" - } - } - }, - "solidity/tests/money-market/interest-bearing-tokens/InterestBearingToken_Initializer.t.sol": { - "lastModificationDate": 1679402354903, - "contentHash": "b877664ba6da0aebf346c1ccbe55232a", - "sourceName": "solidity/tests/money-market/interest-bearing-tokens/InterestBearingToken_Initializer.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/money-market/interest-bearing-tokens/InterestBearingTokenBaseTest.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "InterestBearingToken_InitializerTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "InterestBearingToken_Initializer.t.sol/InterestBearingToken_InitializerTest.json" - } - } - }, - "solidity/tests/money-market/interest-bearing-tokens/InterestBearingToken_Transfer.t.sol": { - "lastModificationDate": 1679402354903, - "contentHash": "13d2a922acce0d3ab5809e5e8672a0f7", - "sourceName": "solidity/tests/money-market/interest-bearing-tokens/InterestBearingToken_Transfer.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/money-market/interest-bearing-tokens/InterestBearingTokenBaseTest.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "InterestBearingToken_TransferTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "InterestBearingToken_Transfer.t.sol/InterestBearingToken_TransferTest.json" - } - } - }, - "solidity/tests/money-market/interest-models/MMDoubleSlope1.t.sol": { - "lastModificationDate": 1683011974692, - "contentHash": "c95a270a2b656ec313199a3024942d4e", - "sourceName": "solidity/tests/money-market/interest-models/MMDoubleSlope1.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel1.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MMDoubleSlope1_Test": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMDoubleSlope1.t.sol/MMDoubleSlope1_Test.json" - } - } - }, - "solidity/tests/money-market/interest-models/MMDoubleSlope2.t.sol": { - "lastModificationDate": 1683011974693, - "contentHash": "35ada43251f2f3951b0598415fd4ba05", - "sourceName": "solidity/tests/money-market/interest-models/MMDoubleSlope2.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel2.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MMDoubleSlope2_Test": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMDoubleSlope2.t.sol/MMDoubleSlope2_Test.json" - } - } - }, - "solidity/tests/money-market/interest-models/MMDoubleSlope3.t.sol": { - "lastModificationDate": 1683011974694, - "contentHash": "0c8e55edaca71c2aa2c71d424a0a1a0d", - "sourceName": "solidity/tests/money-market/interest-models/MMDoubleSlope3.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interest-models/MMDoubleSlopeModel3.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MMDoubleSlope3_Test": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MMDoubleSlope3.t.sol/MMDoubleSlope3_Test.json" - } - } - }, - "solidity/tests/money-market/interest-models/TripleSlope0.t.sol": { - "lastModificationDate": 1683011974694, - "contentHash": "4820fed34a30800254c5bf3f5a654ff4", - "sourceName": "solidity/tests/money-market/interest-models/TripleSlope0.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interest-models/TripleSlopeModel0.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "TripleSlope0_Test": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "TripleSlope0.t.sol/TripleSlope0_Test.json" - } - } - }, - "solidity/tests/money-market/interest-models/TripleSlope6.t.sol": { - "lastModificationDate": 1679402354904, - "contentHash": "c119fe66c64d482986e85ddf80f87192", - "sourceName": "solidity/tests/money-market/interest-models/TripleSlope6.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "TripleSlope6_Test": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "TripleSlope6.t.sol/TripleSlope6_Test.json" - } - } - }, - "solidity/tests/money-market/interest-models/TripleSlope7.t.sol": { - "lastModificationDate": 1679402354905, - "contentHash": "e5feac588bbd7b03f8e0925277e0f6f4", - "sourceName": "solidity/tests/money-market/interest-models/TripleSlope7.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interest-models/TripleSlopeModel7.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "TripleSlope7_Test": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "TripleSlope7.t.sol/TripleSlope7_Test.json" - } - } - }, - "solidity/tests/money-market/lend/MoneyMarket_Lend_Deposit.t.sol": { - "lastModificationDate": 1679402354906, - "contentHash": "e1b2a6edaa1224a8a7791343b6c9ef3d", - "sourceName": "solidity/tests/money-market/lend/MoneyMarket_Lend_Deposit.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interest-models/FixedInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_Lend_DepositTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Lend_Deposit.t.sol/MoneyMarket_Lend_DepositTest.json" - } - } - }, - "solidity/tests/money-market/lend/MoneyMarket_Lend_Withdraw.t.sol": { - "lastModificationDate": 1679402354906, - "contentHash": "4261f5532d17e45635239760da837978", - "sourceName": "solidity/tests/money-market/lend/MoneyMarket_Lend_Withdraw.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockInterestModel.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_Lend_WithdrawTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Lend_Withdraw.t.sol/MoneyMarket_Lend_WithdrawTest.json" - } - } - }, - "solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_IbLiquidate.t.sol": { - "lastModificationDate": 1683011974698, - "contentHash": "0a73abbfa9751c1850bcea4229387203", - "sourceName": "solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_IbLiquidate.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/PancakeswapV2IbTokenLiquidationStrategy.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/IERC20.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockBadLiquidationStrategy.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockInterestModel.sol", - "solidity/tests/mocks/MockLPToken.sol", - "solidity/tests/mocks/MockLiquidationStrategy.sol", - "solidity/tests/mocks/MockRouter02.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_Liquidation_IbLiquidateTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Liquidation_IbLiquidate.t.sol/MoneyMarket_Liquidation_IbLiquidateTest.json" - } - } - }, - "solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_IbRepurchase.t.sol": { - "lastModificationDate": 1683011974699, - "contentHash": "37e5ac7d4a13f8ada4287cff6574517d", - "sourceName": "solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_IbRepurchase.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/fee-models/FixedFeeModel100Bps.sol", - "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_Liquidation_IbRepurchaseTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Liquidation_IbRepurchase.t.sol/MoneyMarket_Liquidation_IbRepurchaseTest.json" - } - } - }, - "solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_Liquidate.t.sol": { - "lastModificationDate": 1683011974699, - "contentHash": "dd19cd32578185d398043be78b2a7d63", - "sourceName": "solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_Liquidate.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockBadLiquidationStrategy.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockLiquidationStrategy.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_Liquidation_LiquidateTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Liquidation_Liquidate.t.sol/MoneyMarket_Liquidation_LiquidateTest.json" - } - } - }, - "solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_Repurchase.t.sol": { - "lastModificationDate": 1683011974701, - "contentHash": "c57d49b323b6b7cde0e92d7281dae6ff", - "sourceName": "solidity/tests/money-market/liquidation/MoneyMarket_Liquidation_Repurchase.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/fee-models/FixedFeeModel100Bps.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockInterestModel.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_Liquidation_RepurchaseTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Liquidation_Repurchase.t.sol/MoneyMarket_Liquidation_RepurchaseTest.json" - } - } - }, - "solidity/tests/money-market/liquidation-strategies/PancakeswapV2IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol": { - "lastModificationDate": 1683011974695, - "contentHash": "00da5e082cf6895b552a2a9e5d40ad84", - "sourceName": "solidity/tests/money-market/liquidation-strategies/PancakeswapV2IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/PancakeswapV2IbTokenLiquidationStrategy.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/IERC20.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockLPToken.sol", - "solidity/tests/mocks/MockMoneyMarket.sol", - "solidity/tests/mocks/MockRouter.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "PancakeswapV2IbTokenLiquidationStrategy_ExecuteLiquidationTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV2IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol/PancakeswapV2IbTokenLiquidationStrategy_ExecuteLiquidationTest.json" - } - } - }, - "solidity/tests/money-market/liquidation-strategies/PancakeswapV2IbTokenLiquidationStrategy_SetConfigs.t.sol": { - "lastModificationDate": 1679402354907, - "contentHash": "a466841fbfdd20bf1271757d061956dd", - "sourceName": "solidity/tests/money-market/liquidation-strategies/PancakeswapV2IbTokenLiquidationStrategy_SetConfigs.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/PancakeswapV2IbTokenLiquidationStrategy.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/IERC20.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockLPToken.sol", - "solidity/tests/mocks/MockRouter.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "PancakeswapV2IbTokenLiquidationStrategy_SetConfigsTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV2IbTokenLiquidationStrategy_SetConfigs.t.sol/PancakeswapV2IbTokenLiquidationStrategy_SetConfigsTest.json" - } - } - }, - "solidity/tests/money-market/liquidation-strategies/PancakeswapV2LiquidationStrategy_ExecuteLiquidation.t.sol": { - "lastModificationDate": 1683011974695, - "contentHash": "c2dcb5b394fa8c6eb3ff8a9db9250e11", - "sourceName": "solidity/tests/money-market/liquidation-strategies/PancakeswapV2LiquidationStrategy_ExecuteLiquidation.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/PancakeswapV2LiquidationStrategy.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/IERC20.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockLPToken.sol", - "solidity/tests/mocks/MockRouter.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "PancakeswapV2LiquidationStrategy_ExecuteLiquidationTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV2LiquidationStrategy_ExecuteLiquidation.t.sol/PancakeswapV2LiquidationStrategy_ExecuteLiquidationTest.json" - } - } - }, - "solidity/tests/money-market/liquidation-strategies/PancakeswapV2LiquidationStrategy_SetConfigs.t.sol": { - "lastModificationDate": 1679402354907, - "contentHash": "81121b37d3ad35f1b59dd1015dc3e761", - "sourceName": "solidity/tests/money-market/liquidation-strategies/PancakeswapV2LiquidationStrategy_SetConfigs.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/PancakeswapV2LiquidationStrategy.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IPancakeRouter02.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/IERC20.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockLPToken.sol", - "solidity/tests/mocks/MockRouter.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "PancakeswapV2LiquidationStrategy_SetConfigsTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV2LiquidationStrategy_SetConfigs.t.sol/PancakeswapV2LiquidationStrategy_SetConfigsTest.json" - } - } - }, - "solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol": { - "lastModificationDate": 1683614778804, - "contentHash": "3ce09a8dea635c4e3f4dff4e49fb9773", - "sourceName": "solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/reader/PCSV3PathReader.sol", - "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol", - "solidity/contracts/reader/libraries/LibBytes.sol", - "solidity/contracts/reader/libraries/LibPath.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/IBEP20.sol", - "solidity/tests/interfaces/IERC20.sol", - "solidity/tests/interfaces/IQuoterV2.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockMoneyMarket.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "BasePCSV3LiquidationForkTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "BasePCSV3LiquidationForkTest.sol/BasePCSV3LiquidationForkTest.json" - } - } - }, - "solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol": { - "lastModificationDate": 1683526269301, - "contentHash": "465b6e25fdbbd2a7fb5695e251e34326", - "sourceName": "solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/reader/PCSV3PathReader.sol", - "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol", - "solidity/contracts/reader/libraries/LibBytes.sol", - "solidity/contracts/reader/libraries/LibPath.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/IBEP20.sol", - "solidity/tests/interfaces/IERC20.sol", - "solidity/tests/interfaces/IQuoterV2.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockMoneyMarket.sol", - "solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol/PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.json" - } - } - }, - "solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol": { - "lastModificationDate": 1683614778804, - "contentHash": "ca62db5c737d3c9492e8b16b687f2863", - "sourceName": "solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/reader/PCSV3PathReader.sol", - "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol", - "solidity/contracts/reader/libraries/LibBytes.sol", - "solidity/contracts/reader/libraries/LibPath.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/IBEP20.sol", - "solidity/tests/interfaces/IERC20.sol", - "solidity/tests/interfaces/IQuoterV2.sol", - "solidity/tests/libs/LibPCSV3PoolAddress.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockMoneyMarket.sol", - "solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "PancakeswapV3IbTokenLiquidationStrategy_SetConfigs": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol/PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.json" - } - } - }, - "solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation.t.sol": { - "lastModificationDate": 1683614778806, - "contentHash": "65d6940511c493e545796b430fb36376", - "sourceName": "solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/reader/PCSV3PathReader.sol", - "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol", - "solidity/contracts/reader/libraries/LibBytes.sol", - "solidity/contracts/reader/libraries/LibPath.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/IBEP20.sol", - "solidity/tests/interfaces/IERC20.sol", - "solidity/tests/interfaces/IQuoterV2.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockMoneyMarket.sol", - "solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation.t.sol/PancakeswapV3TokenLiquidationStrategy_ExecuteLiquidation.json" - } - } - }, - "solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol": { - "lastModificationDate": 1683614778806, - "contentHash": "ed9eb097f93e42707aba1b0a04d69cab", - "sourceName": "solidity/tests/money-market/liquidation-strategiesV3/PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/PancakeswapV3TokenLiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/reader/PCSV3PathReader.sol", - "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol", - "solidity/contracts/reader/libraries/LibBytes.sol", - "solidity/contracts/reader/libraries/LibPath.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/IBEP20.sol", - "solidity/tests/interfaces/IERC20.sol", - "solidity/tests/interfaces/IQuoterV2.sol", - "solidity/tests/libs/LibPCSV3PoolAddress.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockMoneyMarket.sol", - "solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "PancakeswapV3TokenLiquidationStrategy_SetConfigs": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "PancakeswapV3TokenLiquidationStrategy_SetConfigs.t.sol/PancakeswapV3TokenLiquidationStrategy_SetConfigs.json" - } - } - }, - "solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol": { - "lastModificationDate": 1683614778807, - "contentHash": "36a2253a7d464e8b38dc35ee92ce5744", - "sourceName": "solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/reader/PCSV3PathReader.sol", - "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol", - "solidity/contracts/reader/libraries/LibBytes.sol", - "solidity/contracts/reader/libraries/LibPath.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/IBEP20.sol", - "solidity/tests/interfaces/IERC20.sol", - "solidity/tests/interfaces/IQuoterV2.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockMoneyMarket.sol", - "solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "WithReader_PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "WithReader_PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.t.sol/WithReader_PancakeswapV3IbTokenLiquidationStrategy_ExecuteLiquidation.json" - } - } - }, - "solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol": { - "lastModificationDate": 1683614778807, - "contentHash": "f9f56cac6aff2e32e332106e49710d46", - "sourceName": "solidity/tests/money-market/liquidation-strategiesV3/WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/PancakeswapV3IbTokenLiquidationStrategy_WithPathReader.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationStrategy.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IPancakeSwapRouterV3.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/money-market/interfaces/IPancakeV3SwapCallback.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/reader/PCSV3PathReader.sol", - "solidity/contracts/reader/interfaces/IUniSwapV3PathReader.sol", - "solidity/contracts/reader/libraries/LibBytes.sol", - "solidity/contracts/reader/libraries/LibPath.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/IBEP20.sol", - "solidity/tests/interfaces/IERC20.sol", - "solidity/tests/interfaces/IQuoterV2.sol", - "solidity/tests/libs/LibPCSV3PoolAddress.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockMoneyMarket.sol", - "solidity/tests/money-market/liquidation-strategiesV3/BasePCSV3LiquidationForkTest.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.t.sol/WithReader_PancakeswapV3IbTokenLiquidationStrategy_SetConfigs.json" - } - } - }, - "solidity/tests/money-market/non-collat/MoneyMarket_NonCollatBorrow_Borrow.t.sol": { - "lastModificationDate": 1679402354913, - "contentHash": "7298fa903b6c2ee24da3993ba7120a89", - "sourceName": "solidity/tests/money-market/non-collat/MoneyMarket_NonCollatBorrow_Borrow.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol", - "solidity/contracts/money-market/interest-models/TripleSlopeModel7.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_NonCollatBorrow_BorrowTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_NonCollatBorrow_Borrow.t.sol/MoneyMarket_NonCollatBorrow_BorrowTest.json" - } - } - }, - "solidity/tests/money-market/non-collat/MoneyMarket_NonCollatBorrow_Repay.t.sol": { - "lastModificationDate": 1679402354914, - "contentHash": "82fa8316c7ca161c6d55d2d897b4739c", - "sourceName": "solidity/tests/money-market/non-collat/MoneyMarket_NonCollatBorrow_Repay.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interest-models/TripleSlopeModel6.sol", - "solidity/contracts/money-market/interest-models/TripleSlopeModel7.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_NonCollatBorrow_RepayTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_NonCollatBorrow_Repay.t.sol/MoneyMarket_NonCollatBorrow_RepayTest.json" - } - } - }, - "solidity/tests/money-market/over-collat/MoneyMarket_Collateral_AddCollateral.t.sol": { - "lastModificationDate": 1679402354914, - "contentHash": "af93f14df4c4c48ed6a0478d717c5d25", - "sourceName": "solidity/tests/money-market/over-collat/MoneyMarket_Collateral_AddCollateral.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_Collateral_AddCollateralTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Collateral_AddCollateral.t.sol/MoneyMarket_Collateral_AddCollateralTest.json" - } - } - }, - "solidity/tests/money-market/over-collat/MoneyMarket_Collateral_RemoveCollateral.t.sol": { - "lastModificationDate": 1679402354915, - "contentHash": "a67f3581735f3531edb11b25a6fe6cf5", - "sourceName": "solidity/tests/money-market/over-collat/MoneyMarket_Collateral_RemoveCollateral.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_Collateral_RemoveCollateralTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Collateral_RemoveCollateral.t.sol/MoneyMarket_Collateral_RemoveCollateralTest.json" - } - } - }, - "solidity/tests/money-market/over-collat/MoneyMarket_Collateral_TransferCollateral.t.sol": { - "lastModificationDate": 1679402354915, - "contentHash": "009bbfe2518391ce20145627902cca0e", - "sourceName": "solidity/tests/money-market/over-collat/MoneyMarket_Collateral_TransferCollateral.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_Collateral_TransferCollateralTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_Collateral_TransferCollateral.t.sol/MoneyMarket_Collateral_TransferCollateralTest.json" - } - } - }, - "solidity/tests/money-market/over-collat/MoneyMarket_FeeOnTransferTokens.t.sol": { - "lastModificationDate": 1683011974701, - "contentHash": "b40c99854a63cd5b20aab5d271656baf", - "sourceName": "solidity/tests/money-market/over-collat/MoneyMarket_FeeOnTransferTokens.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/fee-models/FixedFeeModel100Bps.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/helper/TestHelper.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockFeeOnTransferToken.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_FeeOnTransferTokensTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_FeeOnTransferTokens.t.sol/MoneyMarket_FeeOnTransferTokensTest.json" - } - } - }, - "solidity/tests/money-market/over-collat/MoneyMarket_OverCollatBorrow_Borrow.t.sol": { - "lastModificationDate": 1679402354917, - "contentHash": "a834d66c2614752fb505f1d579bb42ba", - "sourceName": "solidity/tests/money-market/over-collat/MoneyMarket_OverCollatBorrow_Borrow.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibMoneyMarket01.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_OverCollatBorrow_BorrowTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_OverCollatBorrow_Borrow.t.sol/MoneyMarket_OverCollatBorrow_BorrowTest.json" - } - } - }, - "solidity/tests/money-market/over-collat/MoneyMarket_OverCollatBorrow_Repay.t.sol": { - "lastModificationDate": 1679402354917, - "contentHash": "354773153baf8ee0130367f25429642f", - "sourceName": "solidity/tests/money-market/over-collat/MoneyMarket_OverCollatBorrow_Repay.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interest-models/FixedInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMiniFL.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_OverCollatBorrow_RepayTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_OverCollatBorrow_Repay.t.sol/MoneyMarket_OverCollatBorrow_RepayTest.json" - } - } - }, - "solidity/tests/money-market/over-collat/MoneyMarket_OverCollatBorrow_RepayWithCollat.t.sol": { - "lastModificationDate": 1679402354918, - "contentHash": "d0066115e81346004a86a9ee9d2f752b", - "sourceName": "solidity/tests/money-market/over-collat/MoneyMarket_OverCollatBorrow_RepayWithCollat.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "script/deployments/libraries/LibMoneyMarketDeployment.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/DebtToken.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/facets/MMDiamondLoupeFacet.sol", - "solidity/contracts/money-market/interest-models/FixedInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IDebtToken.sol", - "solidity/contracts/money-market/interfaces/IERC165.sol", - "solidity/contracts/money-market/interfaces/IERC173.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/IFlashloanFacet.sol", - "solidity/contracts/money-market/interfaces/IInterestRateModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondCut.sol", - "solidity/contracts/money-market/interfaces/IMMDiamondLoupe.sol", - "solidity/contracts/money-market/interfaces/IMMOwnershipFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDiamond.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockAlpacaV2Oracle.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/money-market/MoneyMarket_BaseTest.t.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "MoneyMarket_OverCollatBorrow_RepayWithCollatTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "MoneyMarket_OverCollatBorrow_RepayWithCollat.t.sol/MoneyMarket_OverCollatBorrow_RepayWithCollatTest.json" - } - } - }, - "solidity/tests/oracle/AlpacaV2Oracle_Initialize.t.sol": { - "lastModificationDate": 1679402354918, - "contentHash": "4c634b9f1cfb7f3660586bc1941a4c92", - "sourceName": "solidity/tests/oracle/AlpacaV2Oracle_Initialize.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "AlpacaV2Oracle_InitializeTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "AlpacaV2Oracle_Initialize.t.sol/AlpacaV2Oracle_InitializeTest.json" - } - } - }, - "solidity/tests/oracle/AlpacaV2Oracle_IsStable.t.sol": { - "lastModificationDate": 1683004944298, - "contentHash": "35d6ef458eb0805a0a595473b4d496a8", - "sourceName": "solidity/tests/oracle/AlpacaV2Oracle_IsStable.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "AlpacaV2Oracle_IsStableTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "AlpacaV2Oracle_IsStable.t.sol/AlpacaV2Oracle_IsStableTest.json" - } - } - }, - "solidity/tests/oracle/AlpacaV2Oracle_SetTokenConfig.t.sol": { - "lastModificationDate": 1683004944299, - "contentHash": "263a3a7aa3738a8d4f6d88d0cd6e1348", - "sourceName": "solidity/tests/oracle/AlpacaV2Oracle_SetTokenConfig.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "AlpacaV2Oracle_SetTokenConfigTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "AlpacaV2Oracle_SetTokenConfig.t.sol/AlpacaV2Oracle_SetTokenConfigTest.json" - } - } - }, - "solidity/tests/oracle/AlpacaV2Oracle_WithPCSv3.sol": { - "lastModificationDate": 1683011974702, - "contentHash": "60196eb2b3fec537b65730cdee6a3e29", - "sourceName": "solidity/tests/oracle/AlpacaV2Oracle_WithPCSv3.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "AlpacaV2Oracle_WithPCSv3": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "AlpacaV2Oracle_WithPCSv3.sol/AlpacaV2Oracle_WithPCSv3.json" - } - } - }, - "solidity/tests/oracle/Oracle_SimpleOracleTest.t.sol": { - "lastModificationDate": 1679402354920, - "contentHash": "d6d0bfbef9f1397bf9875037357bd6ce", - "sourceName": "solidity/tests/oracle/Oracle_SimpleOracleTest.t.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "node_modules/@openzeppelin/contracts/access/Ownable.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol", - "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol", - "node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol", - "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "node_modules/@openzeppelin/contracts/utils/Address.sol", - "node_modules/@openzeppelin/contracts/utils/Context.sol", - "node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "node_modules/@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol", - "solidity/contracts/account-manager/MoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IMoneyMarketAccountManager.sol", - "solidity/contracts/interfaces/IWNative.sol", - "solidity/contracts/interfaces/IWNativeRelayer.sol", - "solidity/contracts/miniFL/MiniFL.sol", - "solidity/contracts/miniFL/Rewarder.sol", - "solidity/contracts/miniFL/interfaces/IMiniFL.sol", - "solidity/contracts/miniFL/interfaces/IRewarder.sol", - "solidity/contracts/money-market/InterestBearingToken.sol", - "solidity/contracts/money-market/interfaces/IAdminFacet.sol", - "solidity/contracts/money-market/interfaces/IBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/ICollateralFacet.sol", - "solidity/contracts/money-market/interfaces/IERC20.sol", - "solidity/contracts/money-market/interfaces/IFeeModel.sol", - "solidity/contracts/money-market/interfaces/ILendFacet.sol", - "solidity/contracts/money-market/interfaces/ILiquidationFacet.sol", - "solidity/contracts/money-market/interfaces/IMoneyMarket.sol", - "solidity/contracts/money-market/interfaces/INonCollatBorrowFacet.sol", - "solidity/contracts/money-market/interfaces/IViewFacet.sol", - "solidity/contracts/money-market/libraries/LibConstant.sol", - "solidity/contracts/money-market/libraries/LibDoublyLinkedList.sol", - "solidity/contracts/money-market/libraries/LibFullMath.sol", - "solidity/contracts/money-market/libraries/LibSafeToken.sol", - "solidity/contracts/money-market/libraries/LibShareUtil.sol", - "solidity/contracts/oracle/AlpacaV2Oracle.sol", - "solidity/contracts/oracle/OracleMedianizer.sol", - "solidity/contracts/oracle/SimplePriceOracle.sol", - "solidity/contracts/oracle/interfaces/IAggregatorV3.sol", - "solidity/contracts/oracle/interfaces/IAlpacaV2Oracle.sol", - "solidity/contracts/oracle/interfaces/IERC20.sol", - "solidity/contracts/oracle/interfaces/ILiquidityPair.sol", - "solidity/contracts/oracle/interfaces/IOracleMedianizer.sol", - "solidity/contracts/oracle/interfaces/IPancakeV3Pool.sol", - "solidity/contracts/oracle/interfaces/IPriceOracle.sol", - "solidity/contracts/oracle/interfaces/IRouterLike.sol", - "solidity/contracts/oracle/libraries/LibFullMath.sol", - "solidity/tests/base/BaseTest.sol", - "solidity/tests/base/DSTest.sol", - "solidity/tests/interfaces/ProxyAdminLike.sol", - "solidity/tests/mocks/MockChainLinkAggregator.sol", - "solidity/tests/mocks/MockChainLinkPriceOracle.sol", - "solidity/tests/mocks/MockERC20.sol", - "solidity/tests/mocks/MockWNative.sol", - "solidity/tests/mocks/MockWNativeRelayer.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": "=0.8.19", - "artifacts": { - "Oracle_SimpleOracleTest": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "Oracle_SimpleOracleTest.t.sol/Oracle_SimpleOracleTest.json" - } - } - }, - "solidity/tests/utils/Common.sol": { - "lastModificationDate": 1668666287281, - "contentHash": "209153632fd2cbf09580de0ff6889813", - "sourceName": "solidity/tests/utils/Common.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": ">=0.6.2, <0.9.0", - "artifacts": { - "CommonBase": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "Common.sol/CommonBase.json" - } - } - }, - "solidity/tests/utils/Components.sol": { - "lastModificationDate": 1677218020549, - "contentHash": "20eed79801bf0dbf3fb2912e9cb4af8b", - "sourceName": "solidity/tests/utils/Components.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": ">=0.6.2, <0.9.0", - "artifacts": { - "Components": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "Components.sol/Components.json" - } - } - }, - "solidity/tests/utils/Script.sol": { - "lastModificationDate": 1668666287282, - "contentHash": "cdffb76489503f2367f6dbbe29720b2f", - "sourceName": "solidity/tests/utils/Script.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/Common.sol", - "solidity/tests/utils/Components.sol", - "solidity/tests/utils/StdAssertions.sol", - "solidity/tests/utils/StdCheats.sol", - "solidity/tests/utils/StdMath.sol", - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/StdUtils.sol", - "solidity/tests/utils/VM.sol", - "solidity/tests/utils/console.sol", - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": ">=0.6.2, <0.9.0", - "artifacts": { - "Script": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "Script.sol/Script.json" - }, - "ScriptBase": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "Script.sol/ScriptBase.json" - } - } - }, - "solidity/tests/utils/StdAssertions.sol": { - "lastModificationDate": 1677218020549, - "contentHash": "dea76ad286917f5c27ac18ba143cc799", - "sourceName": "solidity/tests/utils/StdAssertions.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/tests/base/DSTest.sol", - "solidity/tests/utils/StdMath.sol" - ], - "versionRequirement": ">=0.6.2, <0.9.0", - "artifacts": { - "StdAssertions": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "StdAssertions.sol/StdAssertions.json" - } - } - }, - "solidity/tests/utils/StdCheats.sol": { - "lastModificationDate": 1668666287283, - "contentHash": "1ad362f72fe4ff78af46af7a4111bb91", - "sourceName": "solidity/tests/utils/StdCheats.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/tests/utils/StdStorage.sol", - "solidity/tests/utils/VM.sol" - ], - "versionRequirement": ">=0.6.2, <0.9.0", - "artifacts": { - "StdCheats": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "StdCheats.sol/StdCheats.json" - }, - "StdCheatsSafe": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "StdCheats.sol/StdCheatsSafe.json" - } - } - }, - "solidity/tests/utils/StdJson.sol": { - "lastModificationDate": 1675422693731, - "contentHash": "d8867145209faa33303743c3a2865499", - "sourceName": "solidity/tests/utils/StdJson.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/tests/utils/VM.sol" - ], - "versionRequirement": ">=0.6.0, <0.9.0", - "artifacts": { - "stdJson": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "StdJson.sol/stdJson.json" - } - } - }, - "solidity/tests/utils/StdMath.sol": { - "lastModificationDate": 1677218020549, - "contentHash": "62a9437426121a5a9a53f865bc196a59", - "sourceName": "solidity/tests/utils/StdMath.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": ">=0.6.2, <0.9.0", - "artifacts": { - "stdMath": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "StdMath.sol/stdMath.json" - } - } - }, - "solidity/tests/utils/StdStorage.sol": { - "lastModificationDate": 1668666287283, - "contentHash": "e1a063b6f12459b0731ef9b4b38dab5d", - "sourceName": "solidity/tests/utils/StdStorage.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/tests/utils/VM.sol" - ], - "versionRequirement": ">=0.6.2, <0.9.0", - "artifacts": { - "stdStorage": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "StdStorage.sol/stdStorage.json" - }, - "stdStorageSafe": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "StdStorage.sol/stdStorageSafe.json" - } - } - }, - "solidity/tests/utils/StdUtils.sol": { - "lastModificationDate": 1668666287284, - "contentHash": "bba5b39dcb6417c5f8ba97246aba6360", - "sourceName": "solidity/tests/utils/StdUtils.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [ - "solidity/tests/utils/console2.sol" - ], - "versionRequirement": ">=0.6.2, <0.9.0", - "artifacts": { - "StdUtils": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "StdUtils.sol/StdUtils.json" - } - } - }, - "solidity/tests/utils/VM.sol": { - "lastModificationDate": 1680497541286, - "contentHash": "fb95c1fa6b2b5632adea8410d2119936", - "sourceName": "solidity/tests/utils/VM.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": ">=0.6.2, <0.9.0", - "artifacts": { - "VM": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "VM.sol/VM.json" - }, - "VmSafe": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "VM.sol/VmSafe.json" - } - } - }, - "solidity/tests/utils/console.sol": { - "lastModificationDate": 1667383748204, - "contentHash": "2abedd37b83d3c31b960ca554b501a4d", - "sourceName": "solidity/tests/utils/console.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": ">=0.4.22, <0.9.0", - "artifacts": { - "console": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "console.sol/console.json" - } - } - }, - "solidity/tests/utils/console2.sol": { - "lastModificationDate": 1668666287286, - "contentHash": "d61478336bd6c934ea4a5f7e31a002bb", - "sourceName": "solidity/tests/utils/console2.sol", - "solcConfig": { - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "metadata": { - "bytecodeHash": "ipfs", - "appendCBOR": true - }, - "outputSelection": { - "*": { - "": [ - "ast" - ], - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ] - } - }, - "evmVersion": "london", - "libraries": {} - } - }, - "imports": [], - "versionRequirement": ">=0.4.22, <0.9.0", - "artifacts": { - "console2": { - "0.8.19+commit.7dd6d404.Darwin.appleclang": "console2.sol/console2.json" - } - } - } - } -} \ No newline at end of file From c052af0abf2874579af5bce37a463a248216e4f2 Mon Sep 17 00:00:00 2001 From: jr-alpaca Date: Fri, 12 May 2023 10:51:35 +0700 Subject: [PATCH 74/87] fix: test fail --- solidity/tests/miniFL/MiniFL_BaseTest.t.sol | 6 +++--- solidity/tests/miniFL/MiniFL_SetPoolRewarders.t.sol | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/solidity/tests/miniFL/MiniFL_BaseTest.t.sol b/solidity/tests/miniFL/MiniFL_BaseTest.t.sol index 8dac5b93..449d37a6 100644 --- a/solidity/tests/miniFL/MiniFL_BaseTest.t.sol +++ b/solidity/tests/miniFL/MiniFL_BaseTest.t.sol @@ -73,10 +73,10 @@ contract MiniFL_BaseTest is BaseTest { // | Pool | AllocPoint | // | DToken | 100 | function setupRewarder() internal { - rewarder1.addPool(90, wethPoolID, false); - rewarder1.addPool(10, dtokenPoolID, false); + rewarder1.addPool(wethPoolID, 90, false); + rewarder1.addPool(dtokenPoolID, 10, false); - rewarder2.addPool(100, wethPoolID, false); + rewarder2.addPool(wethPoolID, 100, false); address[] memory _poolWethRewarders = new address[](2); _poolWethRewarders[0] = address(rewarder1); diff --git a/solidity/tests/miniFL/MiniFL_SetPoolRewarders.t.sol b/solidity/tests/miniFL/MiniFL_SetPoolRewarders.t.sol index ecf6a419..a826ce6f 100644 --- a/solidity/tests/miniFL/MiniFL_SetPoolRewarders.t.sol +++ b/solidity/tests/miniFL/MiniFL_SetPoolRewarders.t.sol @@ -17,10 +17,10 @@ contract MiniFL_SetPoolRewardersTest is MiniFL_BaseTest { } function testCorrectness_WhenSetPoolRewarders() external { - rewarder1.addPool(90, wethPoolID, false); - rewarder1.addPool(10, dtokenPoolID, false); + rewarder1.addPool(wethPoolID, 90, false); + rewarder1.addPool(dtokenPoolID, 10, false); - rewarder2.addPool(100, wethPoolID, false); + rewarder2.addPool(wethPoolID, 100, false); address[] memory _poolWethRewarders = new address[](2); _poolWethRewarders[0] = address(rewarder1); From 3ebd77e0b50698aa1f66ba1a1b481dde989ff8a9 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Fri, 12 May 2023 14:03:06 +0700 Subject: [PATCH 75/87] fix: fix scripts --- .../SmartTreasury/config/SetAllocPointScript.s.sol | 9 +++++---- .../SmartTreasury/config/SetRevenueTokenScript.s.sol | 5 +++-- .../SmartTreasury/config/SetTreasuryAddressScript.s.sol | 8 +++++--- .../SmartTreasury/config/SetWhitelistesCallers.s.sol | 9 ++++----- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/script/deployments/SmartTreasury/config/SetAllocPointScript.s.sol b/script/deployments/SmartTreasury/config/SetAllocPointScript.s.sol index b6def29c..311629f5 100644 --- a/script/deployments/SmartTreasury/config/SetAllocPointScript.s.sol +++ b/script/deployments/SmartTreasury/config/SetAllocPointScript.s.sol @@ -21,12 +21,13 @@ contract SetAllocPointScript is BaseScript { Check all variables below before execute the deployment script */ - _startDeployerBroadcast(); + uint16 _revenueAllocPoint = 0; + uint16 _devAllocPoint = 0; + uint16 _burnAllocPoint = 0; - // TODO: how much for each? + _startDeployerBroadcast(); - // ISmartTreasury.AllocPoints memory _allocPoints = ISmartTreasury.AllocPoints(x,x,x); - // smartTreasury.setAllocPoints(_revenueAllocPoint, _devAllocPoint, _burnAllocPoint); + smartTreasury.setAllocPoints(_revenueAllocPoint, _devAllocPoint, _burnAllocPoint); _stopBroadcast(); } diff --git a/script/deployments/SmartTreasury/config/SetRevenueTokenScript.s.sol b/script/deployments/SmartTreasury/config/SetRevenueTokenScript.s.sol index 0709e30c..ea229d9f 100644 --- a/script/deployments/SmartTreasury/config/SetRevenueTokenScript.s.sol +++ b/script/deployments/SmartTreasury/config/SetRevenueTokenScript.s.sol @@ -20,10 +20,11 @@ contract SetRevenueTokenScript is BaseScript { Check all variables below before execute the deployment script */ + address _revenueToken = address(0); + _startDeployerBroadcast(); - // TODO: what's token? - // smartTreasury.setRevenueToken(_revenueToken); + smartTreasury.setRevenueToken(_revenueToken); _stopBroadcast(); } diff --git a/script/deployments/SmartTreasury/config/SetTreasuryAddressScript.s.sol b/script/deployments/SmartTreasury/config/SetTreasuryAddressScript.s.sol index 79e844b1..aa08aae0 100644 --- a/script/deployments/SmartTreasury/config/SetTreasuryAddressScript.s.sol +++ b/script/deployments/SmartTreasury/config/SetTreasuryAddressScript.s.sol @@ -20,11 +20,13 @@ contract SetTreasuryAddressScript is BaseScript { Check all variables below before execute the deployment script */ - _startDeployerBroadcast(); + address _revenueTreasury = address(0); + address _devTreasury = address(0); + address _burnTreasury = address(0); - // TODO: pending revenueTreasury, devTreasury, burnTreasury + _startDeployerBroadcast(); - // smartTreasury.setTreasuryAddresses(_revenueTreasury, _devTreasury, _burnTreasury); + smartTreasury.setTreasuryAddresses(_revenueTreasury, _devTreasury, _burnTreasury); _stopBroadcast(); } diff --git a/script/deployments/SmartTreasury/config/SetWhitelistesCallers.s.sol b/script/deployments/SmartTreasury/config/SetWhitelistesCallers.s.sol index 4134bc00..0bf199e4 100644 --- a/script/deployments/SmartTreasury/config/SetWhitelistesCallers.s.sol +++ b/script/deployments/SmartTreasury/config/SetWhitelistesCallers.s.sol @@ -20,13 +20,12 @@ contract SetWhitelistesCallers is BaseScript { Check all variables below before execute the deployment script */ - _startDeployerBroadcast(); + address[] memory _callers = new address[](1); + _callers[0] = deployerAddress; - // TODO: who is operator (keeper) + _startDeployerBroadcast(); - // address[] memory _callers = new address()[1]; - // _callers[0] = address(); - // smartTreasury.setWhitelistedCallers(_callers, true); + smartTreasury.setWhitelistedCallers(_callers, true); _stopBroadcast(); } From 3db17d290e659aac3e47a6dda16a761c0c1baba3 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Fri, 12 May 2023 14:03:22 +0700 Subject: [PATCH 76/87] fix: fix decimal cal, storage layout --- .../contracts/interfaces/ISmartTreasury.sol | 18 +-- .../smart-treasury/SmartTreasury.sol | 88 ++++++++----- .../SmartTreasury_Distribute.t.sol | 8 +- .../SmartTreasury_SetConfigs.t.sol | 116 ++++++++++-------- 4 files changed, 135 insertions(+), 95 deletions(-) diff --git a/solidity/contracts/interfaces/ISmartTreasury.sol b/solidity/contracts/interfaces/ISmartTreasury.sol index 417be15f..1831d421 100644 --- a/solidity/contracts/interfaces/ISmartTreasury.sol +++ b/solidity/contracts/interfaces/ISmartTreasury.sol @@ -3,21 +3,23 @@ pragma solidity 0.8.19; interface ISmartTreasury { error SmartTreasury_InvalidAddress(); + error SmartTreasury_InvalidAllocPoint(); + error SmartTreasury_SlippageTolerance(); error SmartTreasury_PathConfigNotFound(); error SmartTreasury_Unauthorized(); - struct AllocPoints { - uint16 revenueAllocPoint; - uint16 devAllocPoint; - uint16 burnAllocPoint; - } - function distribute(address[] calldata _tokens) external; - function setAllocPoints(AllocPoints calldata _allocPoints) external; + function setAllocPoints( + uint16 _revenueAllocPoint, + uint16 _devAllocPoint, + uint16 _burnAllocPoint + ) external; function setRevenueToken(address _revenueToken) external; + function setSlippageToleranceBps(uint16 _slippageToleranceBps) external; + function setTreasuryAddresses( address _revenueTreasury, address _devTreasury, @@ -25,4 +27,6 @@ interface ISmartTreasury { ) external; function setWhitelistedCallers(address[] calldata _callers, bool _allow) external; + + function withdraw(address[] calldata _tokens, address _to) external; } diff --git a/solidity/contracts/smart-treasury/SmartTreasury.sol b/solidity/contracts/smart-treasury/SmartTreasury.sol index 22603705..3187f1db 100644 --- a/solidity/contracts/smart-treasury/SmartTreasury.sol +++ b/solidity/contracts/smart-treasury/SmartTreasury.sol @@ -25,24 +25,30 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { event LogFailedDistribution(address _token, bytes _reason); event LogSetSlippageToleranceBps(uint256 _slippageToleranceBps); event LogSetTreasuryAddresses(address _revenueTreasury, address _devTreasury, address _burnTreasury); - event LogWithdraw(address _token, address _to); + event LogWithdraw(address _to, address _token, uint256 _amount); - AllocPoints public allocPoints; + address public constant USD = 0x115dffFFfffffffffFFFffffFFffFfFfFFFFfFff; + + // TODO: revise to address, allo address public revenueTreasury; + uint16 public revenueAllocPoint; + address public devTreasury; - address public burnTreasury; - address public revenueToken; - uint256 public slippageToleranceBps; + uint16 public devAllocPoint; - address public constant USD = 0x115dffFFfffffffffFFFffffFFffFfFfFFFFfFff; + address public burnTreasury; + uint16 public burnAllocPoint; - mapping(address => bool) public whitelistedCallers; + address public revenueToken; IPancakeSwapRouterV3 public router; IUniSwapV3PathReader public pathReader; IOracleMedianizer public oracleMedianizer; + mapping(address => bool) public whitelistedCallers; + uint16 public slippageToleranceBps; + modifier onlyWhitelisted() { if (!whitelistedCallers[msg.sender]) { revert SmartTreasury_Unauthorized(); @@ -79,23 +85,49 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { } /// @notice Set allocation points - /// @param _allocPoints A struct of treasury addresses - function setAllocPoints(AllocPoints calldata _allocPoints) external onlyWhitelisted { - allocPoints.revenueAllocPoint = _allocPoints.revenueAllocPoint; - allocPoints.devAllocPoint = _allocPoints.devAllocPoint; - allocPoints.burnAllocPoint = _allocPoints.burnAllocPoint; + /// @param _revenueAllocPoint revenue treasury allocation point + /// @param _devAllocPoint dev treasury allocation point + /// @param _burnAllocPoint burn treasury allocation point + function setAllocPoints( + uint16 _revenueAllocPoint, + uint16 _devAllocPoint, + uint16 _burnAllocPoint + ) external onlyWhitelisted { + if ( + _revenueAllocPoint > LibConstant.MAX_BPS || + _devAllocPoint > LibConstant.MAX_BPS || + _burnAllocPoint > LibConstant.MAX_BPS + ) { + revert SmartTreasury_InvalidAllocPoint(); + } - emit LogSetAllocPoints(_allocPoints.revenueAllocPoint, _allocPoints.devAllocPoint, _allocPoints.burnAllocPoint); + revenueAllocPoint = _revenueAllocPoint; + devAllocPoint = _devAllocPoint; + burnAllocPoint = _burnAllocPoint; + + emit LogSetAllocPoints(_revenueAllocPoint, _devAllocPoint, _burnAllocPoint); } /// @notice Set revenue token /// @dev Revenue token used for swapping before transfer to revenue treasury. /// @param _revenueToken An address of destination token. function setRevenueToken(address _revenueToken) external onlyWhitelisted { + IERC20(_revenueToken).decimals(); + revenueToken = _revenueToken; emit LogSetRevenueToken(_revenueToken); } + /// @notice Set Slippage tolerance (bps) + /// @param _slippageToleranceBps Amount of Slippage Tolerance (bps) + function setSlippageToleranceBps(uint16 _slippageToleranceBps) external onlyWhitelisted { + if (_slippageToleranceBps > LibConstant.MAX_BPS) { + revert SmartTreasury_SlippageTolerance(); + } + slippageToleranceBps = _slippageToleranceBps; + emit LogSetSlippageToleranceBps(_slippageToleranceBps); + } + /// @notice Set treasury addresses /// @dev The destination addresses for distribution /// @param _revenueTreasury An address of revenue treasury @@ -132,11 +164,6 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { } } - function setSlippageToleranceBps(uint256 _slippageToleranceBps) external onlyWhitelisted { - slippageToleranceBps = _slippageToleranceBps; - emit LogSetSlippageToleranceBps(_slippageToleranceBps); - } - function _getMinAmountOut( address _tokenIn, address _tokenOut, @@ -145,10 +172,10 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { (uint256 _tokenInPrice, ) = oracleMedianizer.getPrice(_tokenIn, USD); uint256 _minAmountOutUSD = (_amountIn * _tokenInPrice * (LibConstant.MAX_BPS - slippageToleranceBps)) / - (IERC20(_tokenIn).decimals() * LibConstant.MAX_BPS); + (10**IERC20(_tokenIn).decimals() * LibConstant.MAX_BPS); (uint256 _tokenOutPrice, ) = oracleMedianizer.getPrice(_tokenOut, USD); - _minAmountOut = ((_minAmountOutUSD * IERC20(_tokenOut).decimals()) / _tokenOutPrice); + _minAmountOut = ((_minAmountOutUSD * (10**IERC20(_tokenOut).decimals())) / _tokenOutPrice); } function _distribute(address _token) internal { @@ -160,19 +187,19 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { IERC20(_token).safeTransfer(revenueTreasury, _revenueAmount); } else { bytes memory _path = pathReader.paths(_token, revenueToken); - if (_path.length == 0) revert SmartTreasury_PathConfigNotFound(); - - uint256 _minAmountOut = _getMinAmountOut(_token, revenueToken, _revenueAmount); + if (_path.length == 0) { + revert SmartTreasury_PathConfigNotFound(); + } IPancakeSwapRouterV3.ExactInputParams memory params = IPancakeSwapRouterV3.ExactInputParams({ path: _path, recipient: revenueTreasury, deadline: block.timestamp, amountIn: _revenueAmount, - amountOutMinimum: _minAmountOut + amountOutMinimum: _getMinAmountOut(_token, revenueToken, _revenueAmount) }); - // Direct send to revenue treasury + // Swap and send to revenue treasury IERC20(_token).safeApprove(address(router), _revenueAmount); try router.exactInput(params) {} catch (bytes memory _reason) { emit LogFailedDistribution(_token, _reason); @@ -202,12 +229,9 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { ) { if (_amount != 0) { - AllocPoints memory _allocPoints = allocPoints; - uint64 _totalAllocPoint = _allocPoints.revenueAllocPoint + - _allocPoints.devAllocPoint + - _allocPoints.burnAllocPoint; - _devAmount = (_amount * _allocPoints.devAllocPoint) / _totalAllocPoint; - _burnAmount = (_amount * _allocPoints.burnAllocPoint) / _totalAllocPoint; + uint256 _totalAllocPoint = revenueAllocPoint + devAllocPoint + burnAllocPoint; + _devAmount = (_amount * devAllocPoint) / _totalAllocPoint; + _burnAmount = (_amount * burnAllocPoint) / _totalAllocPoint; unchecked { _revenueAmount = _amount - _devAmount - _burnAmount; } @@ -227,6 +251,6 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { function _withdraw(address _token, address _to) internal { uint256 _amount = IERC20(_token).balanceOf(address(this)); IERC20(_token).transfer(_to, _amount); - emit LogWithdraw(_token, _to); + emit LogWithdraw(_to, _token, _amount); } } diff --git a/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol b/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol index ca8a3442..143ae0bb 100644 --- a/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol +++ b/solidity/tests/smart-treasury/SmartTreasury_Distribute.t.sol @@ -38,8 +38,7 @@ contract SmartTreasury_Distribute is BaseFork { vm.startPrank(ALICE); // setup revenue token, alloc points and treasury address smartTreasury.setRevenueToken(address(usdt)); - ISmartTreasury.AllocPoints memory _allocPoints = ISmartTreasury.AllocPoints(100, 100, 100); - smartTreasury.setAllocPoints(_allocPoints); + smartTreasury.setAllocPoints(100, 100, 100); smartTreasury.setTreasuryAddresses(REVENUE_TREASURY, DEV_TREASURY, BURN_TREASURY); smartTreasury.setSlippageToleranceBps(100); vm.stopPrank(); @@ -199,6 +198,7 @@ contract SmartTreasury_Distribute is BaseFork { smartTreasury.distribute(_tokens); } + // TODO: incorrect logic, should not work function testCorrectness_DecimalDiff_ShouldWork() external { // tokenIn: doge (8 decimals) // tokenOut (revenue token): wbnb (18 decimals) @@ -213,11 +213,11 @@ contract SmartTreasury_Distribute is BaseFork { _paths[0] = abi.encodePacked(address(doge), uint24(2500), address(wbnb)); pathReader.setPaths(_paths); - // mock price doge on oracle + // mock price doge on oracle doge = 0.0715291 * 1e18 vm.mockCall( address(oracleMedianizer), abi.encodeWithSelector(IPriceOracle.getPrice.selector, address(doge), usd), - abi.encode(normalizeEther(0.0715291 ether, 18), 0) + abi.encode(0.0715291 ether, 0) ); // expect amount out diff --git a/solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol b/solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol index 07398bef..00504fe6 100644 --- a/solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol +++ b/solidity/tests/smart-treasury/SmartTreasury_SetConfigs.t.sol @@ -9,10 +9,6 @@ contract SmartTreasury_SetConfigs is BaseFork { super.setUp(); } - // test set whitelist - // - called by deployer - // - called by unauthorized user - function testCorrectness_SetWhitelist_ShouldWork() external { address[] memory _callers = new address[](1); _callers[0] = ALICE; @@ -22,95 +18,111 @@ contract SmartTreasury_SetConfigs is BaseFork { assertEq(smartTreasury.whitelistedCallers(ALICE), true, "Set Whitelist"); } - function testRevert_NonOwnerSetWhitelist_ShouldRevert() external { - address[] memory _callers = new address[](1); - _callers[0] = ALICE; - vm.expectRevert("Ownable: caller is not the owner"); - smartTreasury.setWhitelistedCallers(_callers, true); - } - - // test correctness revenue token - // - called by whitelisted user - // - called by unauthorized user - function testCorrectness_SetRevenueToken_ShouldWork() external { address[] memory _callers = new address[](1); _callers[0] = ALICE; vm.prank(DEPLOYER); smartTreasury.setWhitelistedCallers(_callers, true); - vm.prank(ALICE); + vm.startPrank(ALICE); smartTreasury.setRevenueToken(address(wbnb)); assertEq(smartTreasury.revenueToken(), address(wbnb), "Set Revenue Token"); + + // evm revert, since it will try to call address.decimals() which not existing + vm.expectRevert(); + smartTreasury.setRevenueToken(address(199)); + + vm.stopPrank(); } - function testRevert_UnauthorizedCallerSetRevenueToken_ShouldRevert() external { + function testCorrectness_SetAlloc_ShouldWork() external { address[] memory _callers = new address[](1); _callers[0] = ALICE; vm.prank(DEPLOYER); smartTreasury.setWhitelistedCallers(_callers, true); - vm.prank(BOB); - vm.expectRevert(ISmartTreasury.SmartTreasury_Unauthorized.selector); - smartTreasury.setRevenueToken(address(wbnb)); - } + vm.startPrank(ALICE); + smartTreasury.setAllocPoints(100, 100, 100); + assertEq(smartTreasury.revenueAllocPoint(), 100, "Set Revenue Allocation"); + assertEq(smartTreasury.devAllocPoint(), 100, "Set Dev Allocation"); + assertEq(smartTreasury.burnAllocPoint(), 100, "Set Burn Allocation"); - // test correctness allocation point - // - called by whitelisted user - // - called by unauthorized user + vm.expectRevert(ISmartTreasury.SmartTreasury_InvalidAllocPoint.selector); + smartTreasury.setAllocPoints(10001, 100, 100); + vm.expectRevert(ISmartTreasury.SmartTreasury_InvalidAllocPoint.selector); + smartTreasury.setAllocPoints(100, 10001, 100); + vm.expectRevert(ISmartTreasury.SmartTreasury_InvalidAllocPoint.selector); + smartTreasury.setAllocPoints(100, 100, 10001); - function testCorrectness_SetAlloc_ShouldWork() external { + vm.stopPrank(); + } + + function testCorrectness_SetTreasuryAddresses_ShouldWork() external { address[] memory _callers = new address[](1); _callers[0] = ALICE; vm.prank(DEPLOYER); smartTreasury.setWhitelistedCallers(_callers, true); - vm.prank(ALICE); - ISmartTreasury.AllocPoints memory _allocPoints = ISmartTreasury.AllocPoints(100, 100, 100); - smartTreasury.setAllocPoints(_allocPoints); - (uint16 _revenueAllocPoint, uint16 _devAllocPoint, uint16 _burnAllocPoint) = smartTreasury.allocPoints(); - assertEq(_revenueAllocPoint, 100, "Set Revenue Allocation"); - assertEq(_devAllocPoint, 100, "Set Dev Allocation"); - assertEq(_burnAllocPoint, 100, "Set Burn Allocation"); + vm.startPrank(ALICE); + smartTreasury.setTreasuryAddresses(REVENUE_TREASURY, DEV_TREASURY, BURN_TREASURY); + assertEq(smartTreasury.revenueTreasury(), REVENUE_TREASURY, "Set Revenue treasury address"); + assertEq(smartTreasury.devTreasury(), DEV_TREASURY, "Set Dev treasury address"); + assertEq(smartTreasury.burnTreasury(), BURN_TREASURY, "Set Burn treasury address"); + + vm.expectRevert(ISmartTreasury.SmartTreasury_InvalidAddress.selector); + smartTreasury.setTreasuryAddresses(address(0), DEV_TREASURY, BURN_TREASURY); + + vm.expectRevert(ISmartTreasury.SmartTreasury_InvalidAddress.selector); + smartTreasury.setTreasuryAddresses(REVENUE_TREASURY, address(0), BURN_TREASURY); + + vm.expectRevert(ISmartTreasury.SmartTreasury_InvalidAddress.selector); + smartTreasury.setTreasuryAddresses(REVENUE_TREASURY, DEV_TREASURY, address(0)); + + vm.stopPrank(); } - function testRevert_UnauthorizedCallerSetAlloc_ShouldRevert() external { + function testCorrectness_SetSlippageTolerances_ShouldWork() external { address[] memory _callers = new address[](1); _callers[0] = ALICE; vm.prank(DEPLOYER); smartTreasury.setWhitelistedCallers(_callers, true); - ISmartTreasury.AllocPoints memory _allocPoints = ISmartTreasury.AllocPoints(100, 100, 100); - vm.prank(BOB); - vm.expectRevert(ISmartTreasury.SmartTreasury_Unauthorized.selector); - smartTreasury.setAllocPoints(_allocPoints); - } + vm.startPrank(ALICE); + smartTreasury.setSlippageToleranceBps(100); + assertEq(smartTreasury.slippageToleranceBps(), 100, "Slippage tolerance"); - // test correctness treasury address - // - called by whitelisted user - // - called by unauthorized user + vm.expectRevert(ISmartTreasury.SmartTreasury_SlippageTolerance.selector); + smartTreasury.setSlippageToleranceBps(10001); - function testCorrectness_SetTreasuryAddresses_ShouldWork() external { + vm.stopPrank(); + } + + function testRevert_UnauthorizedCallerCallSetter() external { address[] memory _callers = new address[](1); _callers[0] = ALICE; vm.prank(DEPLOYER); smartTreasury.setWhitelistedCallers(_callers, true); - vm.prank(ALICE); + vm.startPrank(BOB); + vm.expectRevert(ISmartTreasury.SmartTreasury_Unauthorized.selector); + smartTreasury.setRevenueToken(address(wbnb)); + + vm.expectRevert(ISmartTreasury.SmartTreasury_Unauthorized.selector); + smartTreasury.setAllocPoints(100, 100, 100); + + vm.expectRevert(ISmartTreasury.SmartTreasury_Unauthorized.selector); smartTreasury.setTreasuryAddresses(REVENUE_TREASURY, DEV_TREASURY, BURN_TREASURY); - assertEq(smartTreasury.revenueTreasury(), REVENUE_TREASURY, "Set Revenue treasury address"); - assertEq(smartTreasury.devTreasury(), DEV_TREASURY, "Set Dev treasury address"); - assertEq(smartTreasury.burnTreasury(), BURN_TREASURY, "Set Burn treasury address"); + + vm.expectRevert(ISmartTreasury.SmartTreasury_Unauthorized.selector); + smartTreasury.setSlippageToleranceBps(100); + + vm.stopPrank(); } - function testRevert_UnauthorizedCallerSetTreasuryAddresses_ShouldRevert() external { + function testRevert_NonOwnerSetWhitelist_ShouldRevert() external { address[] memory _callers = new address[](1); _callers[0] = ALICE; - vm.prank(DEPLOYER); + vm.expectRevert("Ownable: caller is not the owner"); smartTreasury.setWhitelistedCallers(_callers, true); - - vm.prank(BOB); - vm.expectRevert(ISmartTreasury.SmartTreasury_Unauthorized.selector); - smartTreasury.setTreasuryAddresses(REVENUE_TREASURY, DEV_TREASURY, BURN_TREASURY); } } From 3c25cabd8a39046cad2e14a2bca38cc614434385 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Fri, 12 May 2023 14:04:23 +0700 Subject: [PATCH 77/87] fix: fix script --- script/deployments/SmartTreasury/deploy/SmartTreasury.s.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/script/deployments/SmartTreasury/deploy/SmartTreasury.s.sol b/script/deployments/SmartTreasury/deploy/SmartTreasury.s.sol index b99b7a70..a32155dc 100644 --- a/script/deployments/SmartTreasury/deploy/SmartTreasury.s.sol +++ b/script/deployments/SmartTreasury/deploy/SmartTreasury.s.sol @@ -37,7 +37,7 @@ contract DeploySmartTreasuryScript is BaseScript { _stopBroadcast(); - _writeJson(vm.toString(smartTreasuryImplementation), ".moneyMarket.smartTreasury.implementation"); - _writeJson(vm.toString(smartTreasuryProxy), ".moneyMarket.smartTreasury.proxy"); + _writeJson(vm.toString(smartTreasuryImplementation), ".smartTreasury.implementation"); + _writeJson(vm.toString(smartTreasuryProxy), ".smartTreasury.proxy"); } } From 74768c0feba7fa349cb0849bc820ac4e34bc5859 Mon Sep 17 00:00:00 2001 From: jr-alpaca Date: Fri, 12 May 2023 14:19:42 +0700 Subject: [PATCH 78/87] fix: typo --- script/deployments/Rewarder/config/AddPool.s.sol | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/script/deployments/Rewarder/config/AddPool.s.sol b/script/deployments/Rewarder/config/AddPool.s.sol index 147a0095..788c3c92 100644 --- a/script/deployments/Rewarder/config/AddPool.s.sol +++ b/script/deployments/Rewarder/config/AddPool.s.sol @@ -55,16 +55,16 @@ contract SetPoolScript is BaseScript { _stopBroadcast(); } - function addIbPool(address _token, uint256 _allocaPoint) internal { + function addIbPool(address _token, uint256 _allocPoint) internal { address _ibToken = moneyMarket.getIbTokenFromToken(_token); uint256 _pid = moneyMarket.getMiniFLPoolIdOfToken(_ibToken); - addRewarderPool(_pid, _allocaPoint); + addRewarderPool(_pid, _allocPoint); } - function addDebtPool(address _token, uint256 _allocaPoint) internal { + function addDebtPool(address _token, uint256 _allocPoint) internal { address _debtToken = moneyMarket.getDebtTokenFromToken(_token); uint256 _pid = moneyMarket.getMiniFLPoolIdOfToken(_debtToken); - addRewarderPool(_pid, _allocaPoint); + addRewarderPool(_pid, _allocPoint); } function addRewarderPool(uint256 _pid, uint256 _allocPoint) internal { From 11639c95e3677b405a20c6c24d61634e549f9f06 Mon Sep 17 00:00:00 2001 From: m100alpaca Date: Fri, 12 May 2023 14:40:07 +0700 Subject: [PATCH 79/87] chore: revise comment --- solidity/contracts/smart-treasury/SmartTreasury.sol | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/solidity/contracts/smart-treasury/SmartTreasury.sol b/solidity/contracts/smart-treasury/SmartTreasury.sol index 3187f1db..b41bd5d9 100644 --- a/solidity/contracts/smart-treasury/SmartTreasury.sol +++ b/solidity/contracts/smart-treasury/SmartTreasury.sol @@ -29,8 +29,6 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { address public constant USD = 0x115dffFFfffffffffFFFffffFFffFfFfFFFFfFff; - // TODO: revise to address, allo - address public revenueTreasury; uint16 public revenueAllocPoint; @@ -112,6 +110,7 @@ contract SmartTreasury is OwnableUpgradeable, ISmartTreasury { /// @dev Revenue token used for swapping before transfer to revenue treasury. /// @param _revenueToken An address of destination token. function setRevenueToken(address _revenueToken) external onlyWhitelisted { + // Sanity check IERC20(_revenueToken).decimals(); revenueToken = _revenueToken; From ab4de366818c3c216c9c993519b4d6b1f54c1a29 Mon Sep 17 00:00:00 2001 From: jr-alpaca Date: Mon, 15 May 2023 15:02:18 +0700 Subject: [PATCH 80/87] chore: typo --- script/deployments/MiniFL/config/SetPool.s.sol | 8 ++++---- script/deployments/Rewarder/config/SetPool.s.sol | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/script/deployments/MiniFL/config/SetPool.s.sol b/script/deployments/MiniFL/config/SetPool.s.sol index 9bb5a5da..a5bceb50 100644 --- a/script/deployments/MiniFL/config/SetPool.s.sol +++ b/script/deployments/MiniFL/config/SetPool.s.sol @@ -51,16 +51,16 @@ contract SetPoolScript is BaseScript { _stopBroadcast(); } - function setIbAllocPoint(address _token, uint256 _allocaPoint) internal { + function setIbAllocPoint(address _token, uint256 _allocPoint) internal { address _ibToken = moneyMarket.getIbTokenFromToken(_token); uint256 _pid = moneyMarket.getMiniFLPoolIdOfToken(_ibToken); - setPoolAllocPoint(_pid, _allocaPoint); + setPoolAllocPoint(_pid, _allocPoint); } - function setDebtAllocPoint(address _token, uint256 _allocaPoint) internal { + function setDebtAllocPoint(address _token, uint256 _allocPoint) internal { address _debtToken = moneyMarket.getDebtTokenFromToken(_token); uint256 _pid = moneyMarket.getMiniFLPoolIdOfToken(_debtToken); - setPoolAllocPoint(_pid, _allocaPoint); + setPoolAllocPoint(_pid, _allocPoint); } function setPoolAllocPoint(uint256 _pid, uint256 _allocPoint) internal { diff --git a/script/deployments/Rewarder/config/SetPool.s.sol b/script/deployments/Rewarder/config/SetPool.s.sol index 821fb6b7..d6866943 100644 --- a/script/deployments/Rewarder/config/SetPool.s.sol +++ b/script/deployments/Rewarder/config/SetPool.s.sol @@ -54,16 +54,16 @@ contract SetPoolScript is BaseScript { _stopBroadcast(); } - function setIbAllocPoint(address _token, uint256 _allocaPoint) internal { + function setIbAllocPoint(address _token, uint256 _allocPoint) internal { address _ibToken = moneyMarket.getIbTokenFromToken(_token); uint256 _pid = moneyMarket.getMiniFLPoolIdOfToken(_ibToken); - setPoolAllocPoint(_pid, _allocaPoint); + setPoolAllocPoint(_pid, _allocPoint); } - function setDebtAllocPoint(address _token, uint256 _allocaPoint) internal { + function setDebtAllocPoint(address _token, uint256 _allocPoint) internal { address _debtToken = moneyMarket.getDebtTokenFromToken(_token); uint256 _pid = moneyMarket.getMiniFLPoolIdOfToken(_debtToken); - setPoolAllocPoint(_pid, _allocaPoint); + setPoolAllocPoint(_pid, _allocPoint); } function setPoolAllocPoint(uint256 _pid, uint256 _allocPoint) internal { From c3094aa27001d5f9366aa17a465d577e716717b0 Mon Sep 17 00:00:00 2001 From: jr-alpaca Date: Mon, 15 May 2023 16:59:08 +0700 Subject: [PATCH 81/87] chore: new mm reader address --- .mainnet.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.mainnet.json b/.mainnet.json index 2d9bea3e..e09255dc 100644 --- a/.mainnet.json +++ b/.mainnet.json @@ -195,7 +195,7 @@ } ] }, - "moneyMarketReader": "0x1d3cb2f91207afDA9E9baB89caDE1a4c3222cf6a", + "moneyMarketReader": "0x4913DEC75cC0e061Ba78ebbDb2584905760be4C6", "smartTreasury": { "implementation": "", "proxy": "" @@ -203,4 +203,4 @@ "pathReader": { "v3": "" } -} +} \ No newline at end of file From f9842dc0298f0ea87e9a1d8fbd7ec31b8db29241 Mon Sep 17 00:00:00 2001 From: jr-alpaca Date: Wed, 17 May 2023 10:36:21 +0700 Subject: [PATCH 82/87] chore: add high token --- .mainnet.json | 3 ++- script/BaseScript.sol | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.mainnet.json b/.mainnet.json index e09255dc..65e2d044 100644 --- a/.mainnet.json +++ b/.mainnet.json @@ -12,6 +12,7 @@ "doge": "0xbA2aE424d960c26247Dd6c32edC70B295c744C43", "dot": "0x7083609fCE4d1d8Dc0C979AAb8c869Ea2C873402", "eth": "0x2170Ed0880ac9A755fd29B2688956BD959F933F8", + "high": "0x5f4Bde007Dc06b867f86EBFE4802e34A1fFEEd63", "matic": "0xCC42724C6683B7E57334c4E856f4c9965ED682bD", "tusd": "0x14016E85a25aeb13065688cAFB43044C2ef86784", "usdt": "0x55d398326f99059fF775485246999027B3197955", @@ -203,4 +204,4 @@ "pathReader": { "v3": "" } -} \ No newline at end of file +} diff --git a/script/BaseScript.sol b/script/BaseScript.sol index b3f3959d..e00c14a3 100644 --- a/script/BaseScript.sol +++ b/script/BaseScript.sol @@ -70,6 +70,7 @@ abstract contract BaseScript is Script { address internal doge; address internal dot; address internal eth; + address internal high; address internal matic; address internal tusd; address internal usdt; @@ -134,6 +135,7 @@ abstract contract BaseScript is Script { doge = abi.decode(configJson.parseRaw(".tokens.doge"), (address)); dot = abi.decode(configJson.parseRaw(".tokens.dot"), (address)); eth = abi.decode(configJson.parseRaw(".tokens.eth"), (address)); + high = abi.decode(configJson.parseRaw(".tokens.high"), (address)); matic = abi.decode(configJson.parseRaw(".tokens.matic"), (address)); tusd = abi.decode(configJson.parseRaw(".tokens.tusd"), (address)); usdt = abi.decode(configJson.parseRaw(".tokens.usdt"), (address)); From d488fb317d07f60fb828d5687a76ea92f608245b Mon Sep 17 00:00:00 2001 From: jr-alpaca Date: Wed, 17 May 2023 14:05:28 +0700 Subject: [PATCH 83/87] feat: high rewarder script --- deploy/file-helper.ts/config-file.helper.ts | 17 +++- deploy/interfaces.ts | 9 ++- .../MiniFL/config/SetPoolRewarders.s.sol | 50 +++++++++++- .../config/SetPaths.s.sol | 79 ++++++++++++++++--- .../deployments/Rewarder/config/AddPool.s.sol | 23 +----- .../Rewarder/deploy/Rewarder.s.sol | 22 +++++- .../scripts/set-mini-fl-pool-rewarders.ts | 24 ++++++ type-script/scripts/write-rewarder.ts | 21 +++-- 8 files changed, 197 insertions(+), 48 deletions(-) create mode 100644 type-script/scripts/set-mini-fl-pool-rewarders.ts diff --git a/deploy/file-helper.ts/config-file.helper.ts b/deploy/file-helper.ts/config-file.helper.ts index 93e1d808..a5d6ea3d 100644 --- a/deploy/file-helper.ts/config-file.helper.ts +++ b/deploy/file-helper.ts/config-file.helper.ts @@ -1,4 +1,4 @@ -import { Config, Market, MiniFLPool } from "../interfaces"; +import { Config, Market, MiniFLPool, Rewarder } from "../interfaces"; import MainnetConfig from "../../.mainnet.json"; import * as fs from "fs"; @@ -20,6 +20,21 @@ export class ConfigFileHelper { this._writeConfigFile(this.config); } + public setMiniFLPoolRewarders(pid: number, rewarderAddresses: string[]): void { + const miniFLPool = this.config.miniFL.pools.find((pool) => pool.id === Number(pid))!; + + const rewarders = rewarderAddresses.map( + (rewarder) => this.config.rewarders.find((configRewarder) => configRewarder.address === rewarder)! + ); + miniFLPool.rewarders = rewarders; + this._writeConfigFile(this.config); + } + + public addRewarder(rewarder: Rewarder): void { + this.config.rewarders.push(rewarder); + this._writeConfigFile(this.config); + } + public getConfig() { return this.config; } diff --git a/deploy/interfaces.ts b/deploy/interfaces.ts index 6a57b818..24e5b991 100644 --- a/deploy/interfaces.ts +++ b/deploy/interfaces.ts @@ -1,6 +1,7 @@ export interface Config { moneyMarket: MoneyMarket; miniFL: MiniFL; + rewarders: Rewarder[]; } export interface MoneyMarket { @@ -38,7 +39,13 @@ export interface MiniFLPool { id: number; name: string; stakingToken: string; - rewarders: string[]; + rewarders: Rewarder[]; +} + +export interface Rewarder { + name: string; + address: string; + rewardToken: string; } export type AssetTier = 0 | 1 | 2 | 3; diff --git a/script/deployments/MiniFL/config/SetPoolRewarders.s.sol b/script/deployments/MiniFL/config/SetPoolRewarders.s.sol index 9c2e799f..bd3c43c7 100644 --- a/script/deployments/MiniFL/config/SetPoolRewarders.s.sol +++ b/script/deployments/MiniFL/config/SetPoolRewarders.s.sol @@ -4,6 +4,13 @@ pragma solidity 0.8.19; import "../../../BaseScript.sol"; contract SetPoolRewardersScript is BaseScript { + struct SetPoolRewarderInput { + uint256 pId; + address[] rewarders; + } + + SetPoolRewarderInput[] setPoolRewarderInputs; + function run() public { /* ░██╗░░░░░░░██╗░█████╗░██████╗░███╗░░██╗██╗███╗░░██╗░██████╗░ @@ -15,15 +22,52 @@ contract SetPoolRewardersScript is BaseScript { Check all variables below before execute the deployment script */ - uint256 _pid = 1; address[] memory rewarders = new address[](1); - rewarders[0] = 0x0886B13E413bc0fBAeDB76b0855CA5F2dae82E99; + rewarders[0] = address(0); + + setIbPoolRewarders(high, rewarders); + setDebtPoolRewarders(high, rewarders); //---- execution ----// _startDeployerBroadcast(); - miniFL.setPoolRewarders(_pid, rewarders); + for (uint256 i; i < setPoolRewarderInputs.length; i++) { + miniFL.setPoolRewarders(setPoolRewarderInputs[i].pId, setPoolRewarderInputs[i].rewarders); + } _stopBroadcast(); } + + function setIbPoolRewarders(address _token, address[] memory _rewarders) internal { + address _ibToken = moneyMarket.getIbTokenFromToken(_token); + uint256 _pId = moneyMarket.getMiniFLPoolIdOfToken(_ibToken); + setPoolRewarders(_pId, _rewarders); + } + + function setDebtPoolRewarders(address _token, address[] memory _rewarders) internal { + address _debtToken = moneyMarket.getDebtTokenFromToken(_token); + uint256 _pId = moneyMarket.getMiniFLPoolIdOfToken(_debtToken); + setPoolRewarders(_pId, _rewarders); + } + + function setPoolRewarders(uint256 _pId, address[] memory _rewarders) internal { + setPoolRewarderInputs.push(SetPoolRewarderInput({ pId: _pId, rewarders: _rewarders })); + } + + function writeRewarderToMiniFLPool(uint256 _pId, address[] memory _rewarders) internal { + uint256 rewardersLength = _rewarders.length; + string[] memory cmds = new string[](6 + rewardersLength); + cmds[0] = "npx"; + cmds[1] = "ts-node"; + cmds[2] = "./type-script/scripts/set-mini-fl-pool-rewarders.ts"; + cmds[3] = "--pid"; + cmds[4] = vm.toString(_pId); + cmds[5] = "--rewarderAddress"; + + for (uint256 i; i < rewardersLength; i++) { + cmds[6 + i] = vm.toString(_rewarder); + } + + vm.ffi(cmds); + } } diff --git a/script/deployments/PancakeswapV2LiquidationStrategy/config/SetPaths.s.sol b/script/deployments/PancakeswapV2LiquidationStrategy/config/SetPaths.s.sol index fd277b9b..958b8711 100644 --- a/script/deployments/PancakeswapV2LiquidationStrategy/config/SetPaths.s.sol +++ b/script/deployments/PancakeswapV2LiquidationStrategy/config/SetPaths.s.sol @@ -8,6 +8,8 @@ import { PancakeswapV2LiquidationStrategy } from "solidity/contracts/money-marke contract SetPathsScript is BaseScript { using stdJson for string; + PancakeswapV2LiquidationStrategy.SetPathParams[] liquidationPaths; + function run() public { /* ░██╗░░░░░░░██╗░█████╗░██████╗░███╗░░██╗██╗███╗░░██╗░██████╗░ @@ -19,25 +21,82 @@ contract SetPathsScript is BaseScript { Check all variables below before execute the deployment script */ - address[] memory _strats = new address[](2); - _strats[0] = address(pancakeswapV2LiquidateStrat); - _strats[1] = address(pancakeswapV2IbLiquidateStrat); + address[] memory _strats = new address[](1); + _strats[0] = address(pancakeswapV2IbLiquidateStrat); + + // ********* WBNB ********* // + // WBNB -> HIGH: + setLiquidationPath(wbnb, busd, high); + + // ********* USDC ********* // + // USDC -> HIGH: + setLiquidationPath(usdc, busd, high); + + // ********* USDT ********* // + // USDT -> HIGH: + setLiquidationPath(usdt, busd, high); - address[] memory _wbnbLiquidationPath = new address[](2); - _wbnbLiquidationPath[0] = wbnb; - _wbnbLiquidationPath[1] = busd; + // ********* BUSD ********* // + // BUSD -> HIGH: + setLiquidationPath(busd, high); - PancakeswapV2LiquidationStrategy.SetPathParams[] - memory _inputs = new PancakeswapV2LiquidationStrategy.SetPathParams[](1); + // ********* BTCB ********* // + // BTCB -> HIGH: + setLiquidationPath(btcb, busd, high); - _inputs[0].path = _wbnbLiquidationPath; + // ********* ETH ********* // + // ETH -> HIGH: + setLiquidationPath(eth, busd, high); + + // ********* HIGH ********* // + // HIGH -> WBNB: + setLiquidationPath(high, busd, wbnb); + // HIGH -> USDC: + setLiquidationPath(high, busd, usdc); + // HIGH -> USDT: + setLiquidationPath(high, busd, usdt); + // HIGH -> BUSD: + setLiquidationPath(high, busd); + // HIGH -> BTCB: + setLiquidationPath(high, busd, btcb); + // HIGH -> ETH: + setLiquidationPath(high, busd, eth); _startDeployerBroadcast(); for (uint8 i; i < _strats.length; i++) { - PancakeswapV2LiquidationStrategy(_strats[i]).setPaths(_inputs); + PancakeswapV2LiquidationStrategy(_strats[i]).setPaths(liquidationPaths); } _stopBroadcast(); } + + function setLiquidationPath(address _token1, address _token2) internal { + address[] memory path = new address[](2); + path[0] = _token1; + path[1] = _token2; + + PancakeswapV2LiquidationStrategy.SetPathParams memory _input = PancakeswapV2LiquidationStrategy.SetPathParams({ + path: path + }); + + liquidationPaths.push(_input); + } + + function setLiquidationPath( + address _token1, + address _token2, + address _token3 + ) internal { + address[] memory path = new address[](3); + path[0] = _token1; + path[1] = _token2; + path[2] = _token3; + + PancakeswapV2LiquidationStrategy.SetPathParams memory _input = PancakeswapV2LiquidationStrategy.SetPathParams({ + path: path + }); + + liquidationPaths.push(_input); + } } diff --git a/script/deployments/Rewarder/config/AddPool.s.sol b/script/deployments/Rewarder/config/AddPool.s.sol index 788c3c92..ac2db73b 100644 --- a/script/deployments/Rewarder/config/AddPool.s.sol +++ b/script/deployments/Rewarder/config/AddPool.s.sol @@ -24,26 +24,11 @@ contract SetPoolScript is BaseScript { Check all variables below before execute the deployment script */ - IRewarder rewarder = IRewarder(0x0886B13E413bc0fBAeDB76b0855CA5F2dae82E99); + IRewarder rewarder = IRewarder(address(0)); - // WBNB - addIbPool(wbnb, 75); - addDebtPool(wbnb, 100); - // BTCB - addIbPool(btcb, 100); - addDebtPool(btcb, 125); - // USDT - addIbPool(usdt, 100); - addDebtPool(usdt, 175); - // ETH - addIbPool(eth, 75); - addDebtPool(eth, 100); - // USDC - addIbPool(usdc, 50); - addDebtPool(usdc, 75); - // BUSD - addIbPool(busd, 50); - addDebtPool(busd, 75); + // HIGH + addIbPool(high, 50); + addDebtPool(high, 75); //---- execution ----// _startDeployerBroadcast(); diff --git a/script/deployments/Rewarder/deploy/Rewarder.s.sol b/script/deployments/Rewarder/deploy/Rewarder.s.sol index 2a100bc2..c33b9596 100644 --- a/script/deployments/Rewarder/deploy/Rewarder.s.sol +++ b/script/deployments/Rewarder/deploy/Rewarder.s.sol @@ -20,9 +20,9 @@ contract DeployRewarderScript is BaseScript { Check all variables below before execute the deployment script */ - string memory name = "HIGH Street"; + string memory name = "high"; address miniFL = address(miniFL); - address rewardToken = 0x5f4Bde007Dc06b867f86EBFE4802e34A1fFEEd63; + address rewardToken = high; uint256 maxRewardPerSecond = 1 ether; bytes memory data = abi.encodeWithSelector( @@ -39,7 +39,23 @@ contract DeployRewarderScript is BaseScript { // deploy proxy address proxy = address(new TransparentUpgradeableProxy(rewarderImplementation, proxyAdminAddress, data)); - console.log("rewarder", proxy); + writeRewarderToJson(proxy); + _stopBroadcast(); } + + function writeRewarderToJson(address _rewarder) internal { + string[] memory cmds = new string[](9); + cmds[0] = "npx"; + cmds[1] = "ts-node"; + cmds[2] = "./type-script/scripts/write-rewarder.ts"; + cmds[3] = "--name"; + cmds[4] = Rewarder(_rewarder).name(); + cmds[5] = "--address"; + cmds[6] = vm.toString(_rewarder); + cmds[7] = "--rewardToken"; + cmds[8] = vm.toString(Rewarder(_rewarder).rewardToken()); + + vm.ffi(cmds); + } } diff --git a/type-script/scripts/set-mini-fl-pool-rewarders.ts b/type-script/scripts/set-mini-fl-pool-rewarders.ts new file mode 100644 index 00000000..a02e9fac --- /dev/null +++ b/type-script/scripts/set-mini-fl-pool-rewarders.ts @@ -0,0 +1,24 @@ +import { Command } from "commander"; +import { ConfigFileHelper } from "../../deploy/file-helper.ts/config-file.helper"; + +async function main(miniFLpId: number, rewarderAddress: string[]) { + const configFileHelper = new ConfigFileHelper(); + + configFileHelper.setMiniFLPoolRewarders(miniFLpId, rewarderAddress); + console.log("✅ Done"); +} + +const program = new Command(); +program.requiredOption("-p, --pid "); +program.requiredOption("-r, --rewarderAddress "); + +program.parse(process.argv); + +const options = program.opts(); + +main(options.pid, options.rewarderAddress) + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/type-script/scripts/write-rewarder.ts b/type-script/scripts/write-rewarder.ts index 58babc94..6519e600 100644 --- a/type-script/scripts/write-rewarder.ts +++ b/type-script/scripts/write-rewarder.ts @@ -1,31 +1,30 @@ import { Command } from "commander"; -import { ConfigFileHelper } from "../file-helper.ts/config-file.helper"; -import { MiniFLPool } from "../interfaces"; +import { ConfigFileHelper } from "../../deploy/file-helper.ts/config-file.helper"; +import { Rewarder } from "../../deploy/interfaces"; -async function main(id: string, name: string, stakingToken: string) { +async function main(name: string, address: string, rewardToken: string) { const configFileHelper = new ConfigFileHelper(); - const newMiniFLPool: MiniFLPool = { - id: Number(id), + const rewarder: Rewarder = { name, - stakingToken, - rewarders: [], + address, + rewardToken, }; - configFileHelper.addMiniFLPool(newMiniFLPool); + configFileHelper.addRewarder(rewarder); console.log("✅ Done"); } const program = new Command(); -program.requiredOption("-i, --id "); program.requiredOption("-n, --name "); -program.requiredOption("-token, --stakingToken "); +program.requiredOption("-a, --address
"); +program.requiredOption("-r, --rewardToken "); program.parse(process.argv); const options = program.opts(); -main(options.id, options.name, options.stakingToken) +main(options.name, options.address, options.rewardToken) .then(() => process.exit(0)) .catch((error) => { console.error(error); From fc713455ef042f7a7aca2e5aaa06fd00408b2b96 Mon Sep 17 00:00:00 2001 From: jr-alpaca Date: Wed, 17 May 2023 14:09:24 +0700 Subject: [PATCH 84/87] chore: build --- .../MiniFL/config/SetPoolRewarders.s.sol | 2 +- .../MoneyMarket/config/OpenMarket.s.sol | 79 ++----------------- 2 files changed, 8 insertions(+), 73 deletions(-) diff --git a/script/deployments/MiniFL/config/SetPoolRewarders.s.sol b/script/deployments/MiniFL/config/SetPoolRewarders.s.sol index bd3c43c7..dd8eee12 100644 --- a/script/deployments/MiniFL/config/SetPoolRewarders.s.sol +++ b/script/deployments/MiniFL/config/SetPoolRewarders.s.sol @@ -65,7 +65,7 @@ contract SetPoolRewardersScript is BaseScript { cmds[5] = "--rewarderAddress"; for (uint256 i; i < rewardersLength; i++) { - cmds[6 + i] = vm.toString(_rewarder); + cmds[6 + i] = vm.toString(_rewarders[i]); } vm.ffi(cmds); diff --git a/script/deployments/MoneyMarket/config/OpenMarket.s.sol b/script/deployments/MoneyMarket/config/OpenMarket.s.sol index abed4c17..13a2e8b4 100644 --- a/script/deployments/MoneyMarket/config/OpenMarket.s.sol +++ b/script/deployments/MoneyMarket/config/OpenMarket.s.sol @@ -31,81 +31,16 @@ contract OpenMarketScript is BaseScript { */ _startDeployerBroadcast(); - // WBNB + // HIGH executeOpenMarket( OpenMarketInput({ - token: wbnb, + token: high, interestModel: doubleSlope1, - tier: LibConstant.AssetTier.COLLATERAL, - collateralFactor: 8000, - borrowingFactor: 8500, - maxCollateral: 250_000 ether, - maxBorrow: 200_000 ether - }) - ); - - // USDC - executeOpenMarket( - OpenMarketInput({ - token: usdc, - interestModel: doubleSlope3, - tier: LibConstant.AssetTier.COLLATERAL, - collateralFactor: 9000, - borrowingFactor: 9400, - maxCollateral: 75_000_000 ether, - maxBorrow: 50_000_000 ether - }) - ); - - // USDT - executeOpenMarket( - OpenMarketInput({ - token: usdt, - interestModel: doubleSlope3, - tier: LibConstant.AssetTier.COLLATERAL, - collateralFactor: 9000, - borrowingFactor: 9400, - maxCollateral: 75_000_000 ether, - maxBorrow: 50_000_000 ether - }) - ); - - // BUSD - executeOpenMarket( - OpenMarketInput({ - token: busd, - interestModel: doubleSlope3, - tier: LibConstant.AssetTier.COLLATERAL, - collateralFactor: 9000, - borrowingFactor: 9400, - maxCollateral: 75_000_000 ether, - maxBorrow: 50_000_000 ether - }) - ); - - // BTCB - executeOpenMarket( - OpenMarketInput({ - token: btcb, - interestModel: doubleSlope2, - tier: LibConstant.AssetTier.COLLATERAL, - collateralFactor: 8800, - borrowingFactor: 9100, - maxCollateral: 5_000 ether, - maxBorrow: 4_500 ether - }) - ); - - // ETH - executeOpenMarket( - OpenMarketInput({ - token: eth, - interestModel: doubleSlope2, - tier: LibConstant.AssetTier.COLLATERAL, - collateralFactor: 8800, - borrowingFactor: 9100, - maxCollateral: 50_000 ether, - maxBorrow: 45_000 ether + tier: LibConstant.AssetTier.CROSS, + collateralFactor: 0, + borrowingFactor: 5000, + maxCollateral: 0 ether, + maxBorrow: 500_000 ether }) ); From a57197514bfc995d0fd8348f4c6d567116a95410 Mon Sep 17 00:00:00 2001 From: jr-alpaca Date: Wed, 17 May 2023 14:11:31 +0700 Subject: [PATCH 85/87] chore: rewarders to json --- .mainnet.json | 1 + 1 file changed, 1 insertion(+) diff --git a/.mainnet.json b/.mainnet.json index 65e2d044..880ee0cf 100644 --- a/.mainnet.json +++ b/.mainnet.json @@ -196,6 +196,7 @@ } ] }, + "rewarders": [], "moneyMarketReader": "0x4913DEC75cC0e061Ba78ebbDb2584905760be4C6", "smartTreasury": { "implementation": "", From e8933206630b217b642c0b66b5fb9560bcddce8c Mon Sep 17 00:00:00 2001 From: jr-alpaca Date: Wed, 17 May 2023 14:36:33 +0700 Subject: [PATCH 86/87] chore: high market rewarder --- .../config/SetTokenConfig.s.sol | 39 ++++--------------- .../config/SetPriceFeeds.s.sol | 6 +-- .../MiniFL/config/SetPoolRewarders.s.sol | 4 +- .../config/SetMultiPrimarySources.s.sol | 37 +----------------- .../Rewarder/config/SetRewardPerSecond.s.sol | 4 +- 5 files changed, 18 insertions(+), 72 deletions(-) diff --git a/script/deployments/AlpacaV2Oracle/config/SetTokenConfig.s.sol b/script/deployments/AlpacaV2Oracle/config/SetTokenConfig.s.sol index ad9aaf9b..247b4149 100644 --- a/script/deployments/AlpacaV2Oracle/config/SetTokenConfig.s.sol +++ b/script/deployments/AlpacaV2Oracle/config/SetTokenConfig.s.sol @@ -26,40 +26,17 @@ contract SetTokenConfigScript is BaseScript { // set alpaca guard path - // WBNB - alpacaGuardPath.push(wbnb); - alpacaGuardPath.push(usdt); - addSetTokenConfigList( - IAlpacaV2Oracle.Config({ path: alpacaGuardPath, router: address(0), maxPriceDiffBps: 10500, isUsingV3Pool: true }) - ); - - // USDC - alpacaGuardPath.push(usdc); - alpacaGuardPath.push(usdt); - addSetTokenConfigList( - IAlpacaV2Oracle.Config({ path: alpacaGuardPath, router: address(0), maxPriceDiffBps: 10500, isUsingV3Pool: true }) - ); - - // BUSD + // HIGH + alpacaGuardPath.push(high); alpacaGuardPath.push(busd); alpacaGuardPath.push(usdt); addSetTokenConfigList( - IAlpacaV2Oracle.Config({ path: alpacaGuardPath, router: address(0), maxPriceDiffBps: 10500, isUsingV3Pool: true }) - ); - - // BTCB - alpacaGuardPath.push(btcb); - alpacaGuardPath.push(usdt); - addSetTokenConfigList( - IAlpacaV2Oracle.Config({ path: alpacaGuardPath, router: address(0), maxPriceDiffBps: 10500, isUsingV3Pool: true }) - ); - - // ETH - alpacaGuardPath.push(eth); - alpacaGuardPath.push(wbnb); - alpacaGuardPath.push(usdt); - addSetTokenConfigList( - IAlpacaV2Oracle.Config({ path: alpacaGuardPath, router: address(0), maxPriceDiffBps: 10500, isUsingV3Pool: true }) + IAlpacaV2Oracle.Config({ + path: alpacaGuardPath, + router: pancakeswapRouterV2, + maxPriceDiffBps: 10500, + isUsingV3Pool: false + }) ); //---- execution ----// diff --git a/script/deployments/ChainLinkOracle/config/SetPriceFeeds.s.sol b/script/deployments/ChainLinkOracle/config/SetPriceFeeds.s.sol index d02270de..e250a2e9 100644 --- a/script/deployments/ChainLinkOracle/config/SetPriceFeeds.s.sol +++ b/script/deployments/ChainLinkOracle/config/SetPriceFeeds.s.sol @@ -31,12 +31,12 @@ contract SetPriceFeedsScript is BaseScript { Check all variables below before execute the deployment script */ - // USDC + // HIGH addSetPriceFeeds( SetPriceFeedsInput({ - token0: usdc, + token0: high, token1: usdPlaceholder, - source: IAggregatorV3(0x51597f405303C4377E36123cBc172b13269EA163) + source: IAggregatorV3(0xdF4Dd957a84F798acFADd448badd2D8b9bC99047) }) ); diff --git a/script/deployments/MiniFL/config/SetPoolRewarders.s.sol b/script/deployments/MiniFL/config/SetPoolRewarders.s.sol index dd8eee12..0d41493d 100644 --- a/script/deployments/MiniFL/config/SetPoolRewarders.s.sol +++ b/script/deployments/MiniFL/config/SetPoolRewarders.s.sol @@ -23,7 +23,7 @@ contract SetPoolRewardersScript is BaseScript { */ address[] memory rewarders = new address[](1); - rewarders[0] = address(0); + rewarders[0] = 0x7180f062aa725057EB110224a262f64978e89b24; setIbPoolRewarders(high, rewarders); setDebtPoolRewarders(high, rewarders); @@ -33,6 +33,8 @@ contract SetPoolRewardersScript is BaseScript { for (uint256 i; i < setPoolRewarderInputs.length; i++) { miniFL.setPoolRewarders(setPoolRewarderInputs[i].pId, setPoolRewarderInputs[i].rewarders); + + writeRewarderToMiniFLPool(setPoolRewarderInputs[i].pId, setPoolRewarderInputs[i].rewarders); } _stopBroadcast(); diff --git a/script/deployments/OracleMedianizer/config/SetMultiPrimarySources.s.sol b/script/deployments/OracleMedianizer/config/SetMultiPrimarySources.s.sol index c0a9c251..6edf2030 100644 --- a/script/deployments/OracleMedianizer/config/SetMultiPrimarySources.s.sol +++ b/script/deployments/OracleMedianizer/config/SetMultiPrimarySources.s.sol @@ -40,43 +40,10 @@ contract SetMultiPrimarySourcesScript is BaseScript { Check all variables below before execute the deployment script */ - // USDC + // HIGH addSetMultiPrimarySources( SetMultiPrimarySourcesInput({ - token0: usdc, - token1: usdPlaceholder, - maxPriceDeviation: 1e18, - maxPriceStale: 1 days, - priceSources: chainlinkPriceSource - }) - ); - - // BTCB - addSetMultiPrimarySources( - SetMultiPrimarySourcesInput({ - token0: btcb, - token1: usdPlaceholder, - maxPriceDeviation: 1e18, - maxPriceStale: 1 days, - priceSources: chainlinkPriceSource - }) - ); - - // ETH - addSetMultiPrimarySources( - SetMultiPrimarySourcesInput({ - token0: eth, - token1: usdPlaceholder, - maxPriceDeviation: 1e18, - maxPriceStale: 1 days, - priceSources: chainlinkPriceSource - }) - ); - - // BUSD - addSetMultiPrimarySources( - SetMultiPrimarySourcesInput({ - token0: busd, + token0: high, token1: usdPlaceholder, maxPriceDeviation: 1e18, maxPriceStale: 1 days, diff --git a/script/deployments/Rewarder/config/SetRewardPerSecond.s.sol b/script/deployments/Rewarder/config/SetRewardPerSecond.s.sol index ffac9e41..47670ba2 100644 --- a/script/deployments/Rewarder/config/SetRewardPerSecond.s.sol +++ b/script/deployments/Rewarder/config/SetRewardPerSecond.s.sol @@ -17,8 +17,8 @@ contract SetRewardPerSecondScript is BaseScript { Check all variables below before execute the deployment script */ - IRewarder rewarder = IRewarder(0x429CEb4aD26712Ead1b534f6c3662Cd129e465a9); - uint256 _newRewardPerSecond = 33068783068783070; + IRewarder rewarder = IRewarder(address(0)); + uint256 _newRewardPerSecond = 7676681783824641; bool _withUpdate = true; //---- execution ----// From 04e6ccf6280fe84e34df89efa6af47d3ebe99b98 Mon Sep 17 00:00:00 2001 From: jr-alpaca Date: Wed, 17 May 2023 15:49:41 +0700 Subject: [PATCH 87/87] chore: update --- script/deployments/Rewarder/config/AddPool.s.sol | 4 ++-- script/deployments/Rewarder/config/SetRewardPerSecond.s.sol | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/script/deployments/Rewarder/config/AddPool.s.sol b/script/deployments/Rewarder/config/AddPool.s.sol index ac2db73b..e28019c2 100644 --- a/script/deployments/Rewarder/config/AddPool.s.sol +++ b/script/deployments/Rewarder/config/AddPool.s.sol @@ -27,8 +27,8 @@ contract SetPoolScript is BaseScript { IRewarder rewarder = IRewarder(address(0)); // HIGH - addIbPool(high, 50); - addDebtPool(high, 75); + addIbPool(high, 40); + addDebtPool(high, 60); //---- execution ----// _startDeployerBroadcast(); diff --git a/script/deployments/Rewarder/config/SetRewardPerSecond.s.sol b/script/deployments/Rewarder/config/SetRewardPerSecond.s.sol index 47670ba2..48826d57 100644 --- a/script/deployments/Rewarder/config/SetRewardPerSecond.s.sol +++ b/script/deployments/Rewarder/config/SetRewardPerSecond.s.sol @@ -18,7 +18,7 @@ contract SetRewardPerSecondScript is BaseScript { */ IRewarder rewarder = IRewarder(address(0)); - uint256 _newRewardPerSecond = 7676681783824641; + uint256 _newRewardPerSecond = 6717096560846561; bool _withUpdate = true; //---- execution ----//