@venusprotocol/isolated-pools 1.0.0-dev.1 → 1.0.0-dev.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/README.md +1 -11
  2. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.dbg.json +4 -0
  3. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.json +215 -0
  4. package/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.dbg.json +4 -0
  5. package/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.json +183 -0
  6. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +4 -0
  7. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json +63 -0
  8. package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.dbg.json +4 -0
  9. package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.json +56 -0
  10. package/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +4 -0
  11. package/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.json +24 -0
  12. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +4 -0
  13. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.json +56 -0
  14. package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +4 -0
  15. package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.json +19 -0
  16. package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.dbg.json +4 -0
  17. package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.json +80 -0
  18. package/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +4 -0
  19. package/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json +24 -0
  20. package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +4 -0
  21. package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +113 -0
  22. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +4 -0
  23. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +297 -0
  24. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +4 -0
  25. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json +194 -0
  26. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +4 -0
  27. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json +233 -0
  28. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +4 -0
  29. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json +10 -0
  30. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +4 -0
  31. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json +10 -0
  32. package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +4 -0
  33. package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +10 -0
  34. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +4 -0
  35. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +10 -0
  36. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json +4 -0
  37. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json +30 -0
  38. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json +4 -0
  39. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json +30 -0
  40. package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json +4 -0
  41. package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json +10 -0
  42. package/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.dbg.json +4 -0
  43. package/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json +10 -0
  44. package/artifacts/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol/Ownable2StepUpgradeable.dbg.json +4 -0
  45. package/artifacts/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol/Ownable2StepUpgradeable.json +115 -0
  46. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +4 -0
  47. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +76 -0
  48. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +4 -0
  49. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +24 -0
  50. package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.dbg.json +4 -0
  51. package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.json +24 -0
  52. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +4 -0
  53. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.json +194 -0
  54. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol/IERC20PermitUpgradeable.dbg.json +4 -0
  55. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol/IERC20PermitUpgradeable.json +86 -0
  56. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol/SafeERC20Upgradeable.dbg.json +4 -0
  57. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol/SafeERC20Upgradeable.json +10 -0
  58. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +4 -0
  59. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +10 -0
  60. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +4 -0
  61. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +24 -0
  62. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlManager.sol/AccessControlManager.dbg.json +4 -0
  63. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlManager.sol/AccessControlManager.json +369 -0
  64. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.dbg.json +4 -0
  65. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.json +181 -0
  66. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.dbg.json +4 -0
  67. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.json +282 -0
  68. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.dbg.json +4 -0
  69. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.json +40 -0
  70. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.dbg.json +4 -0
  71. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.json +30 -0
  72. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.dbg.json +4 -0
  73. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.json +43 -0
  74. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.dbg.json +4 -0
  75. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.json +49 -0
  76. package/artifacts/build-info/5d0b3e7c7d317c28bfc8eca20c31f64e.json +1 -0
  77. package/artifacts/build-info/f19d689bc99e63a20dd2a17a14e2b84a.json +1 -0
  78. package/artifacts/contracts/BaseJumpRateModelV2.sol/BaseJumpRateModelV2.dbg.json +4 -0
  79. package/artifacts/contracts/BaseJumpRateModelV2.sol/BaseJumpRateModelV2.json +276 -0
  80. package/artifacts/contracts/Comptroller.sol/Comptroller.dbg.json +4 -0
  81. package/artifacts/contracts/Comptroller.sol/Comptroller.json +1667 -0
  82. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerInterface.dbg.json +4 -0
  83. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerInterface.json +285 -0
  84. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerViewInterface.dbg.json +4 -0
  85. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerViewInterface.json +170 -0
  86. package/artifacts/contracts/ComptrollerStorage.sol/ComptrollerStorage.dbg.json +4 -0
  87. package/artifacts/contracts/ComptrollerStorage.sol/ComptrollerStorage.json +173 -0
  88. package/artifacts/contracts/ErrorReporter.sol/TokenErrorReporter.dbg.json +4 -0
  89. package/artifacts/contracts/ErrorReporter.sol/TokenErrorReporter.json +156 -0
  90. package/artifacts/contracts/ExponentialNoError.sol/ExponentialNoError.dbg.json +4 -0
  91. package/artifacts/contracts/ExponentialNoError.sol/ExponentialNoError.json +10 -0
  92. package/artifacts/contracts/IPancakeswapV2Router.sol/IPancakeswapV2Router.dbg.json +4 -0
  93. package/artifacts/contracts/IPancakeswapV2Router.sol/IPancakeswapV2Router.json +50 -0
  94. package/artifacts/contracts/InterestRateModel.sol/InterestRateModel.dbg.json +4 -0
  95. package/artifacts/contracts/InterestRateModel.sol/InterestRateModel.json +97 -0
  96. package/artifacts/contracts/JumpRateModelV2.sol/JumpRateModelV2.dbg.json +4 -0
  97. package/artifacts/contracts/JumpRateModelV2.sol/JumpRateModelV2.json +307 -0
  98. package/artifacts/contracts/Lens/PoolLens.sol/PoolLens.dbg.json +4 -0
  99. package/artifacts/contracts/Lens/PoolLens.sol/PoolLens.json +1087 -0
  100. package/artifacts/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.dbg.json +4 -0
  101. package/artifacts/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.json +59 -0
  102. package/artifacts/contracts/Pool/PoolRegistry.sol/PoolRegistry.dbg.json +4 -0
  103. package/artifacts/contracts/Pool/PoolRegistry.sol/PoolRegistry.json +689 -0
  104. package/artifacts/contracts/Pool/PoolRegistryInterface.sol/PoolRegistryInterface.dbg.json +4 -0
  105. package/artifacts/contracts/Pool/PoolRegistryInterface.sol/PoolRegistryInterface.json +176 -0
  106. package/artifacts/contracts/Rewards/RewardsDistributor.sol/RewardsDistributor.dbg.json +4 -0
  107. package/artifacts/contracts/Rewards/RewardsDistributor.sol/RewardsDistributor.json +928 -0
  108. package/artifacts/contracts/RiskFund/IProtocolShareReserve.sol/IProtocolShareReserve.dbg.json +4 -0
  109. package/artifacts/contracts/RiskFund/IProtocolShareReserve.sol/IProtocolShareReserve.json +29 -0
  110. package/artifacts/contracts/RiskFund/IRiskFund.sol/IRiskFund.dbg.json +4 -0
  111. package/artifacts/contracts/RiskFund/IRiskFund.sol/IRiskFund.json +101 -0
  112. package/artifacts/contracts/RiskFund/ProtocolShareReserve.sol/ProtocolShareReserve.dbg.json +4 -0
  113. package/artifacts/contracts/RiskFund/ProtocolShareReserve.sol/ProtocolShareReserve.json +296 -0
  114. package/artifacts/contracts/RiskFund/ReserveHelpers.sol/ReserveHelpers.dbg.json +4 -0
  115. package/artifacts/contracts/RiskFund/ReserveHelpers.sol/ReserveHelpers.json +83 -0
  116. package/artifacts/contracts/RiskFund/RiskFund.sol/RiskFund.dbg.json +4 -0
  117. package/artifacts/contracts/RiskFund/RiskFund.sol/RiskFund.json +596 -0
  118. package/artifacts/contracts/Shortfall/IShortfall.sol/IShortfall.dbg.json +4 -0
  119. package/artifacts/contracts/Shortfall/IShortfall.sol/IShortfall.json +24 -0
  120. package/artifacts/contracts/Shortfall/Shortfall.sol/Shortfall.dbg.json +4 -0
  121. package/artifacts/contracts/Shortfall/Shortfall.sol/Shortfall.json +761 -0
  122. package/artifacts/contracts/VToken.sol/VToken.dbg.json +4 -0
  123. package/artifacts/contracts/VToken.sol/VToken.json +1850 -0
  124. package/artifacts/contracts/VTokenInterfaces.sol/VTokenInterface.dbg.json +4 -0
  125. package/artifacts/contracts/VTokenInterfaces.sol/VTokenInterface.json +1398 -0
  126. package/artifacts/contracts/VTokenInterfaces.sol/VTokenStorage.dbg.json +4 -0
  127. package/artifacts/contracts/VTokenInterfaces.sol/VTokenStorage.json +219 -0
  128. package/artifacts/contracts/WhitePaperInterestRateModel.sol/WhitePaperInterestRateModel.dbg.json +4 -0
  129. package/artifacts/contracts/WhitePaperInterestRateModel.sol/WhitePaperInterestRateModel.json +192 -0
  130. package/artifacts/contracts/test/ComptrollerHarness.sol/ComptrollerHarness.dbg.json +4 -0
  131. package/artifacts/contracts/test/ComptrollerHarness.sol/ComptrollerHarness.json +1712 -0
  132. package/artifacts/contracts/test/ComptrollerHarness.sol/EchoTypesComptroller.dbg.json +4 -0
  133. package/artifacts/contracts/test/ComptrollerHarness.sol/EchoTypesComptroller.json +94 -0
  134. package/artifacts/contracts/test/ComptrollerScenario.sol/ComptrollerScenario.dbg.json +4 -0
  135. package/artifacts/contracts/test/ComptrollerScenario.sol/ComptrollerScenario.json +1744 -0
  136. package/artifacts/contracts/test/ERC20.sol/ERC20.dbg.json +4 -0
  137. package/artifacts/contracts/test/ERC20.sol/ERC20.json +194 -0
  138. package/artifacts/contracts/test/ERC20.sol/ERC20Base.dbg.json +4 -0
  139. package/artifacts/contracts/test/ERC20.sol/ERC20Base.json +141 -0
  140. package/artifacts/contracts/test/ERC20.sol/ERC20Harness.dbg.json +4 -0
  141. package/artifacts/contracts/test/ERC20.sol/ERC20Harness.json +351 -0
  142. package/artifacts/contracts/test/ERC20.sol/ERC20NS.dbg.json +4 -0
  143. package/artifacts/contracts/test/ERC20.sol/ERC20NS.json +182 -0
  144. package/artifacts/contracts/test/ERC20.sol/NonStandardToken.dbg.json +4 -0
  145. package/artifacts/contracts/test/ERC20.sol/NonStandardToken.json +247 -0
  146. package/artifacts/contracts/test/ERC20.sol/StandardToken.dbg.json +4 -0
  147. package/artifacts/contracts/test/ERC20.sol/StandardToken.json +259 -0
  148. package/artifacts/contracts/test/EvilToken.sol/EvilToken.dbg.json +4 -0
  149. package/artifacts/contracts/test/EvilToken.sol/EvilToken.json +303 -0
  150. package/artifacts/contracts/test/FaucetToken.sol/FaucetNonStandardToken.dbg.json +4 -0
  151. package/artifacts/contracts/test/FaucetToken.sol/FaucetNonStandardToken.json +265 -0
  152. package/artifacts/contracts/test/FaucetToken.sol/FaucetToken.dbg.json +4 -0
  153. package/artifacts/contracts/test/FaucetToken.sol/FaucetToken.json +277 -0
  154. package/artifacts/contracts/test/FaucetToken.sol/FaucetTokenReEntrantHarness.dbg.json +4 -0
  155. package/artifacts/contracts/test/FaucetToken.sol/FaucetTokenReEntrantHarness.json +313 -0
  156. package/artifacts/contracts/test/FeeToken.sol/FeeToken.dbg.json +4 -0
  157. package/artifacts/contracts/test/FeeToken.sol/FeeToken.json +313 -0
  158. package/artifacts/contracts/test/HarnessMaxLoopsLimitHelper.sol/HarnessMaxLoopsLimitHelper.dbg.json +4 -0
  159. package/artifacts/contracts/test/HarnessMaxLoopsLimitHelper.sol/HarnessMaxLoopsLimitHelper.json +85 -0
  160. package/artifacts/contracts/test/MockDeflationaryToken.sol/MockDeflatingToken.dbg.json +4 -0
  161. package/artifacts/contracts/test/MockDeflationaryToken.sol/MockDeflatingToken.json +332 -0
  162. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IERC20.dbg.json +4 -0
  163. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IERC20.json +233 -0
  164. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeFactory.dbg.json +4 -0
  165. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeFactory.json +187 -0
  166. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakePair.dbg.json +4 -0
  167. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakePair.json +668 -0
  168. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter01.dbg.json +4 -0
  169. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter01.json +760 -0
  170. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter02.dbg.json +4 -0
  171. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter02.json +962 -0
  172. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IWETH.dbg.json +4 -0
  173. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IWETH.json +55 -0
  174. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeLibrary.dbg.json +4 -0
  175. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeLibrary.json +10 -0
  176. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeRouter.dbg.json +4 -0
  177. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeRouter.json +982 -0
  178. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/SafeMath.dbg.json +4 -0
  179. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/SafeMath.json +10 -0
  180. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/TransferHelper.dbg.json +4 -0
  181. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/TransferHelper.json +10 -0
  182. package/artifacts/contracts/test/Mocks/MockPriceOracle.sol/MockPriceOracle.dbg.json +4 -0
  183. package/artifacts/contracts/test/Mocks/MockPriceOracle.sol/MockPriceOracle.json +85 -0
  184. package/artifacts/contracts/test/Mocks/MockToken.sol/MockToken.dbg.json +4 -0
  185. package/artifacts/contracts/test/Mocks/MockToken.sol/MockToken.json +315 -0
  186. package/artifacts/contracts/test/SafeMath.sol/SafeMath.dbg.json +4 -0
  187. package/artifacts/contracts/test/SafeMath.sol/SafeMath.json +10 -0
  188. package/artifacts/contracts/test/UpgradedVToken.sol/UpgradedVToken.dbg.json +4 -0
  189. package/artifacts/contracts/test/UpgradedVToken.sol/UpgradedVToken.json +1946 -0
  190. package/artifacts/contracts/test/VTokenHarness.sol/VTokenHarness.dbg.json +4 -0
  191. package/artifacts/contracts/test/VTokenHarness.sol/VTokenHarness.json +2306 -0
  192. package/contracts/BaseJumpRateModelV2.sol +4 -3
  193. package/contracts/Comptroller.sol +40 -15
  194. package/contracts/ComptrollerInterface.sol +10 -0
  195. package/contracts/ComptrollerStorage.sol +5 -0
  196. package/contracts/ErrorReporter.sol +5 -0
  197. package/contracts/ExponentialNoError.sol +0 -7
  198. package/contracts/Lens/PoolLens.sol +13 -0
  199. package/contracts/MaxLoopsLimitHelper.sol +5 -0
  200. package/contracts/Pool/PoolRegistry.sol +58 -206
  201. package/contracts/Pool/PoolRegistryInterface.sol +12 -7
  202. package/contracts/Rewards/RewardsDistributor.sol +15 -0
  203. package/contracts/RiskFund/IProtocolShareReserve.sol +5 -0
  204. package/contracts/RiskFund/IRiskFund.sol +5 -0
  205. package/contracts/RiskFund/ProtocolShareReserve.sol +5 -0
  206. package/contracts/RiskFund/ReserveHelpers.sol +5 -0
  207. package/contracts/RiskFund/RiskFund.sol +5 -5
  208. package/contracts/Shortfall/IShortfall.sol +5 -0
  209. package/contracts/Shortfall/Shortfall.sol +33 -22
  210. package/contracts/VToken.sol +31 -9
  211. package/contracts/VTokenInterfaces.sol +10 -0
  212. package/contracts/WhitePaperInterestRateModel.sol +1 -1
  213. package/contracts/lib/imports.sol +11 -0
  214. package/contracts/test/MockDeflationaryToken.sol +113 -0
  215. package/dist/deploy/001-deploy-mock-tokens.d.ts +3 -0
  216. package/dist/deploy/001-deploy-mock-tokens.js +23 -0
  217. package/dist/deploy/002-price-oracle.d.ts +2 -0
  218. package/dist/deploy/002-price-oracle.js +9 -0
  219. package/dist/deploy/003-price-oracle-configure-feeds.d.ts +2 -0
  220. package/dist/deploy/003-price-oracle-configure-feeds.js +9 -0
  221. package/{deploy/004-swap-router.ts → dist/deploy/004-swap-router.d.ts} +0 -3
  222. package/dist/deploy/004-swap-router.js +8 -0
  223. package/dist/deploy/005-access-control.d.ts +3 -0
  224. package/dist/deploy/005-access-control.js +16 -0
  225. package/dist/deploy/006-deploy-factories.d.ts +3 -0
  226. package/dist/deploy/006-deploy-factories.js +37 -0
  227. package/dist/deploy/007-access-control-configure.d.ts +3 -0
  228. package/dist/deploy/007-access-control-configure.js +69 -0
  229. package/dist/deploy/008-deploy-pool-lens.d.ts +3 -0
  230. package/dist/deploy/008-deploy-pool-lens.js +15 -0
  231. package/dist/deploy/009-deploy-pools.d.ts +3 -0
  232. package/dist/deploy/009-deploy-pools.js +186 -0
  233. package/dist/deploy/010-rewards.d.ts +3 -0
  234. package/dist/deploy/010-rewards.js +76 -0
  235. package/dist/deploy/011-transfer-pools-ownership.d.ts +3 -0
  236. package/dist/deploy/011-transfer-pools-ownership.js +75 -0
  237. package/dist/deploy/012-riskfund-protocolshare.d.ts +3 -0
  238. package/dist/deploy/012-riskfund-protocolshare.js +139 -0
  239. package/dist/deploy/013-transfer-funds-ownership.d.ts +3 -0
  240. package/dist/deploy/013-transfer-funds-ownership.js +46 -0
  241. package/dist/hardhat.config.d.ts +14 -0
  242. package/dist/hardhat.config.js +237 -0
  243. package/dist/helpers/deploymentConfig.d.ts +59 -0
  244. package/dist/helpers/deploymentConfig.js +836 -0
  245. package/dist/helpers/utils.d.ts +3 -0
  246. package/dist/helpers/utils.js +28 -0
  247. package/package.json +3 -11
  248. package/contracts/Factories/JumpRateModelFactory.sol +0 -26
  249. package/contracts/Factories/VTokenProxyFactory.sol +0 -53
  250. package/contracts/Factories/WhitePaperInterestRateModelFactory.sol +0 -12
  251. package/contracts/Proxy/UpgradeableBeacon.sol +0 -10
  252. package/deploy/001-deploy-mock-tokens.ts +0 -29
  253. package/deploy/002-price-oracle.ts +0 -7
  254. package/deploy/003-price-oracle-configure-feeds.ts +0 -7
  255. package/deploy/005-access-control.ts +0 -20
  256. package/deploy/006-deploy-factories.ts +0 -82
  257. package/deploy/007-access-control-configure.ts +0 -142
  258. package/deploy/008-deploy-pool-lens.ts +0 -19
  259. package/deploy/009-deploy-pools.ts +0 -171
  260. package/deploy/010-rewards.ts +0 -84
  261. package/deploy/011-transfer-pools-ownership.ts +0 -93
  262. package/deploy/012-riskfund-protocolshare.ts +0 -140
  263. package/deploy/013-transfer-funds-ownership.ts +0 -63
  264. package/helpers/deploymentConfig.ts +0 -897
  265. package/helpers/utils.ts +0 -24
