@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,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const hardhat_1 = require("hardhat");
4
+ const acmAddresses = {
5
+ bsctestnet: "0x45f8a08F534f34A97187626E05d4b6648Eeaa9AA",
6
+ bscmainnet: "0x4788629ABc6cFCA10F9f969efdEAa1cF70c23555",
7
+ };
8
+ const func = async function (hre) {
9
+ const { deployments, getNamedAccounts } = hre;
10
+ const { deploy } = deployments;
11
+ const { deployer } = await getNamedAccounts();
12
+ let accessControlManager;
13
+ if (hre.network.live) {
14
+ const networkName = hre.network.name === "bscmainnet" ? "bscmainnet" : "bsctestnet";
15
+ accessControlManager = await hardhat_1.ethers.getContractAt("AccessControlManager", acmAddresses[networkName]);
16
+ }
17
+ else {
18
+ accessControlManager = await hardhat_1.ethers.getContract("AccessControlManager");
19
+ }
20
+ await deploy("PoolRegistry", {
21
+ from: deployer,
22
+ contract: "PoolRegistry",
23
+ proxy: {
24
+ owner: deployer,
25
+ proxyContract: "OpenZeppelinTransparentProxy",
26
+ execute: {
27
+ methodName: "initialize",
28
+ args: [accessControlManager.address],
29
+ },
30
+ upgradeIndex: 0,
31
+ },
32
+ autoMine: true,
33
+ log: true,
34
+ });
35
+ };
36
+ func.tags = ["Factories", "il"];
37
+ exports.default = func;
@@ -0,0 +1,3 @@
1
+ import { DeployFunction } from "hardhat-deploy/types";
2
+ declare const func: DeployFunction;
3
+ export default func;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const hardhat_1 = require("hardhat");
4
+ const ADDRESSES = {
5
+ bsctestnet: "0x45f8a08F534f34A97187626E05d4b6648Eeaa9AA",
6
+ bscmainnet: "0x4788629ABc6cFCA10F9f969efdEAa1cF70c23555",
7
+ };
8
+ const func = async function (hre) {
9
+ const { deployments, getNamedAccounts } = hre;
10
+ const { deploy } = deployments;
11
+ const { deployer } = await getNamedAccounts();
12
+ const poolRegistry = await hardhat_1.ethers.getContract("PoolRegistry");
13
+ let accessControlManager;
14
+ if (hre.network.live) {
15
+ const networkName = hre.network.name === "bscmainnet" ? "bscmainnet" : "bsctestnet";
16
+ accessControlManager = await hardhat_1.ethers.getContractAt("AccessControlManager", ADDRESSES[networkName]);
17
+ }
18
+ else {
19
+ await deploy("AccessControlManager", {
20
+ from: deployer,
21
+ args: [],
22
+ log: true,
23
+ autoMine: true,
24
+ });
25
+ accessControlManager = await hardhat_1.ethers.getContract("AccessControlManager");
26
+ }
27
+ console.log("==================================================");
28
+ console.log("Access Control Initial Configuration: ");
29
+ console.log("==================================================");
30
+ console.log(" Role | Contract | Function Sig");
31
+ console.log("--------------------------------------------------");
32
+ let tx = await accessControlManager.giveCallPermission(hardhat_1.ethers.constants.AddressZero, "setCollateralFactor(address,uint256,uint256)", poolRegistry.address);
33
+ await tx.wait();
34
+ console.log("DEFAULT_ADMIN | PoolRegistry | setCollateralFactor(address,uint256,uint256)");
35
+ tx = await accessControlManager.giveCallPermission(hardhat_1.ethers.constants.AddressZero, "setMarketSupplyCaps(address[],uint256[])", poolRegistry.address);
36
+ await tx.wait();
37
+ console.log("DEFAULT_ADMIN | PoolRegistry | setMarketSupplyCaps(address[],uint256[])");
38
+ tx = await accessControlManager.giveCallPermission(hardhat_1.ethers.constants.AddressZero, "setMarketBorrowCaps(address[],uint256[])", poolRegistry.address);
39
+ await tx.wait();
40
+ console.log("DEFAULT_ADMIN | PoolRegistry | setMarketBorrowCaps(address[],uint256[])");
41
+ tx = await accessControlManager.giveCallPermission(hardhat_1.ethers.constants.AddressZero, "setLiquidationIncentive(uint256)", poolRegistry.address);
42
+ await tx.wait();
43
+ console.log("DEFAULT_ADMIN | PoolRegistry | setLiquidationIncentive(uint256)");
44
+ tx = await accessControlManager.giveCallPermission(hardhat_1.ethers.constants.AddressZero, "setCloseFactor(uint256)", poolRegistry.address);
45
+ await tx.wait();
46
+ console.log("DEFAULT_ADMIN | PoolRegistry | setCloseFactor(uint256)");
47
+ tx = await accessControlManager.giveCallPermission(hardhat_1.ethers.constants.AddressZero, "setMinLiquidatableCollateral(uint256)", poolRegistry.address);
48
+ await tx.wait();
49
+ console.log("DEFAULT_ADMIN | PoolRegistry | setMinLiquidatableCollateral(uint256)");
50
+ tx = await accessControlManager.giveCallPermission(hardhat_1.ethers.constants.AddressZero, "supportMarket(address)", poolRegistry.address);
51
+ await tx.wait();
52
+ console.log("DEFAULT_ADMIN | PoolRegistry | supportMarket(address)");
53
+ tx = await accessControlManager.giveCallPermission(hardhat_1.ethers.constants.AddressZero, "swapPoolsAssets(address[],uint256[],address[][])", deployer);
54
+ await tx.wait();
55
+ console.log("DEFAULT_ADMIN | Deployer | swapPoolsAssets(address[],uint256[])");
56
+ tx = await accessControlManager.giveCallPermission(poolRegistry.address, "addPool(string,address,uint256,uint256,uint256)", deployer);
57
+ await tx.wait();
58
+ console.log("PoolRegistry | Deployer | addPool(string,address,uint256,uint256,uint256)");
59
+ tx = await accessControlManager.giveCallPermission(poolRegistry.address, "addMarket(AddMarketInput)", deployer);
60
+ await tx.wait();
61
+ console.log("PoolRegistry | Deployer | addMarket(AddMarketInput)");
62
+ tx = await accessControlManager.giveCallPermission(hardhat_1.ethers.constants.AddressZero, "setRewardTokenSpeeds(address[],uint256[],uint256[])", deployer);
63
+ await tx.wait();
64
+ console.log("DEFAULT_ADMIN | Deployer | setRewardTokenSpeeds(address[],uint256[],uint256[])");
65
+ console.log("--------------------------------------------------");
66
+ console.log("Access Control setup ended successfully");
67
+ };
68
+ func.tags = ["AccessControlConfig", "il"];
69
+ exports.default = func;
@@ -0,0 +1,3 @@
1
+ import { DeployFunction } from "hardhat-deploy/types";
2
+ declare const func: DeployFunction;
3
+ export default func;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const func = async function (hre) {
4
+ const { deployments, getNamedAccounts } = hre;
5
+ const { deploy } = deployments;
6
+ const { deployer } = await getNamedAccounts();
7
+ await deploy("PoolLens", {
8
+ from: deployer,
9
+ args: [],
10
+ log: true,
11
+ autoMine: true,
12
+ });
13
+ };
14
+ func.tags = ["PoolLens", "il"];
15
+ exports.default = func;
@@ -0,0 +1,3 @@
1
+ import { DeployFunction } from "hardhat-deploy/types";
2
+ declare const func: DeployFunction;
3
+ export default func;
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ethers_1 = require("ethers");
4
+ const utils_1 = require("ethers/lib/utils");
5
+ const hardhat_1 = require("hardhat");
6
+ const deploymentConfig_1 = require("../helpers/deploymentConfig");
7
+ const deploymentConfig_2 = require("../helpers/deploymentConfig");
8
+ const ADDRESS_ONE = "0x0000000000000000000000000000000000000001";
9
+ const treasuryAddresses = {
10
+ hardhat: "0x70997970C51812dc3A010C7d01b50e0d17dc79C8",
11
+ bsctestnet: "0xFEA1c651A47FE29dB9b1bf3cC1f224d8D9CFF68C",
12
+ bscmainnet: "0xF322942f644A996A617BD29c16bd7d231d9F35E9", // Venus Treasury
13
+ };
14
+ const acmAddresses = {
15
+ bsctestnet: "0x45f8a08F534f34A97187626E05d4b6648Eeaa9AA",
16
+ bscmainnet: "0x4788629ABc6cFCA10F9f969efdEAa1cF70c23555",
17
+ };
18
+ const mantissaToBps = (num) => {
19
+ return ethers_1.BigNumber.from(num).div((0, utils_1.parseUnits)("1", 14)).toString();
20
+ };
21
+ const func = async function (hre) {
22
+ const { deployments, getNamedAccounts } = hre;
23
+ const { deploy } = deployments;
24
+ const { deployer } = await getNamedAccounts();
25
+ let tx;
26
+ const priceOracle = await hardhat_1.ethers.getContract("ResilientOracle");
27
+ const poolRegistry = await hardhat_1.ethers.getContract("PoolRegistry");
28
+ let accessControlManager;
29
+ if (hre.network.live) {
30
+ const networkName = hre.network.name === "bscmainnet" ? "bscmainnet" : "bsctestnet";
31
+ accessControlManager = await hardhat_1.ethers.getContractAt("AccessControlManager", acmAddresses[networkName]);
32
+ }
33
+ else {
34
+ accessControlManager = await hardhat_1.ethers.getContract("AccessControlManager");
35
+ }
36
+ const maxLoopsLimit = 150;
37
+ // Comptroller Beacon
38
+ const comptrollerImpl = await deploy("ComptrollerImpl", {
39
+ contract: "Comptroller",
40
+ from: deployer,
41
+ args: [poolRegistry.address],
42
+ log: true,
43
+ autoMine: true,
44
+ });
45
+ const comptrollerBeacon = await deploy("ComptrollerBeacon", {
46
+ contract: "UpgradeableBeacon",
47
+ from: deployer,
48
+ args: [comptrollerImpl.address],
49
+ log: true,
50
+ autoMine: true,
51
+ });
52
+ // VToken Beacon
53
+ const vTokenImpl = await deploy("VTokenImpl", {
54
+ contract: "VToken",
55
+ from: deployer,
56
+ args: [],
57
+ log: true,
58
+ autoMine: true,
59
+ });
60
+ const vTokenBeacon = await deploy("VTokenBeacon", {
61
+ contract: "UpgradeableBeacon",
62
+ from: deployer,
63
+ args: [vTokenImpl.address],
64
+ log: true,
65
+ autoMine: true,
66
+ });
67
+ const { tokensConfig, poolConfig } = await (0, deploymentConfig_1.getConfig)(hre.network.name);
68
+ const pools = await poolRegistry.callStatic.getAllPools();
69
+ for (let i = 0; i < poolConfig.length; i++) {
70
+ const pool = poolConfig[i];
71
+ let comptrollerProxy;
72
+ if (i >= pools.length) {
73
+ // Deploying a proxy for Comptroller
74
+ console.log("Deploying a proxy for Comptroller");
75
+ const Comptroller = await hardhat_1.ethers.getContractFactory("Comptroller");
76
+ comptrollerProxy = await deploy(`Comptroller_${pool.name}`, {
77
+ from: deployer,
78
+ contract: "BeaconProxy",
79
+ args: [
80
+ comptrollerBeacon.address,
81
+ Comptroller.interface.encodeFunctionData("initialize", [maxLoopsLimit, accessControlManager.address]),
82
+ ],
83
+ log: true,
84
+ autoMine: true,
85
+ });
86
+ // Deploying a proxy for Comptroller
87
+ console.log("Setting price oracle for Comptroller");
88
+ const comptroller = await hardhat_1.ethers.getContractAt("Comptroller", comptrollerProxy.address);
89
+ tx = await comptroller.setPriceOracle(priceOracle.address);
90
+ await tx.wait();
91
+ // Create pool
92
+ console.log("Registering new pool with name " + pool.name);
93
+ tx = await poolRegistry.addPool(pool.name, comptroller.address, pool.closeFactor, pool.liquidationIncentive, pool.minLiquidatableCollateral);
94
+ await tx.wait();
95
+ console.log("New Pool Registered");
96
+ }
97
+ else {
98
+ comptrollerProxy = await hardhat_1.ethers.getContractAt("Comptroller", pools[i].comptroller);
99
+ }
100
+ // Add Markets
101
+ for (const vtoken of pool.vtokens) {
102
+ const { name, asset, symbol, rateModel, baseRatePerYear, multiplierPerYear, jumpMultiplierPerYear, kink_, collateralFactor, liquidationThreshold, reserveFactor, initialSupply, supplyCap, borrowCap, } = vtoken;
103
+ const token = (0, deploymentConfig_1.getTokenConfig)(asset, tokensConfig);
104
+ let tokenContract;
105
+ if (token.isMock) {
106
+ tokenContract = await hardhat_1.ethers.getContract(`Mock${token.symbol}`);
107
+ console.log("Minting " + initialSupply + " mock tokens to owner");
108
+ tx = await tokenContract.faucet(initialSupply);
109
+ await tx.wait(1);
110
+ }
111
+ else {
112
+ tokenContract = await hardhat_1.ethers.getContractAt("@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20", token.tokenAddress);
113
+ // Make sure that deployer has at least `initialSupply` balance of the token
114
+ }
115
+ let rateModelAddress;
116
+ if (rateModel === deploymentConfig_2.InterestRateModels.JumpRate.toString()) {
117
+ const [b, m, j, k] = [baseRatePerYear, multiplierPerYear, jumpMultiplierPerYear, kink_].map(mantissaToBps);
118
+ const rateModelName = `JumpRateModelV2_base${b}bps_slope${m}bps_jump${j}bps_kink${k}bps`;
119
+ console.log(`Deploying interest rate model ${rateModelName}`);
120
+ const result = await deploy(rateModelName, {
121
+ from: deployer,
122
+ contract: "JumpRateModelV2",
123
+ args: [baseRatePerYear, multiplierPerYear, jumpMultiplierPerYear, kink_, accessControlManager.address],
124
+ log: true,
125
+ autoMine: true,
126
+ });
127
+ rateModelAddress = result.address;
128
+ }
129
+ else {
130
+ const [b, m] = [baseRatePerYear, multiplierPerYear].map(mantissaToBps);
131
+ const rateModelName = `WhitePaperInterestRateModel_base${b}bps_slope${m}bps`;
132
+ console.log(`Deploying interest rate model ${rateModelName}`);
133
+ const result = await deploy(rateModelName, {
134
+ from: deployer,
135
+ contract: "WhitePaperInterestRateModel",
136
+ args: [baseRatePerYear, multiplierPerYear],
137
+ log: true,
138
+ autoMine: true,
139
+ });
140
+ rateModelAddress = result.address;
141
+ }
142
+ console.log(`Deploying VToken proxy for ${symbol}`);
143
+ const VToken = await hardhat_1.ethers.getContractFactory("VToken");
144
+ const underlyingDecimals = Number(await tokenContract.decimals());
145
+ const vTokenDecimals = 8;
146
+ const args = [
147
+ tokenContract.address,
148
+ comptrollerProxy.address,
149
+ rateModelAddress,
150
+ (0, utils_1.parseUnits)("1", underlyingDecimals + 18 - vTokenDecimals),
151
+ name,
152
+ symbol,
153
+ vTokenDecimals,
154
+ deployer,
155
+ accessControlManager.address,
156
+ [treasuryAddresses[hre.network.name], ADDRESS_ONE],
157
+ reserveFactor,
158
+ ];
159
+ const vToken = await deploy(`VToken_${name}`, {
160
+ from: deployer,
161
+ contract: "BeaconProxy",
162
+ args: [vTokenBeacon.address, VToken.interface.encodeFunctionData("initialize", args)],
163
+ log: true,
164
+ autoMine: true,
165
+ });
166
+ console.log("Approving PoolRegistry for: " + initialSupply);
167
+ tx = await tokenContract.approve(poolRegistry.address, initialSupply);
168
+ await tx.wait(1);
169
+ console.log("Adding market " + name + " to pool " + pool.name);
170
+ tx = await poolRegistry.addMarket({
171
+ vToken: vToken.address,
172
+ collateralFactor: collateralFactor,
173
+ liquidationThreshold: liquidationThreshold,
174
+ initialSupply: initialSupply,
175
+ vTokenReceiver: hre.network.name === "hardhat" ? deployer : treasuryAddresses[hre.network.name],
176
+ supplyCap: supplyCap,
177
+ borrowCap: borrowCap,
178
+ });
179
+ await tx.wait();
180
+ console.log(`Market ${name} added to pool ${pool.name}`);
181
+ console.log(`-----------------------------------------`);
182
+ }
183
+ }
184
+ };
185
+ func.tags = ["Pools", "il"];
186
+ exports.default = func;
@@ -0,0 +1,3 @@
1
+ import { DeployFunction } from "hardhat-deploy/types";
2
+ declare const func: DeployFunction;
3
+ export default func;
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const hardhat_1 = require("hardhat");
4
+ const deploymentConfig_1 = require("../helpers/deploymentConfig");
5
+ const acmAddresses = {
6
+ bsctestnet: "0x45f8a08F534f34A97187626E05d4b6648Eeaa9AA",
7
+ bscmainnet: "0x4788629ABc6cFCA10F9f969efdEAa1cF70c23555",
8
+ };
9
+ const func = async function (hre) {
10
+ const { deployments, getNamedAccounts } = hre;
11
+ const { deploy } = deployments;
12
+ const { deployer } = await getNamedAccounts();
13
+ const maxLoopsLimit = 150;
14
+ const poolRegistry = await hardhat_1.ethers.getContract("PoolRegistry");
15
+ let accessControl;
16
+ if (hre.network.live) {
17
+ const networkName = hre.network.name === "bscmainnet" ? "bscmainnet" : "bsctestnet";
18
+ accessControl = await hardhat_1.ethers.getContractAt("AccessControlManager", acmAddresses[networkName]);
19
+ }
20
+ else {
21
+ accessControl = await hardhat_1.ethers.getContract("AccessControlManager");
22
+ }
23
+ const { tokensConfig, poolConfig } = await (0, deploymentConfig_1.getConfig)(hre.network.name);
24
+ const pools = await poolRegistry.callStatic.getAllPools();
25
+ for (let i = 0; i < poolConfig.length; i++) {
26
+ const rewards = poolConfig[i].rewards;
27
+ if (!rewards)
28
+ continue;
29
+ for (const reward of rewards) {
30
+ const comptrollerAddress = pools[i].comptroller;
31
+ // Get reward token address
32
+ const tokenConfig = (0, deploymentConfig_1.getTokenConfig)(reward.asset, tokensConfig);
33
+ const rewardTokenAddress = await (0, deploymentConfig_1.getTokenAddress)(tokenConfig, deployments);
34
+ // Custom contract name so we can obtain the proxy after that easily
35
+ const contractName = "Rewards" + reward.asset + poolConfig[i].name;
36
+ await deploy(contractName, {
37
+ from: deployer,
38
+ contract: "RewardsDistributor",
39
+ proxy: {
40
+ owner: deployer,
41
+ proxyContract: "OpenZeppelinTransparentProxy",
42
+ execute: {
43
+ methodName: "initialize",
44
+ args: [comptrollerAddress, rewardTokenAddress, maxLoopsLimit, accessControl.address],
45
+ },
46
+ upgradeIndex: 0,
47
+ },
48
+ autoMine: true,
49
+ log: true,
50
+ });
51
+ const rewardsDistributor = await hardhat_1.ethers.getContract(contractName);
52
+ const vTokens = [];
53
+ for (const marketUnderlying of reward.markets) {
54
+ const assetConfig = (0, deploymentConfig_1.getTokenConfig)(marketUnderlying, tokensConfig);
55
+ const tokenAddress = await (0, deploymentConfig_1.getTokenAddress)(assetConfig, deployments);
56
+ const marketAddress = await poolRegistry.getVTokenForAsset(comptrollerAddress, tokenAddress);
57
+ vTokens.push(marketAddress);
58
+ }
59
+ let tx = await rewardsDistributor.setRewardTokenSpeeds(vTokens, reward.supplySpeeds, reward.borrowSpeeds);
60
+ await tx.wait(1);
61
+ const comptrollerProxy = await hardhat_1.ethers.getContractAt("Comptroller", pools[i].comptroller);
62
+ try {
63
+ console.log("Adding reward distributor to comptroller " + comptrollerAddress);
64
+ tx = await comptrollerProxy.addRewardsDistributor(rewardsDistributor.address);
65
+ await tx.wait(1);
66
+ console.log("Added rewards distributor sucessfully");
67
+ }
68
+ catch (e) {
69
+ console.log("Rewards distributor already added.");
70
+ continue;
71
+ }
72
+ }
73
+ }
74
+ };
75
+ func.tags = ["Rewards", "il"];
76
+ exports.default = func;
@@ -0,0 +1,3 @@
1
+ import { DeployFunction } from "hardhat-deploy/types";
2
+ declare const func: DeployFunction;
3
+ export default func;
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const hardhat_1 = require("hardhat");
4
+ const targetOwners = {
5
+ hardhat: "0x70997970C51812dc3A010C7d01b50e0d17dc79C8",
6
+ bsctestnet: "0xFA747c4a62c4D168276329F822d004026A1c05E9",
7
+ mainnet: "0x939bD8d64c0A9583A7Dcea9933f7b21697ab6396", // NORMAL VIP Timelock
8
+ };
9
+ const contracts = {
10
+ singleStepOwnership: ["ComptrollerBeacon", "VTokenBeacon", "DefaultProxyAdmin"],
11
+ twoStepOwnership: [
12
+ "PoolRegistry",
13
+ "RewardsBNXPool 1",
14
+ "RewardsXVSPool 1",
15
+ "RewardsANKRPool 2",
16
+ "RewardsXVSPool 2",
17
+ "RewardsMBOXPool 2",
18
+ "RewardsNFTPool 2",
19
+ "RewardsRACAPool 2",
20
+ ],
21
+ };
22
+ const func = async function (hre) {
23
+ await transferSingleStepOwnerships(contracts.singleStepOwnership, hre.network.name);
24
+ await transfer2StepOwnerships(contracts.twoStepOwnership, hre.network.name);
25
+ // Transfer ownership to the already added pools
26
+ const poolRegistry = await hardhat_1.ethers.getContract("PoolRegistry");
27
+ const pools = await poolRegistry.callStatic.getAllPools();
28
+ for (const pool of pools) {
29
+ const comptrollerProxy = await hardhat_1.ethers.getContractAt("Comptroller", pool.comptroller);
30
+ const owner = await comptrollerProxy.owner();
31
+ if (owner !== targetOwners[hre.network.name]) {
32
+ const tx = await comptrollerProxy.transferOwnership(targetOwners[hre.network.name]);
33
+ await tx.wait(1);
34
+ const pendingOwner = await comptrollerProxy.pendingOwner();
35
+ console.log(`Comptroller ${comptrollerProxy.address} owner ${owner} sucessfully changed to ${pendingOwner}. Please accept the ownership.`);
36
+ }
37
+ else {
38
+ console.error(`Comptroller ${comptrollerProxy} owner ${owner} is equal to target ownership address ${targetOwners[hre.network.name]}`);
39
+ }
40
+ }
41
+ };
42
+ const transfer2StepOwnerships = async (contractNames, networkName) => {
43
+ for (const contractName of contractNames) {
44
+ const contract = await hardhat_1.ethers.getContract(contractName);
45
+ const owner = await contract.owner();
46
+ let tx;
47
+ if (owner !== targetOwners[networkName]) {
48
+ tx = await contract.transferOwnership(targetOwners[networkName]);
49
+ await tx.wait(1);
50
+ const pendingOwner = await contract.pendingOwner();
51
+ console.log(`${contractName} owner ${owner} sucessfully changed to ${pendingOwner}. Please accept the ownership.`);
52
+ }
53
+ else {
54
+ console.error(`${contractName} owner ${owner} is equal to target ownership address ${targetOwners[networkName]}`);
55
+ }
56
+ }
57
+ };
58
+ const transferSingleStepOwnerships = async (contractNames, networkName) => {
59
+ for (const contractName of contractNames) {
60
+ const contract = await hardhat_1.ethers.getContract(contractName);
61
+ const owner = await contract.owner();
62
+ let tx;
63
+ if (owner !== targetOwners[networkName]) {
64
+ tx = await contract.transferOwnership(targetOwners[networkName]);
65
+ await tx.wait(1);
66
+ const newOwner = await contract.owner();
67
+ console.log(`${contractName} owner ${owner} sucessfully changed to ${newOwner}.`);
68
+ }
69
+ else {
70
+ console.error(`${contractName} owner ${owner} is equal to target ownership address ${targetOwners[networkName]}`);
71
+ }
72
+ }
73
+ };
74
+ func.tags = ["TransferPoolsOwnership"];
75
+ exports.default = func;
@@ -0,0 +1,3 @@
1
+ import { DeployFunction } from "hardhat-deploy/types";
2
+ declare const func: DeployFunction;
3
+ export default func;
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const ERC20 = __importStar(require("@openzeppelin/contracts/build/contracts/ERC20.json"));
27
+ const hardhat_1 = require("hardhat");
28
+ const deploymentConfig_1 = require("../helpers/deploymentConfig");
29
+ const utils_1 = require("../helpers/utils");
30
+ const MIN_AMOUNT_TO_CONVERT = (0, utils_1.convertToUnit)(10, 18);
31
+ const MIN_POOL_BAD_DEBT = (0, utils_1.convertToUnit)(1000, 18);
32
+ const maxLoopsLimit = 150;
33
+ const getAllMarkets = async (poolRegistry) => {
34
+ const pools = await poolRegistry.getAllPools();
35
+ const markets = await Promise.all(pools.map(async ({ comptroller }) => {
36
+ const poolComptroller = await hardhat_1.ethers.getContractAt("Comptroller", comptroller);
37
+ const vTokenAddresses = await poolComptroller.getAllMarkets();
38
+ const vTokens = await Promise.all(vTokenAddresses.map((vTokenAddress) => hardhat_1.ethers.getContractAt("VToken", vTokenAddress)));
39
+ return vTokens;
40
+ }));
41
+ return markets.flat();
42
+ };
43
+ const configureVToken = async (vToken, shortfallAddress, protocolShareReserveAddress) => {
44
+ console.log("Setting shortfall contract for vToken: ", vToken.address);
45
+ const tx1 = await vToken.setShortfallContract(shortfallAddress);
46
+ await tx1.wait();
47
+ console.log("Setting protocol share reserve for vToken: ", vToken.address);
48
+ const tx2 = await vToken.setProtocolShareReserve(protocolShareReserveAddress);
49
+ await tx2.wait();
50
+ console.log("Finished configuring vToken: ", vToken.address);
51
+ };
52
+ const acmAddresses = {
53
+ bsctestnet: "0x45f8a08F534f34A97187626E05d4b6648Eeaa9AA",
54
+ bscmainnet: "0x4788629ABc6cFCA10F9f969efdEAa1cF70c23555",
55
+ };
56
+ const func = async function (hre) {
57
+ const { deployments, getNamedAccounts } = hre;
58
+ const { deploy } = deployments;
59
+ const { deployer } = await getNamedAccounts();
60
+ const { tokensConfig } = await (0, deploymentConfig_1.getConfig)(hre.network.name);
61
+ const busdConfig = (0, deploymentConfig_1.getTokenConfig)("BUSD", tokensConfig);
62
+ let BUSD;
63
+ if (busdConfig.isMock) {
64
+ BUSD = await hardhat_1.ethers.getContract("MockBUSD");
65
+ }
66
+ else {
67
+ BUSD = await hardhat_1.ethers.getContractAt(ERC20.abi, busdConfig.tokenAddress);
68
+ }
69
+ const poolRegistry = await hardhat_1.ethers.getContract("PoolRegistry");
70
+ const deployerSigner = hardhat_1.ethers.provider.getSigner(deployer);
71
+ const swapRouter = await hardhat_1.ethers.getContract("SwapRouter");
72
+ let accessControl;
73
+ if (hre.network.live) {
74
+ const networkName = hre.network.name === "bscmainnet" ? "bscmainnet" : "bsctestnet";
75
+ accessControl = await hardhat_1.ethers.getContractAt("AccessControlManager", acmAddresses[networkName]);
76
+ }
77
+ else {
78
+ accessControl = await hardhat_1.ethers.getContract("AccessControlManager");
79
+ }
80
+ const proxyAdmin = await hardhat_1.ethers.getContract("DefaultProxyAdmin");
81
+ const owner = await proxyAdmin.owner();
82
+ await deploy("RiskFund", {
83
+ from: deployer,
84
+ contract: "RiskFund",
85
+ proxy: {
86
+ owner: owner,
87
+ proxyContract: "OpenZeppelinTransparentProxy",
88
+ execute: {
89
+ methodName: "initialize",
90
+ args: [swapRouter.address, MIN_AMOUNT_TO_CONVERT, BUSD.address, accessControl.address, maxLoopsLimit],
91
+ },
92
+ upgradeIndex: 0,
93
+ },
94
+ autoMine: true,
95
+ log: true,
96
+ });
97
+ const riskFund = await hardhat_1.ethers.getContract("RiskFund");
98
+ const shortfallDeployment = await deploy("Shortfall", {
99
+ from: deployer,
100
+ contract: "Shortfall",
101
+ proxy: {
102
+ owner: owner,
103
+ proxyContract: "OpenZeppelinTransparentProxy",
104
+ execute: {
105
+ methodName: "initialize",
106
+ args: [BUSD.address, riskFund.address, MIN_POOL_BAD_DEBT, accessControl.address],
107
+ },
108
+ upgradeIndex: 0,
109
+ },
110
+ autoMine: true,
111
+ log: true,
112
+ });
113
+ const shortfall = await hardhat_1.ethers.getContract("Shortfall");
114
+ const tx1 = await shortfall.connect(deployerSigner).updatePoolRegistry(poolRegistry.address);
115
+ await tx1.wait();
116
+ const tx2 = await riskFund.setShortfallContractAddress(shortfallDeployment.address);
117
+ await tx2.wait(1);
118
+ const protocolShareReserveDeployment = await deploy("ProtocolShareReserve", {
119
+ from: deployer,
120
+ contract: "ProtocolShareReserve",
121
+ proxy: {
122
+ owner: owner,
123
+ proxyContract: "OpenZeppelinTransparentProxy",
124
+ execute: {
125
+ methodName: "initialize",
126
+ args: [deployer, riskFund.address],
127
+ },
128
+ upgradeIndex: 0,
129
+ },
130
+ autoMine: true,
131
+ log: true,
132
+ });
133
+ const allMarkets = await getAllMarkets(poolRegistry);
134
+ for (const market of allMarkets) {
135
+ await configureVToken(market, shortfallDeployment.address, protocolShareReserveDeployment.address);
136
+ }
137
+ };
138
+ func.tags = ["RiskFund", "il"];
139
+ exports.default = func;
@@ -0,0 +1,3 @@
1
+ import { DeployFunction } from "hardhat-deploy/types";
2
+ declare const func: DeployFunction;
3
+ export default func;