@@ -0,0 +1,3 @@
1
+ export declare const convertToUnit: (amount: string | number, decimals: number) => string;
2
+ export declare const scaleDownBy: (amount: string | number, decimals: number) => string;
3
+ export declare const AddressOne = "0x0000000000000000000000000000000000000001";
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AddressOne = exports.scaleDownBy = exports.convertToUnit = void 0;
7
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
8
+ bignumber_js_1.default.config({
9
+ FORMAT: {
10
+ decimalSeparator: ".",
11
+ groupSize: 0,
12
+ groupSeparator: "",
13
+ secondaryGroupSize: 0,
14
+ fractionGroupSeparator: "",
15
+ fractionGroupSize: 0,
16
+ },
17
+ ROUNDING_MODE: bignumber_js_1.default.ROUND_DOWN,
18
+ EXPONENTIAL_AT: 1e9,
19
+ });
20
+ const convertToUnit = (amount, decimals) => {
21
+ return new bignumber_js_1.default(amount).times(new bignumber_js_1.default(10).pow(decimals)).toString();
22
+ };
23
+ exports.convertToUnit = convertToUnit;
24
+ const scaleDownBy = (amount, decimals) => {
25
+ return new bignumber_js_1.default(amount).dividedBy(new bignumber_js_1.default(10).pow(decimals)).toString();
26
+ };
27
+ exports.scaleDownBy = scaleDownBy;
28
+ exports.AddressOne = "0x0000000000000000000000000000000000000001";
package/package.json CHANGED
@@ -1,21 +1,13 @@
1
1
  {
2
2
  "name": "@venusprotocol/isolated-pools",
3
- "version": "1.0.0-dev.1",
3
+ "version": "1.0.0-dev.11",
4
4
  "description": "",
5
5
  "files": [
6
6
  "artifacts",
7
- "deploy",
8
- "helpers",
7
+ "dist",
9
8
  "contracts",
10
9
  "deployments"
11
10
  ],
12
- "exports": {
13
- "deploy": "./dist/deploy",
14
- "artifacts": "./artifacts",
15
- "helpers": "./helpers",
16
- "contracts": "./contracts",
17
- "deployments": "./deployments"
18
- },
19
11
  "scripts": {
20
12
  "test": "hardhat test",
21
13
  "test:integration": "hardhat test tests/integration/index.ts",
@@ -45,7 +37,7 @@
45
37
  },
46
38
  "homepage": "https://github.com/VenusProtocol/isolated-pools#readme",
47
39
  "engines": {
48
- "node": "16.x"
40
+ "node": ">=16.0.0"
49
41
  },
50
42
  "dependencies": {
51
43
  "@openzeppelin/contracts": "^4.8.3",
@@ -1,26 +0,0 @@
1
- // SPDX-License-Identifier: BSD-3-Clause
2
- pragma solidity 0.8.13;
3
-
4
- import { IAccessControlManagerV8 } from "@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol";
5
-
6
- import { JumpRateModelV2 } from "../JumpRateModelV2.sol";
7
-
8
- contract JumpRateModelFactory {
9
- function deploy(
10
- uint256 baseRatePerYear,
11
- uint256 multiplierPerYear,
12
- uint256 jumpMultiplierPerYear,
13
- uint256 kink_,
14
- IAccessControlManagerV8 accessControlManager_
15
- ) external returns (JumpRateModelV2) {
16
- JumpRateModelV2 rate = new JumpRateModelV2(
17
- baseRatePerYear,
18
- multiplierPerYear,
19
- jumpMultiplierPerYear,
20
- kink_,
21
- accessControlManager_
22
- );
23
-
24
- return rate;
25
- }
26
- }
@@ -1,53 +0,0 @@
1
- // SPDX-License-Identifier: BSD-3-Clause
2
- pragma solidity 0.8.13;
3
-
4
- import { BeaconProxy } from "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol";
5
- import { AccessControlManager } from "@venusprotocol/governance-contracts/contracts/Governance/AccessControlManager.sol";
6
-
7
- import { InterestRateModel } from "../InterestRateModel.sol";
8
- import { ComptrollerInterface } from "../ComptrollerInterface.sol";
9
- import { VToken } from "../VToken.sol";
10
- import { VTokenInterface } from "../VTokenInterfaces.sol";
11
-
12
- contract VTokenProxyFactory {
13
- struct VTokenArgs {
14
- address underlying_;
15
- ComptrollerInterface comptroller_;
16
- InterestRateModel interestRateModel_;
17
- uint256 initialExchangeRateMantissa_;
18
- string name_;
19
- string symbol_;
20
- uint8 decimals_;
21
- address admin_;
22
- AccessControlManager accessControlManager_;
23
- VTokenInterface.RiskManagementInit riskManagement;
24
- address beaconAddress;
25
- uint256 reserveFactor;
26
- }
27
-
28
- event VTokenProxyDeployed(VTokenArgs args);
29
-
30
- function deployVTokenProxy(VTokenArgs memory input) external returns (VToken) {
31
- BeaconProxy proxy = new BeaconProxy(
32
- input.beaconAddress,
33
- abi.encodeWithSelector(
34
- VToken.initialize.selector,
35
- input.underlying_,
36
- input.comptroller_,
37
- input.interestRateModel_,
38
- input.initialExchangeRateMantissa_,
39
- input.name_,
40
- input.symbol_,
41
- input.decimals_,
42
- input.admin_,
43
- input.accessControlManager_,
44
- input.riskManagement,
45
- input.reserveFactor
46
- )
47
- );
48
-
49
- emit VTokenProxyDeployed(input);
50
-
51
- return VToken(address(proxy));
52
- }
53
- }
@@ -1,12 +0,0 @@
1
- // SPDX-License-Identifier: BSD-3-Clause
2
- pragma solidity 0.8.13;
3
-
4
- import { WhitePaperInterestRateModel } from "../WhitePaperInterestRateModel.sol";
5
-
6
- contract WhitePaperInterestRateModelFactory {
7
- function deploy(uint256 baseRatePerYear, uint256 multiplierPerYear) external returns (WhitePaperInterestRateModel) {
8
- WhitePaperInterestRateModel rate = new WhitePaperInterestRateModel(baseRatePerYear, multiplierPerYear);
9
-
10
- return rate;
11
- }
12
- }
@@ -1,10 +0,0 @@
1
- // SPDX-License-Identifier: BSD-3-Clause
2
- pragma solidity 0.8.13;
3
-
4
- import { UpgradeableBeacon } from "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol";
5
-
6
- contract Beacon is UpgradeableBeacon {
7
- constructor(address implementation_) UpgradeableBeacon(implementation_) {
8
- require(implementation_ != address(0), "Invalid implementation address");
9
- }
10
- }
@@ -1,29 +0,0 @@
1
- import { DeployFunction } from "hardhat-deploy/types";
2
- import { HardhatRuntimeEnvironment } from "hardhat/types";
3
-
4
- import { getConfig } from "../helpers/deploymentConfig";
5
-
6
- const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
7
- const { deployments, getNamedAccounts }: any = hre;
8
- const { deploy } = deployments;
9
- const { deployer } = await getNamedAccounts();
10
-
11
- const { tokensConfig } = await getConfig(hre.network.name);
12
-
13
- for (const token of tokensConfig) {
14
- if (token.isMock) {
15
- const contractName = `Mock${token.symbol}`;
16
- await deploy(contractName, {
17
- from: deployer,
18
- contract: "MockToken",
19
- args: [token.name, token.symbol, token.decimals],
20
- log: true,
21
- autoMine: true, // speed up deployment on local network (ganache, hardhat), no effect on live networks
22
- });
23
- }
24
- }
25
- };
26
-
27
- func.tags = ["MockTokens"];
28
-
29
- export default func;
@@ -1,7 +0,0 @@
1
- import deployOracle from "@venusprotocol/oracle/dist/deploy/1-deploy-oracles";
2
- import { HardhatRuntimeEnvironment } from "hardhat/types";
3
-
4
- deployOracle.tags = ["OracleDeploy"];
5
- deployOracle.skip = async (hre: HardhatRuntimeEnvironment) => hre.network.live;
6
-
7
- export default deployOracle;
@@ -1,7 +0,0 @@
1
- import configureOracleFeeds from "@venusprotocol/oracle/dist/deploy/2-configure-feeds";
2
- import { HardhatRuntimeEnvironment } from "hardhat/types";
3
-
4
- configureOracleFeeds.tags = ["Oracle"];
5
- configureOracleFeeds.skip = async (hre: HardhatRuntimeEnvironment) => hre.network.live;
6
-
7
- export default configureOracleFeeds;
@@ -1,20 +0,0 @@
1
- import { DeployFunction } from "hardhat-deploy/types";
2
- import { HardhatRuntimeEnvironment } from "hardhat/types";
3
-
4
- const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
5
- const { deployments, getNamedAccounts } = hre;
6
- const { deploy } = deployments;
7
- const { deployer } = await getNamedAccounts();
8
-
9
- await deploy("AccessControlManager", {
10
- from: deployer,
11
- args: [],
12
- log: true,
13
- autoMine: true,
14
- });
15
- };
16
-
17
- func.tags = ["AccessControl", "il"];
18
- func.skip = async (hre: HardhatRuntimeEnvironment) => hre.network.live;
19
-
20
- export default func;
@@ -1,82 +0,0 @@
1
- import { ethers } from "hardhat";
2
- import { DeployResult } from "hardhat-deploy/dist/types";
3
- import { DeployFunction } from "hardhat-deploy/types";
4
- import { HardhatRuntimeEnvironment } from "hardhat/types";
5
-
6
- const ADDRESS_ONE = "0x0000000000000000000000000000000000000001";
7
- const treasuryAddresses: { [network: string]: string } = {
8
- hardhat: "0x70997970C51812dc3A010C7d01b50e0d17dc79C8", // signer[1] from hardhat mnemonic
9
- bsctestnet: "0xFEA1c651A47FE29dB9b1bf3cC1f224d8D9CFF68C", // one of testnet admin accounts
10
- bscmainnet: "0xF322942f644A996A617BD29c16bd7d231d9F35E9", // Venus Treasury
11
- };
12
-
13
- type AcmAddresses = {
14
- bsctestnet: string;
15
- bscmainnet: string;
16
- };
17
-
18
- const acmAddresses: AcmAddresses = {
19
- bsctestnet: "0x45f8a08F534f34A97187626E05d4b6648Eeaa9AA",
20
- bscmainnet: "0x4788629ABc6cFCA10F9f969efdEAa1cF70c23555",
21
- };
22
-
23
- const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
24
- const { deployments, getNamedAccounts } = hre;
25
- const { deploy } = deployments;
26
- const { deployer } = await getNamedAccounts();
27
- let accessControlManager;
28
- if (hre.network.live) {
29
- const networkName = hre.network.name === "bscmainnet" ? "bscmainnet" : "bsctestnet";
30
- accessControlManager = await ethers.getContractAt("AccessControlManager", acmAddresses[networkName]);
31
- } else {
32
- accessControlManager = await ethers.getContract("AccessControlManager");
33
- }
34
-
35
- const vBep20Factory: DeployResult = await deploy("VTokenProxyFactory", {
36
- from: deployer,
37
- args: [],
38
- log: true,
39
- autoMine: true, // speed up deployment on local network (ganache, hardhat), no effect on live networks
40
- });
41
-
42
- const jumpRateModelFactory: DeployResult = await deploy("JumpRateModelFactory", {
43
- from: deployer,
44
- args: [],
45
- log: true,
46
- autoMine: true,
47
- });
48
-
49
- const whitePaperRateFactory: DeployResult = await deploy("WhitePaperInterestRateModelFactory", {
50
- from: deployer,
51
- args: [],
52
- log: true,
53
- autoMine: true,
54
- });
55
-
56
- await deploy("PoolRegistry", {
57
- from: deployer,
58
- contract: "PoolRegistry",
59
- proxy: {
60
- owner: deployer,
61
- proxyContract: "OpenZeppelinTransparentProxy",
62
- execute: {
63
- methodName: "initialize",
64
- args: [
65
- vBep20Factory.address,
66
- jumpRateModelFactory.address,
67
- whitePaperRateFactory.address,
68
- ADDRESS_ONE,
69
- treasuryAddresses[hre.network.name],
70
- accessControlManager.address,
71
- ],
72
- },
73
- upgradeIndex: 0,
74
- },
75
- autoMine: true,
76
- log: true,
77
- });
78
- };
79
-
80
- func.tags = ["Factories", "il"];
81
-
82
- export default func;
@@ -1,142 +0,0 @@
1
- import { ethers } from "hardhat";
2
- import { DeployFunction } from "hardhat-deploy/types";
3
- import { HardhatRuntimeEnvironment } from "hardhat/types";
4
-
5
- type AcmAddresses = {
6
- bsctestnet: string;
7
- bscmainnet: string;
8
- };
9
-
10
- const ADDRESSES: AcmAddresses = {
11
- bsctestnet: "0x45f8a08F534f34A97187626E05d4b6648Eeaa9AA",
12
- bscmainnet: "0x4788629ABc6cFCA10F9f969efdEAa1cF70c23555",
13
- };
14
-
15
- const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
16
- const { deployments, getNamedAccounts } = hre;
17
- const { deploy } = deployments;
18
- const { deployer } = await getNamedAccounts();
19
- const poolRegistry = await ethers.getContract("PoolRegistry");
20
- const vBep20Factory = await ethers.getContract("VTokenProxyFactory");
21
- let accessControlManager;
22
- if (hre.network.live) {
23
- const networkName = hre.network.name === "bscmainnet" ? "bscmainnet" : "bsctestnet";
24
- accessControlManager = await ethers.getContractAt("AccessControlManager", ADDRESSES[networkName]);
25
- } else {
26
- await deploy("AccessControlManager", {
27
- from: deployer,
28
- args: [],
29
- log: true,
30
- autoMine: true,
31
- });
32
- accessControlManager = await ethers.getContract("AccessControlManager");
33
- }
34
-
35
- console.log("==================================================");
36
- console.log("Access Control Initial Configuration: ");
37
- console.log("==================================================");
38
- console.log(" Role | Contract | Function Sig");
39
- console.log("--------------------------------------------------");
40
- let tx = await accessControlManager.giveCallPermission(
41
- ethers.constants.AddressZero,
42
- "setCollateralFactor(address,uint256,uint256)",
43
- poolRegistry.address,
44
- );
45
- await tx.wait();
46
-
47
- console.log("DEFAULT_ADMIN | PoolRegistry | setCollateralFactor(address,uint256,uint256)");
48
-
49
- tx = await accessControlManager.giveCallPermission(
50
- ethers.constants.AddressZero,
51
- "setMarketSupplyCaps(address[],uint256[])",
52
- poolRegistry.address,
53
- );
54
- await tx.wait();
55
-
56
- console.log("DEFAULT_ADMIN | PoolRegistry | setMarketSupplyCaps(address[],uint256[])");
57
-
58
- tx = await accessControlManager.giveCallPermission(
59
- ethers.constants.AddressZero,
60
- "setMarketBorrowCaps(address[],uint256[])",
61
- poolRegistry.address,
62
- );
63
- await tx.wait();
64
- console.log("DEFAULT_ADMIN | PoolRegistry | setMarketBorrowCaps(address[],uint256[])");
65
-
66
- tx = await accessControlManager.giveCallPermission(
67
- ethers.constants.AddressZero,
68
- "setLiquidationIncentive(uint256)",
69
- poolRegistry.address,
70
- );
71
- await tx.wait();
72
- console.log("DEFAULT_ADMIN | PoolRegistry | setLiquidationIncentive(uint256)");
73
-
74
- tx = await accessControlManager.giveCallPermission(
75
- ethers.constants.AddressZero,
76
- "setCloseFactor(uint256)",
77
- poolRegistry.address,
78
- );
79
- await tx.wait();
80
- console.log("DEFAULT_ADMIN | PoolRegistry | setCloseFactor(uint256)");
81
-
82
- tx = await accessControlManager.giveCallPermission(
83
- ethers.constants.AddressZero,
84
- "setMinLiquidatableCollateral(uint256)",
85
- poolRegistry.address,
86
- );
87
- await tx.wait();
88
- console.log("DEFAULT_ADMIN | PoolRegistry | setMinLiquidatableCollateral(uint256)");
89
-
90
- tx = await accessControlManager.giveCallPermission(
91
- ethers.constants.AddressZero,
92
- "supportMarket(address)",
93
- poolRegistry.address,
94
- );
95
- await tx.wait();
96
- console.log("DEFAULT_ADMIN | PoolRegistry | supportMarket(address)");
97
-
98
- tx = await accessControlManager.giveCallPermission(
99
- ethers.constants.AddressZero,
100
- "setInterestRateModel(address)",
101
- vBep20Factory.address,
102
- );
103
- await tx.wait();
104
- console.log("DEFAULT_ADMIN | VTokenProxyFactory | setInterestRateModel(address)");
105
-
106
- tx = await accessControlManager.giveCallPermission(
107
- ethers.constants.AddressZero,
108
- "swapPoolsAssets(address[],uint256[],address[][])",
109
- deployer,
110
- );
111
- await tx.wait();
112
- console.log("DEFAULT_ADMIN | Deployer | swapPoolsAssets(address[],uint256[])");
113
-
114
- tx = await accessControlManager.giveCallPermission(
115
- poolRegistry.address,
116
- "createRegistryPool(string,address,uint256,uint256,uint256,address,uint256,address)",
117
- deployer,
118
- );
119
- await tx.wait();
120
- console.log(
121
- "PoolRegistry | Deployer | createRegistryPool(string,address,uint256,uint256,uint256,address,uint256,address)",
122
- );
123
-
124
- tx = await accessControlManager.giveCallPermission(poolRegistry.address, "addMarket(AddMarketInput)", deployer);
125
- await tx.wait();
126
- console.log("PoolRegistry | Deployer | addMarket(AddMarketInput)");
127
-
128
- tx = await accessControlManager.giveCallPermission(
129
- ethers.constants.AddressZero,
130
- "setRewardTokenSpeeds(address[],uint256[],uint256[])",
131
- deployer,
132
- );
133
- await tx.wait();
134
- console.log("DEFAULT_ADMIN | Deployer | setRewardTokenSpeeds(address[],uint256[],uint256[])");
135
-
136
- console.log("--------------------------------------------------");
137
- console.log("Access Control setup ended successfully");
138
- };
139
-
140
- func.tags = ["AccessControlConfig", "il"];
141
-
142
- export default func;
@@ -1,19 +0,0 @@
1
- import { DeployFunction } from "hardhat-deploy/types";
2
- import { HardhatRuntimeEnvironment } from "hardhat/types";
3
-
4
- const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
5
- const { deployments, getNamedAccounts } = hre;
6
- const { deploy } = deployments;
7
- const { deployer } = await getNamedAccounts();
8
-
9
- await deploy("PoolLens", {
10
- from: deployer,
11
- args: [],
12
- log: true,
13
- autoMine: true,
14
- });
15
- };
16
-
17
- func.tags = ["PoolLens", "il"];
18
-
19
- export default func;
@@ -1,171 +0,0 @@
1
- import { ethers } from "hardhat";
2
- import { DeployResult } from "hardhat-deploy/dist/types";
3
- import { DeployFunction } from "hardhat-deploy/types";
4
- import { HardhatRuntimeEnvironment } from "hardhat/types";
5
-
6
- import { getConfig, getTokenConfig } from "../helpers/deploymentConfig";
7
-
8
- const treasuryAddresses: { [network: string]: string } = {
9
- bsctestnet: "0xFEA1c651A47FE29dB9b1bf3cC1f224d8D9CFF68C", // one of testnet admin accounts
10
- bscmainnet: "0xF322942f644A996A617BD29c16bd7d231d9F35E9", // Venus Treasury
11
- };
12
-
13
- type AcmAddresses = {
14
- bsctestnet: string;
15
- bscmainnet: string;
16
- };
17
-
18
- const acmAddresses: AcmAddresses = {
19
- bsctestnet: "0x45f8a08F534f34A97187626E05d4b6648Eeaa9AA",
20
- bscmainnet: "0x4788629ABc6cFCA10F9f969efdEAa1cF70c23555",
21
- };
22
-
23
- const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
24
- const { deployments, getNamedAccounts } = hre;
25
- const { deploy } = deployments;
26
- const { deployer } = await getNamedAccounts();
27
- let tx;
28
- const priceOracle = await ethers.getContract("ResilientOracle");
29
- const poolRegistry = await ethers.getContract("PoolRegistry");
30
- let accessControlManager;
31
- if (hre.network.live) {
32
- const networkName = hre.network.name === "bscmainnet" ? "bscmainnet" : "bsctestnet";
33
- accessControlManager = await ethers.getContractAt("AccessControlManager", acmAddresses[networkName]);
34
- } else {
35
- accessControlManager = await ethers.getContract("AccessControlManager");
36
- }
37
- const maxLoopsLimit = 150;
38
-
39
- // Comptroller Beacon
40
- const comptrollerImpl: DeployResult = await deploy("ComptrollerImpl", {
41
- contract: "Comptroller",
42
- from: deployer,
43
- args: [poolRegistry.address],
44
- log: true,
45
- autoMine: true,
46
- });
47
-
48
- const ComptrollerBeacon: DeployResult = await deploy("ComptrollerBeacon", {
49
- contract: "Beacon",
50
- from: deployer,
51
- args: [comptrollerImpl.address],
52
- log: true,
53
- autoMine: true,
54
- });
55
-
56
- // VToken Beacon
57
- const vTokenImpl: DeployResult = await deploy("VtokenImpl", {
58
- contract: "VToken",
59
- from: deployer,
60
- args: [],
61
- log: true,
62
- autoMine: true,
63
- });
64
-
65
- const vTokenBeacon: DeployResult = await deploy("VTokenBeacon", {
66
- contract: "Beacon",
67
- from: deployer,
68
- args: [vTokenImpl.address],
69
- log: true,
70
- autoMine: true,
71
- });
72
-
73
- const { tokensConfig, poolConfig } = await getConfig(hre.network.name);
74
- let pools = await poolRegistry.callStatic.getAllPools();
75
-
76
- for (let i = 0; i < poolConfig.length; i++) {
77
- const pool = poolConfig[i];
78
- let comptrollerProxy;
79
-
80
- if (i >= pools.length) {
81
- // Create pool
82
- console.log("Registering new pool with name " + pool.name);
83
- tx = await poolRegistry.createRegistryPool(
84
- pool.name,
85
- ComptrollerBeacon.address,
86
- pool.closeFactor,
87
- pool.liquidationIncentive,
88
- pool.minLiquidatableCollateral,
89
- priceOracle.address,
90
- maxLoopsLimit,
91
- accessControlManager.address,
92
- );
93
- await tx.wait();
94
- console.log("New Pool Registered");
95
- pools = await poolRegistry.callStatic.getAllPools();
96
- comptrollerProxy = await ethers.getContractAt("Comptroller", pools[i].comptroller);
97
- tx = await comptrollerProxy.acceptOwnership();
98
- await tx.wait();
99
- } else {
100
- comptrollerProxy = await ethers.getContractAt("Comptroller", pools[i].comptroller);
101
- }
102
-
103
- // Add Markets
104
- for (const vtoken of pool.vtokens) {
105
- const {
106
- name,
107
- asset,
108
- symbol,
109
- rateModel,
110
- baseRatePerYear,
111
- multiplierPerYear,
112
- jumpMultiplierPerYear,
113
- kink_,
114
- collateralFactor,
115
- liquidationThreshold,
116
- reserveFactor,
117
- initialSupply,
118
- supplyCap,
119
- borrowCap,
120
- } = vtoken;
121
-
122
- const token = getTokenConfig(asset, tokensConfig);
123
- let tokenContract;
124
- if (token.isMock) {
125
- tokenContract = await ethers.getContract(`Mock${token.symbol}`);
126
- console.log("Minting " + initialSupply + " mock tokens to owner");
127
- tx = await tokenContract.faucet(initialSupply);
128
- await tx.wait(1);
129
- } else {
130
- tokenContract = await ethers.getContractAt(
131
- "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
132
- token.tokenAddress,
133
- );
134
- // Make sure that deployer has at least `initialSupply` balance of the token
135
- }
136
-
137
- console.log("Approving PoolRegistry for: " + initialSupply);
138
- tx = await tokenContract.approve(poolRegistry.address, initialSupply);
139
- await tx.wait(1);
140
- console.log("Adding market " + name + " to pool " + pool.name);
141
- tx = await poolRegistry.addMarket({
142
- comptroller: comptrollerProxy.address,
143
- asset: tokenContract.address,
144
- decimals: 8,
145
- name: name,
146
- symbol: symbol,
147
- rateModel: rateModel,
148
- baseRatePerYear: baseRatePerYear,
149
- multiplierPerYear: multiplierPerYear,
150
- jumpMultiplierPerYear: jumpMultiplierPerYear,
151
- kink_: kink_,
152
- collateralFactor: collateralFactor,
153
- liquidationThreshold: liquidationThreshold,
154
- reserveFactor: reserveFactor,
155
- accessControlManager: accessControlManager.address,
156
- beaconAddress: vTokenBeacon.address,
157
- initialSupply: initialSupply,
158
- vTokenReceiver: hre.network.name === "hardhat" ? deployer : treasuryAddresses[hre.network.name],
159
- supplyCap: supplyCap,
160
- borrowCap: borrowCap,
161
- });
162
- await tx.wait();
163
- console.log(`Market ${name} added to pool ${pool.name}`);
164
- console.log(`-----------------------------------------`);
165
- }
166
- }
167
- };
168
-
169
- func.tags = ["Pools", "il"];
170
-
171
- export default func;