@venusprotocol/protocol-reserve 1.0.0-converters.1

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 (280) hide show
  1. package/README.md +75 -0
  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/token/ERC20/ERC20.sol/ERC20.dbg.json +4 -0
  7. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +297 -0
  8. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +4 -0
  9. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json +194 -0
  10. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +4 -0
  11. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json +233 -0
  12. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +4 -0
  13. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json +10 -0
  14. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +4 -0
  15. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +10 -0
  16. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json +4 -0
  17. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json +30 -0
  18. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json +4 -0
  19. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json +30 -0
  20. package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json +4 -0
  21. package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json +10 -0
  22. package/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.dbg.json +4 -0
  23. package/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json +10 -0
  24. package/artifacts/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol/Ownable2StepUpgradeable.dbg.json +4 -0
  25. package/artifacts/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol/Ownable2StepUpgradeable.json +115 -0
  26. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +4 -0
  27. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +76 -0
  28. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +4 -0
  29. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +24 -0
  30. package/artifacts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +4 -0
  31. package/artifacts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.json +63 -0
  32. package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.dbg.json +4 -0
  33. package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.json +24 -0
  34. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +4 -0
  35. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.json +194 -0
  36. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol/IERC20PermitUpgradeable.dbg.json +4 -0
  37. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol/IERC20PermitUpgradeable.json +86 -0
  38. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol/SafeERC20Upgradeable.dbg.json +4 -0
  39. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol/SafeERC20Upgradeable.json +10 -0
  40. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +4 -0
  41. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +10 -0
  42. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +4 -0
  43. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +24 -0
  44. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.dbg.json +4 -0
  45. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.json +181 -0
  46. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.dbg.json +4 -0
  47. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.json +282 -0
  48. package/artifacts/@venusprotocol/isolated-pools/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.dbg.json +4 -0
  49. package/artifacts/@venusprotocol/isolated-pools/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.json +59 -0
  50. package/artifacts/@venusprotocol/oracle/contracts/ResilientOracle.sol/ResilientOracle.dbg.json +4 -0
  51. package/artifacts/@venusprotocol/oracle/contracts/ResilientOracle.sol/ResilientOracle.json +649 -0
  52. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.dbg.json +4 -0
  53. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.json +40 -0
  54. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.dbg.json +4 -0
  55. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.json +30 -0
  56. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.dbg.json +4 -0
  57. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.json +75 -0
  58. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.dbg.json +4 -0
  59. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.json +49 -0
  60. package/artifacts/@venusprotocol/oracle/contracts/interfaces/VBep20Interface.sol/VBep20Interface.dbg.json +4 -0
  61. package/artifacts/@venusprotocol/oracle/contracts/interfaces/VBep20Interface.sol/VBep20Interface.json +246 -0
  62. package/artifacts/@venusprotocol/solidity-utilities/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.dbg.json +4 -0
  63. package/artifacts/@venusprotocol/solidity-utilities/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.json +59 -0
  64. package/artifacts/build-info/09a7fbe40ee8fdfd62afe79292e77863.json +1 -0
  65. package/artifacts/contracts/Interfaces/IComptroller.sol/IComptroller.dbg.json +4 -0
  66. package/artifacts/contracts/Interfaces/IComptroller.sol/IComptroller.json +56 -0
  67. package/artifacts/contracts/Interfaces/IConverterNetwork.sol/IConverterNetwork.dbg.json +4 -0
  68. package/artifacts/contracts/Interfaces/IConverterNetwork.sol/IConverterNetwork.json +127 -0
  69. package/artifacts/contracts/Interfaces/IIncomeDestination.sol/IIncomeDestination.dbg.json +4 -0
  70. package/artifacts/contracts/Interfaces/IIncomeDestination.sol/IIncomeDestination.json +29 -0
  71. package/artifacts/contracts/Interfaces/IPoolRegistry.sol/IPoolRegistry.dbg.json +4 -0
  72. package/artifacts/contracts/Interfaces/IPoolRegistry.sol/IPoolRegistry.json +54 -0
  73. package/artifacts/contracts/Interfaces/IPrime.sol/IPrime.dbg.json +4 -0
  74. package/artifacts/contracts/Interfaces/IPrime.sol/IPrime.json +74 -0
  75. package/artifacts/contracts/Interfaces/IProtocolShareReserve.sol/IProtocolShareReserve.dbg.json +4 -0
  76. package/artifacts/contracts/Interfaces/IProtocolShareReserve.sol/IProtocolShareReserve.json +34 -0
  77. package/artifacts/contracts/Interfaces/IRiskFund.sol/IRiskFund.dbg.json +4 -0
  78. package/artifacts/contracts/Interfaces/IRiskFund.sol/IRiskFund.json +77 -0
  79. package/artifacts/contracts/Interfaces/IRiskFund.sol/IRiskFundGetters.dbg.json +4 -0
  80. package/artifacts/contracts/Interfaces/IRiskFund.sol/IRiskFundGetters.json +24 -0
  81. package/artifacts/contracts/Interfaces/IRiskFundConverter.sol/IRiskFundConverter.dbg.json +4 -0
  82. package/artifacts/contracts/Interfaces/IRiskFundConverter.sol/IRiskFundConverter.json +48 -0
  83. package/artifacts/contracts/Interfaces/IShortfall.sol/IShortfall.dbg.json +4 -0
  84. package/artifacts/contracts/Interfaces/IShortfall.sol/IShortfall.json +24 -0
  85. package/artifacts/contracts/Interfaces/IVToken.sol/IVToken.dbg.json +4 -0
  86. package/artifacts/contracts/Interfaces/IVToken.sol/IVToken.json +24 -0
  87. package/artifacts/contracts/Interfaces/IXVSVault.sol/IXVSVault.dbg.json +4 -0
  88. package/artifacts/contracts/Interfaces/IXVSVault.sol/IXVSVault.json +24 -0
  89. package/artifacts/contracts/ProtocolReserve/ProtocolShareReserve.sol/ProtocolShareReserve.dbg.json +4 -0
  90. package/artifacts/contracts/ProtocolReserve/ProtocolShareReserve.sol/ProtocolShareReserve.json +892 -0
  91. package/artifacts/contracts/ProtocolReserve/RiskFundStorage.sol/MaxLoopsLimitHelpersStorage.dbg.json +4 -0
  92. package/artifacts/contracts/ProtocolReserve/RiskFundStorage.sol/MaxLoopsLimitHelpersStorage.json +24 -0
  93. package/artifacts/contracts/ProtocolReserve/RiskFundStorage.sol/ReserveHelpersStorage.dbg.json +4 -0
  94. package/artifacts/contracts/ProtocolReserve/RiskFundStorage.sol/ReserveHelpersStorage.json +139 -0
  95. package/artifacts/contracts/ProtocolReserve/RiskFundStorage.sol/RiskFundV1Storage.dbg.json +4 -0
  96. package/artifacts/contracts/ProtocolReserve/RiskFundStorage.sol/RiskFundV1Storage.json +178 -0
  97. package/artifacts/contracts/ProtocolReserve/RiskFundStorage.sol/RiskFundV2Storage.dbg.json +4 -0
  98. package/artifacts/contracts/ProtocolReserve/RiskFundStorage.sol/RiskFundV2Storage.json +191 -0
  99. package/artifacts/contracts/ProtocolReserve/RiskFundV2.sol/RiskFundV2.dbg.json +4 -0
  100. package/artifacts/contracts/ProtocolReserve/RiskFundV2.sol/RiskFundV2.json +582 -0
  101. package/artifacts/contracts/ProtocolReserve/XVSVaultTreasury.sol/XVSVaultTreasury.dbg.json +4 -0
  102. package/artifacts/contracts/ProtocolReserve/XVSVaultTreasury.sol/XVSVaultTreasury.json +315 -0
  103. package/artifacts/contracts/Test/Mocks/MockACM.sol/MockACM.dbg.json +4 -0
  104. package/artifacts/contracts/Test/Mocks/MockACM.sol/MockACM.json +369 -0
  105. package/artifacts/contracts/Test/Mocks/MockArraySorter.sol/MockArraySorter.dbg.json +4 -0
  106. package/artifacts/contracts/Test/Mocks/MockArraySorter.sol/MockArraySorter.json +40 -0
  107. package/artifacts/contracts/Test/Mocks/MockConverter.sol/MockConverter.dbg.json +4 -0
  108. package/artifacts/contracts/Test/Mocks/MockConverter.sol/MockConverter.json +1199 -0
  109. package/artifacts/contracts/Test/Mocks/MockDeflationaryToken.sol/MockDeflatingToken.dbg.json +4 -0
  110. package/artifacts/contracts/Test/Mocks/MockDeflationaryToken.sol/MockDeflatingToken.json +332 -0
  111. package/artifacts/contracts/Test/Mocks/MockRiskFundConverter.sol/MockRiskFundConverter.dbg.json +4 -0
  112. package/artifacts/contracts/Test/Mocks/MockRiskFundConverter.sol/MockRiskFundConverter.json +1559 -0
  113. package/artifacts/contracts/Test/Mocks/MockToken.sol/MockToken.dbg.json +4 -0
  114. package/artifacts/contracts/Test/Mocks/MockToken.sol/MockToken.json +333 -0
  115. package/artifacts/contracts/TokenConverter/AbstractTokenConverter.sol/AbstractTokenConverter.dbg.json +4 -0
  116. package/artifacts/contracts/TokenConverter/AbstractTokenConverter.sol/AbstractTokenConverter.json +1085 -0
  117. package/artifacts/contracts/TokenConverter/ConverterNetwork.sol/ConverterNetwork.dbg.json +4 -0
  118. package/artifacts/contracts/TokenConverter/ConverterNetwork.sol/ConverterNetwork.json +457 -0
  119. package/artifacts/contracts/TokenConverter/IAbstractTokenConverter.sol/IAbstractTokenConverter.dbg.json +4 -0
  120. package/artifacts/contracts/TokenConverter/IAbstractTokenConverter.sol/IAbstractTokenConverter.json +344 -0
  121. package/artifacts/contracts/TokenConverter/RiskFundConverter.sol/RiskFundConverter.dbg.json +4 -0
  122. package/artifacts/contracts/TokenConverter/RiskFundConverter.sol/RiskFundConverter.json +1429 -0
  123. package/artifacts/contracts/TokenConverter/SingleTokenConverter.sol/SingleTokenConverter.dbg.json +4 -0
  124. package/artifacts/contracts/TokenConverter/SingleTokenConverter.sol/SingleTokenConverter.json +1145 -0
  125. package/contracts/Interfaces/IComptroller.sol +10 -0
  126. package/contracts/Interfaces/IConverterNetwork.sol +46 -0
  127. package/contracts/Interfaces/IIncomeDestination.sol +6 -0
  128. package/contracts/Interfaces/IPoolRegistry.sol +10 -0
  129. package/contracts/Interfaces/IPrime.sol +12 -0
  130. package/contracts/Interfaces/IProtocolShareReserve.sol +16 -0
  131. package/contracts/Interfaces/IRiskFund.sol +28 -0
  132. package/contracts/Interfaces/IRiskFundConverter.sol +8 -0
  133. package/contracts/Interfaces/IShortfall.sol +11 -0
  134. package/contracts/Interfaces/IVToken.sol +6 -0
  135. package/contracts/Interfaces/IXVSVault.sol +9 -0
  136. package/contracts/ProtocolReserve/ProtocolShareReserve.sol +547 -0
  137. package/contracts/ProtocolReserve/RiskFundStorage.sol +67 -0
  138. package/contracts/ProtocolReserve/RiskFundV2.sol +220 -0
  139. package/contracts/ProtocolReserve/XVSVaultTreasury.sol +95 -0
  140. package/contracts/Test/Mocks/MockACM.sol +93 -0
  141. package/contracts/Test/Mocks/MockArraySorter.sol +14 -0
  142. package/contracts/Test/Mocks/MockConverter.sol +69 -0
  143. package/contracts/Test/Mocks/MockDeflationaryToken.sol +113 -0
  144. package/contracts/Test/Mocks/MockRiskFundConverter.sol +45 -0
  145. package/contracts/Test/Mocks/MockToken.sol +30 -0
  146. package/contracts/TokenConverter/AbstractTokenConverter.sol +1022 -0
  147. package/contracts/TokenConverter/ConverterNetwork.sol +242 -0
  148. package/contracts/TokenConverter/IAbstractTokenConverter.sol +132 -0
  149. package/contracts/TokenConverter/RiskFundConverter.sol +436 -0
  150. package/contracts/TokenConverter/SingleTokenConverter.sol +77 -0
  151. package/contracts/Utils/ArrayHelpers.sol +41 -0
  152. package/contracts/Utils/Constants.sol +11 -0
  153. package/contracts/Utils/Validators.sol +26 -0
  154. package/deploy/001-risk-fund-converter.ts +124 -0
  155. package/deploy/1-deploy.ts +64 -0
  156. package/deployments/bscmainnet/.chainId +1 -0
  157. package/deployments/bscmainnet/DefaultProxyAdmin.json +257 -0
  158. package/deployments/bscmainnet/ProtocolShareReserve.json +1126 -0
  159. package/deployments/bscmainnet/ProtocolShareReserve_Implementation.json +1400 -0
  160. package/deployments/bscmainnet/ProtocolShareReserve_Proxy.json +261 -0
  161. package/deployments/bscmainnet/solcInputs/0e89febeebc7444140de8e67c9067d2c.json +78 -0
  162. package/deployments/bscmainnet/solcInputs/aee5f1db1180ece295e59c8f036fe600.json +90 -0
  163. package/deployments/bsctestnet/.chainId +1 -0
  164. package/deployments/bsctestnet/DefaultProxyAdmin.json +257 -0
  165. package/deployments/bsctestnet/ProtocolShareReserve.json +1126 -0
  166. package/deployments/bsctestnet/ProtocolShareReserve_Implementation.json +1400 -0
  167. package/deployments/bsctestnet/ProtocolShareReserve_Proxy.json +261 -0
  168. package/deployments/bsctestnet/solcInputs/0e89febeebc7444140de8e67c9067d2c.json +78 -0
  169. package/deployments/bsctestnet/solcInputs/aee5f1db1180ece295e59c8f036fe600.json +90 -0
  170. package/package.json +119 -0
  171. package/typechain/AbstractTokenConverter.d.ts +1516 -0
  172. package/typechain/AccessControl.d.ts +388 -0
  173. package/typechain/AccessControlledV8.d.ts +341 -0
  174. package/typechain/BoundValidatorInterface.d.ts +126 -0
  175. package/typechain/ContextUpgradeable.d.ts +92 -0
  176. package/typechain/ConverterNetwork.d.ts +721 -0
  177. package/typechain/ERC165.d.ts +116 -0
  178. package/typechain/ERC20.d.ts +441 -0
  179. package/typechain/IAbstractTokenConverter.d.ts +606 -0
  180. package/typechain/IAccessControl.d.ts +333 -0
  181. package/typechain/IAccessControlManagerV8.d.ts +504 -0
  182. package/typechain/IComptroller.d.ts +136 -0
  183. package/typechain/IConverterNetwork.d.ts +292 -0
  184. package/typechain/IERC165.d.ts +116 -0
  185. package/typechain/IERC20.d.ts +324 -0
  186. package/typechain/IERC20Metadata.d.ts +363 -0
  187. package/typechain/IERC20PermitUpgradeable.d.ts +187 -0
  188. package/typechain/IERC20Upgradeable.d.ts +324 -0
  189. package/typechain/IIncomeDestination.d.ts +122 -0
  190. package/typechain/IPoolRegistry.d.ts +155 -0
  191. package/typechain/IPrime.d.ts +197 -0
  192. package/typechain/IProtocolShareReserve.d.ts +127 -0
  193. package/typechain/IRiskFund.d.ts +200 -0
  194. package/typechain/IRiskFundConverter.d.ts +138 -0
  195. package/typechain/IRiskFundGetters.d.ts +103 -0
  196. package/typechain/IShortfall.d.ts +110 -0
  197. package/typechain/IVToken.d.ts +98 -0
  198. package/typechain/IXVSVault.d.ts +95 -0
  199. package/typechain/Initializable.d.ts +92 -0
  200. package/typechain/MaxLoopsLimitHelper.d.ts +128 -0
  201. package/typechain/MaxLoopsLimitHelpersStorage.d.ts +101 -0
  202. package/typechain/MockACM.d.ts +615 -0
  203. package/typechain/MockArraySorter.d.ts +118 -0
  204. package/typechain/MockConverter.d.ts +1705 -0
  205. package/typechain/MockDeflatingToken.d.ts +486 -0
  206. package/typechain/MockRiskFundConverter.d.ts +2193 -0
  207. package/typechain/MockToken.d.ts +505 -0
  208. package/typechain/OracleInterface.d.ts +98 -0
  209. package/typechain/Ownable2StepUpgradeable.d.ts +261 -0
  210. package/typechain/OwnableUpgradeable.d.ts +193 -0
  211. package/typechain/PausableUpgradeable.d.ts +129 -0
  212. package/typechain/ProtocolShareReserve.d.ts +1332 -0
  213. package/typechain/ReentrancyGuardUpgradeable.d.ts +92 -0
  214. package/typechain/ReserveHelpersStorage.d.ts +300 -0
  215. package/typechain/ResilientOracle.d.ts +1022 -0
  216. package/typechain/ResilientOracleInterface.d.ts +192 -0
  217. package/typechain/RiskFundConverter.d.ts +1949 -0
  218. package/typechain/RiskFundV1Storage.d.ts +353 -0
  219. package/typechain/RiskFundV2.d.ts +893 -0
  220. package/typechain/RiskFundV2Storage.d.ts +372 -0
  221. package/typechain/SingleTokenConverter.d.ts +1598 -0
  222. package/typechain/TwapInterface.d.ts +124 -0
  223. package/typechain/VBep20Interface.d.ts +379 -0
  224. package/typechain/XVSVaultTreasury.d.ts +515 -0
  225. package/typechain/common.d.ts +35 -0
  226. package/typechain/factories/AbstractTokenConverter__factory.ts +1105 -0
  227. package/typechain/factories/AccessControl__factory.ts +227 -0
  228. package/typechain/factories/AccessControlledV8__factory.ts +196 -0
  229. package/typechain/factories/BoundValidatorInterface__factory.ts +59 -0
  230. package/typechain/factories/ContextUpgradeable__factory.ts +39 -0
  231. package/typechain/factories/ConverterNetwork__factory.ts +502 -0
  232. package/typechain/factories/ERC165__factory.ts +39 -0
  233. package/typechain/factories/ERC20__factory.ts +340 -0
  234. package/typechain/factories/IAbstractTokenConverter__factory.ts +364 -0
  235. package/typechain/factories/IAccessControlManagerV8__factory.ts +301 -0
  236. package/typechain/factories/IAccessControl__factory.ts +198 -0
  237. package/typechain/factories/IComptroller__factory.ts +68 -0
  238. package/typechain/factories/IConverterNetwork__factory.ts +142 -0
  239. package/typechain/factories/IERC165__factory.ts +42 -0
  240. package/typechain/factories/IERC20Metadata__factory.ts +248 -0
  241. package/typechain/factories/IERC20PermitUpgradeable__factory.ts +105 -0
  242. package/typechain/factories/IERC20Upgradeable__factory.ts +209 -0
  243. package/typechain/factories/IERC20__factory.ts +203 -0
  244. package/typechain/factories/IIncomeDestination__factory.ts +44 -0
  245. package/typechain/factories/IPoolRegistry__factory.ts +66 -0
  246. package/typechain/factories/IPrime__factory.ts +83 -0
  247. package/typechain/factories/IProtocolShareReserve__factory.ts +53 -0
  248. package/typechain/factories/IRiskFundConverter__factory.ts +63 -0
  249. package/typechain/factories/IRiskFundGetters__factory.ts +39 -0
  250. package/typechain/factories/IRiskFund__factory.ts +89 -0
  251. package/typechain/factories/IShortfall__factory.ts +36 -0
  252. package/typechain/factories/IVToken__factory.ts +36 -0
  253. package/typechain/factories/IXVSVault__factory.ts +36 -0
  254. package/typechain/factories/Initializable__factory.ts +36 -0
  255. package/typechain/factories/MaxLoopsLimitHelper__factory.ts +74 -0
  256. package/typechain/factories/MaxLoopsLimitHelpersStorage__factory.ts +75 -0
  257. package/typechain/factories/MockACM__factory.ts +411 -0
  258. package/typechain/factories/MockArraySorter__factory.ts +85 -0
  259. package/typechain/factories/MockConverter__factory.ts +1242 -0
  260. package/typechain/factories/MockDeflatingToken__factory.ts +389 -0
  261. package/typechain/factories/MockRiskFundConverter__factory.ts +1625 -0
  262. package/typechain/factories/MockToken__factory.ts +398 -0
  263. package/typechain/factories/OracleInterface__factory.ts +45 -0
  264. package/typechain/factories/Ownable2StepUpgradeable__factory.ts +134 -0
  265. package/typechain/factories/OwnableUpgradeable__factory.ts +91 -0
  266. package/typechain/factories/PausableUpgradeable__factory.ts +78 -0
  267. package/typechain/factories/ProtocolShareReserve__factory.ts +957 -0
  268. package/typechain/factories/ReentrancyGuardUpgradeable__factory.ts +43 -0
  269. package/typechain/factories/ReserveHelpersStorage__factory.ts +188 -0
  270. package/typechain/factories/ResilientOracleInterface__factory.ts +94 -0
  271. package/typechain/factories/ResilientOracle__factory.ts +710 -0
  272. package/typechain/factories/RiskFundConverter__factory.ts +1491 -0
  273. package/typechain/factories/RiskFundV1Storage__factory.ts +223 -0
  274. package/typechain/factories/RiskFundV2Storage__factory.ts +236 -0
  275. package/typechain/factories/RiskFundV2__factory.ts +624 -0
  276. package/typechain/factories/SingleTokenConverter__factory.ts +1200 -0
  277. package/typechain/factories/TwapInterface__factory.ts +61 -0
  278. package/typechain/factories/VBep20Interface__factory.ts +261 -0
  279. package/typechain/factories/XVSVaultTreasury__factory.ts +365 -0
  280. package/typechain/index.ts +112 -0
@@ -0,0 +1,242 @@
1
+ // SPDX-License-Identifier: BSD-3-Clause
2
+ pragma solidity 0.8.13;
3
+
4
+ import { AccessControlledV8 } from "@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol";
5
+ import { MaxLoopsLimitHelper } from "@venusprotocol/solidity-utilities/contracts/MaxLoopsLimitHelper.sol";
6
+
7
+ import { ensureNonzeroAddress } from "../Utils/Validators.sol";
8
+ import { sort } from "../Utils/ArrayHelpers.sol";
9
+ import { IAbstractTokenConverter } from "./IAbstractTokenConverter.sol";
10
+ import { IConverterNetwork } from "../Interfaces/IConverterNetwork.sol";
11
+
12
+ /// @title ConverterNetwork
13
+ /// @author Venus
14
+ /// @notice ConverterNetwork keeps track of all the converters and is used to fetch valid converters which provide conversions according to token addresses provided
15
+ /// @custom:security-contact https://github.com/VenusProtocol/protocol-reserve#discussion
16
+ contract ConverterNetwork is IConverterNetwork, AccessControlledV8, MaxLoopsLimitHelper {
17
+ /// @notice Array holding all the converters
18
+ IAbstractTokenConverter[] public allConverters;
19
+
20
+ /// @notice Emitted when new converter is added
21
+ event ConverterAdded(address indexed converter);
22
+
23
+ /// @notice Emitted when converter is removed
24
+ event ConverterRemoved(address indexed converter);
25
+
26
+ /// @notice Error thrown when converter already exists
27
+ error ConverterAlreadyExists();
28
+
29
+ /// @notice Error thrown converter does not exist
30
+ error ConverterDoesNotExist();
31
+
32
+ /// @notice Error thrown when converter address is invalid
33
+ error InvalidTokenConverterAddress();
34
+
35
+ /// @notice Error thrown when loops limit is invalid
36
+ error InvalidMaxLoopsLimit(uint256 loopsLimit);
37
+
38
+ /// @custom:oz-upgrades-unsafe-allow constructor
39
+ constructor() {
40
+ // Note that the contract is upgradeable. Use initialize() or reinitializers
41
+ // to set the state variables.
42
+ _disableInitializers();
43
+ }
44
+
45
+ /// @notice ConverterNetwork initializer
46
+ /// @param _accessControlManager The address of ACM contract
47
+ /// @param _loopsLimit Limit for the loops in the contract to avoid DOS
48
+ /// @custom:event ConverterAdded is emitted for each converter added on success
49
+ /// @custom:error InvalidMaxLoopsLimit is thrown when when loops limit is invalid
50
+ function initialize(address _accessControlManager, uint256 _loopsLimit) external initializer {
51
+ ensureNonzeroAddress(_accessControlManager);
52
+ __AccessControlled_init(_accessControlManager);
53
+
54
+ if (_loopsLimit >= type(uint128).max) revert InvalidMaxLoopsLimit(_loopsLimit);
55
+ _setMaxLoopsLimit(_loopsLimit);
56
+ }
57
+
58
+ /**
59
+ * @notice Set the limit for the loops can iterate to avoid the DOS
60
+ * @param limit Limit for the max loops can execute at a time
61
+ * @custom:error InvalidMaxLoopsLimit is thrown when when loops limit is invalid
62
+ * @custom:access Only owner
63
+ */
64
+ function setMaxLoopsLimit(uint256 limit) external onlyOwner {
65
+ if (limit >= type(uint128).max) revert InvalidMaxLoopsLimit(limit);
66
+ _setMaxLoopsLimit(limit);
67
+ }
68
+
69
+ /// @notice Adds new converter to the array
70
+ /// @param _tokenConverter Address of the token converter
71
+ /// @custom:event ConverterAdded is emitted on success
72
+ /// @custom:access Only Governance
73
+ function addTokenConverter(IAbstractTokenConverter _tokenConverter) external {
74
+ _checkAccessAllowed("addTokenConverter(address)");
75
+ _addTokenConverter(_tokenConverter);
76
+ }
77
+
78
+ /// @notice Removes converter from the array
79
+ /// @param _tokenConverter Address of the token converter
80
+ /// @custom:error ConverterDoesNotExist is thrown when converter to remove does not exist
81
+ /// @custom:event ConverterRemoved is emitted on success
82
+ /// @custom:access Only Governance
83
+ function removeTokenConverter(IAbstractTokenConverter _tokenConverter) external {
84
+ _checkAccessAllowed("removeTokenConverter(address)");
85
+
86
+ // Find the index of the converter in the array
87
+ uint128 indexToRemove = _findConverterIndex(_tokenConverter);
88
+
89
+ // Ensure that the converter exists in the array
90
+ if (indexToRemove == type(uint128).max) revert ConverterDoesNotExist();
91
+
92
+ // Swap the element to remove with the last element
93
+ allConverters[indexToRemove] = allConverters[allConverters.length - 1];
94
+
95
+ // Remove the last element (which is now a duplicate)
96
+ allConverters.pop();
97
+
98
+ emit ConverterRemoved(address(_tokenConverter));
99
+ }
100
+
101
+ /// @notice Used to get the array of converters supporting conversions, arranged in descending order based on token balances
102
+ /// It will return the converters which are open to users for conversion
103
+ /// @param _tokenAddressIn Address of tokenIn
104
+ /// @param _tokenAddressOut Address of tokenOut
105
+ /// @return converters Array of the conveters on the basis of the tokens pair
106
+ /// @return convertersBalance Array of balances with respect to token out
107
+ function findTokenConverters(address _tokenAddressIn, address _tokenAddressOut)
108
+ external
109
+ returns (address[] memory converters, uint256[] memory convertersBalance)
110
+ {
111
+ (converters, convertersBalance) = _findTokenConverters(_tokenAddressIn, _tokenAddressOut, false);
112
+ }
113
+
114
+ /// @notice Used to get the array of converters supporting conversions, arranged in descending order based on token balances
115
+ /// It will return the converters which are open to converters for conversion.
116
+ /// @param _tokenAddressIn Address of tokenIn
117
+ /// @param _tokenAddressOut Address of tokenOut
118
+ /// @return converters Array of the conveters on the basis of the tokens pair
119
+ /// @return convertersBalance Array of balances with respect to token out
120
+ function findTokenConvertersForConverters(address _tokenAddressIn, address _tokenAddressOut)
121
+ external
122
+ returns (address[] memory converters, uint256[] memory convertersBalance)
123
+ {
124
+ (converters, convertersBalance) = _findTokenConverters(_tokenAddressIn, _tokenAddressOut, true);
125
+ }
126
+
127
+ /// @notice This function returns the array containing all the converters addresses
128
+ /// @return Array containing all the converters addresses
129
+ function getAllConverters() external view returns (IAbstractTokenConverter[] memory) {
130
+ return allConverters;
131
+ }
132
+
133
+ /// @notice This function checks if the given address is a converter or not
134
+ /// @param _tokenConverter Address of the token converter
135
+ /// @return boolean true if given address is converter otherwise false
136
+ function isTokenConverter(address _tokenConverter) external view returns (bool) {
137
+ uint128 index = _findConverterIndex(IAbstractTokenConverter(_tokenConverter));
138
+
139
+ if (index == type(uint128).max) return false;
140
+ return true;
141
+ }
142
+
143
+ /// @notice Adds new converter contract to the array
144
+ /// @param _tokenConverter Address of the token converter
145
+ /// @custom:error ConverterAlreadyExists is thrown when new tokenconverter to add already exists
146
+ /// @custom:event ConverterAdded is emitted on success
147
+ function _addTokenConverter(IAbstractTokenConverter _tokenConverter) internal {
148
+ if (
149
+ (address(_tokenConverter) == address(0)) || (address(_tokenConverter.converterNetwork()) != address(this))
150
+ ) {
151
+ revert InvalidTokenConverterAddress();
152
+ }
153
+
154
+ uint128 index = _findConverterIndex(_tokenConverter);
155
+ if (index != type(uint128).max) revert ConverterAlreadyExists();
156
+
157
+ allConverters.push(_tokenConverter);
158
+ _ensureMaxLoops(allConverters.length);
159
+
160
+ emit ConverterAdded(address(_tokenConverter));
161
+ }
162
+
163
+ /// @notice Used to get the array of converters supporting conversions, arranged in descending order based on token balances
164
+ /// @param _tokenAddressIn Address of tokenIn
165
+ /// @param _tokenAddressOut Address of tokenOut
166
+ /// @param forConverters Bool to filter out converters on the basis of the conversionAccess
167
+ /// @return Array of converters
168
+ /// @return Array of balances with respect to token out
169
+ function _findTokenConverters(
170
+ address _tokenAddressIn,
171
+ address _tokenAddressOut,
172
+ bool forConverters
173
+ ) internal returns (address[] memory, uint256[] memory) {
174
+ uint128 convertersLength = uint128(allConverters.length);
175
+
176
+ // Create a dynamic array to store the matching converters
177
+ address[] memory converters = new address[](convertersLength);
178
+ uint256[] memory convertersBalance = new uint256[](convertersLength);
179
+ uint128 count;
180
+
181
+ for (uint128 i; i < convertersLength; ) {
182
+ IAbstractTokenConverter converter = allConverters[i];
183
+
184
+ unchecked {
185
+ ++i;
186
+ }
187
+
188
+ if (msg.sender == address(converter)) {
189
+ continue;
190
+ }
191
+
192
+ (, IAbstractTokenConverter.ConversionAccessibility conversionAccess) = converter.conversionConfigurations(
193
+ _tokenAddressIn,
194
+ _tokenAddressOut
195
+ );
196
+
197
+ if (conversionAccess == IAbstractTokenConverter.ConversionAccessibility.ALL) {
198
+ converters[count] = address(converter);
199
+ convertersBalance[count] = converter.balanceOf(_tokenAddressOut);
200
+ ++count;
201
+ } else if (
202
+ forConverters &&
203
+ (conversionAccess == IAbstractTokenConverter.ConversionAccessibility.ONLY_FOR_CONVERTERS)
204
+ ) {
205
+ converters[count] = address(converter);
206
+ convertersBalance[count] = converter.balanceOf(_tokenAddressOut);
207
+ ++count;
208
+ } else if (
209
+ !forConverters && (conversionAccess == IAbstractTokenConverter.ConversionAccessibility.ONLY_FOR_USERS)
210
+ ) {
211
+ converters[count] = address(converter);
212
+ convertersBalance[count] = converter.balanceOf(_tokenAddressOut);
213
+ ++count;
214
+ }
215
+ }
216
+
217
+ // Resize the array to the actual number of matching converters
218
+ assembly {
219
+ mstore(converters, count)
220
+ mstore(convertersBalance, count)
221
+ }
222
+ sort(convertersBalance, converters);
223
+ return (converters, convertersBalance);
224
+ }
225
+
226
+ /// @notice Used to get the index of the converter stored in the array
227
+ /// This will return the index if the converter exists in the array otherwise will return type(uint128).max
228
+ /// @param _tokenConverter Address of the token converter
229
+ /// @return Index of the converter address in the allConverters array
230
+ function _findConverterIndex(IAbstractTokenConverter _tokenConverter) internal view returns (uint128) {
231
+ uint128 convertersLength = uint128(allConverters.length);
232
+ for (uint128 i; i < convertersLength; ) {
233
+ if (allConverters[i] == _tokenConverter) {
234
+ return i;
235
+ }
236
+ unchecked {
237
+ ++i;
238
+ }
239
+ }
240
+ return type(uint128).max; // Not found, return a large value
241
+ }
242
+ }
@@ -0,0 +1,132 @@
1
+ // SPDX-License-Identifier: BSD-3-Clause
2
+ pragma solidity 0.8.13;
3
+
4
+ import { ResilientOracle } from "@venusprotocol/oracle/contracts/ResilientOracle.sol";
5
+ import { IConverterNetwork } from "../Interfaces/IConverterNetwork.sol";
6
+
7
+ /// @notice Interface for AbstractTokenConverter
8
+ /// @custom:security-contact https://github.com/VenusProtocol/protocol-reserve#discussion
9
+ interface IAbstractTokenConverter {
10
+ /// @notice This enum define the all possible ways of conversion can happen
11
+ enum ConversionAccessibility {
12
+ NONE, // Conversion is disable for the pair
13
+ ALL, // Conversion is enable for private conversion and users
14
+ ONLY_FOR_CONVERTERS, // Conversion is enable only for private conversion
15
+ ONLY_FOR_USERS // Conversion is enable only for users
16
+ }
17
+
18
+ /// @notice This struct represents the configuration for a token conversion.
19
+ struct ConversionConfig {
20
+ /// incentive on conversion of tokens in mantissa i.e 10% incentive would be 0.1 * 1e18
21
+ uint256 incentive;
22
+ /// enable or disable conversion for users or converters or both or none
23
+ ConversionAccessibility conversionAccess;
24
+ }
25
+
26
+ /// @notice Pause conversion of tokens
27
+ function pauseConversion() external;
28
+
29
+ /// @notice Resume conversion of tokens.
30
+ function resumeConversion() external;
31
+
32
+ /// @notice Sets a new price oracle
33
+ /// @param priceOracle_ Address of the new price oracle to set
34
+ function setPriceOracle(ResilientOracle priceOracle_) external;
35
+
36
+ /// @notice Set the configuration for new or existing convert pair
37
+ /// @param tokenAddressIn Address of tokenIn
38
+ /// @param tokenAddressOut Address of tokenOut
39
+ /// @param conversionConfig ConversionConfig config details to update
40
+ function setConversionConfig(
41
+ address tokenAddressIn,
42
+ address tokenAddressOut,
43
+ ConversionConfig calldata conversionConfig
44
+ ) external;
45
+
46
+ /// @notice Convert exact amount of tokenAddressIn for tokenAddressOut
47
+ /// @dev Method does not support deflationary tokens transfer
48
+ /// @param amountInMantissa Amount of tokenAddressIn
49
+ /// @param amountOutMinMantissa Min amount of tokenAddressOut required as output
50
+ /// @param tokenAddressIn Address of the token to convert
51
+ /// @param tokenAddressOut Address of the token to get after convert
52
+ /// @param to Address of the tokenAddressOut receiver
53
+ function convertExactTokens(
54
+ uint256 amountInMantissa,
55
+ uint256 amountOutMinMantissa,
56
+ address tokenAddressIn,
57
+ address tokenAddressOut,
58
+ address to
59
+ ) external returns (uint256 actualAmountIn, uint256 actualAmountOut);
60
+
61
+ /// @notice Convert tokens for tokenAddressIn for exact amount of tokenAddressOut
62
+ /// @dev Method does not support deflationary tokens transfer
63
+ /// @param amountInMaxMantissa Max amount of tokenAddressIn
64
+ /// @param amountOutMantissa Amount of tokenAddressOut required as output
65
+ /// @param tokenAddressIn Address of the token to convert
66
+ /// @param tokenAddressOut Address of the token to get after convert
67
+ /// @param to Address of the tokenAddressOut receiver
68
+ function convertForExactTokens(
69
+ uint256 amountInMaxMantissa,
70
+ uint256 amountOutMantissa,
71
+ address tokenAddressIn,
72
+ address tokenAddressOut,
73
+ address to
74
+ ) external returns (uint256 actualAmountIn, uint256 actualAmountOut);
75
+
76
+ /// @notice Convert exact amount of tokenAddressIn for tokenAddressOut
77
+ /// @param amountInMantissa Amount of tokenAddressIn
78
+ /// @param amountOutMinMantissa Min amount of tokenAddressOut required as output
79
+ /// @param tokenAddressIn Address of the token to convert
80
+ /// @param tokenAddressOut Address of the token to get after convert
81
+ /// @param to Address of the tokenAddressOut receiver
82
+ function convertExactTokensSupportingFeeOnTransferTokens(
83
+ uint256 amountInMantissa,
84
+ uint256 amountOutMinMantissa,
85
+ address tokenAddressIn,
86
+ address tokenAddressOut,
87
+ address to
88
+ ) external returns (uint256 actualAmountIn, uint256 actualAmountOut);
89
+
90
+ /// @notice Convert tokens for tokenAddressIn for exact amount of tokenAddressOut
91
+ /// @param amountInMaxMantissa Max amount of tokenAddressIn
92
+ /// @param amountOutMantissa Amount of tokenAddressOut required as output
93
+ /// @param tokenAddressIn Address of the token to convert
94
+ /// @param tokenAddressOut Address of the token to get after convert
95
+ /// @param to Address of the tokenAddressOut receiver
96
+ function convertForExactTokensSupportingFeeOnTransferTokens(
97
+ uint256 amountInMaxMantissa,
98
+ uint256 amountOutMantissa,
99
+ address tokenAddressIn,
100
+ address tokenAddressOut,
101
+ address to
102
+ ) external returns (uint256 actualAmountIn, uint256 actualAmountOut);
103
+
104
+ /// @notice To get the amount of tokenAddressIn tokens sender would send on receiving amountOutMantissa tokens of tokenAddressOut
105
+ /// @param amountOutMantissa Amount of tokenAddressOut user wants to receive
106
+ /// @param tokenAddressIn Address of the token to convert
107
+ /// @param tokenAddressOut Address of the token to get after conversion
108
+ /// @return amountConvertedMantissa Amount of tokenAddressOut should be transferred after conversion
109
+ /// @return amountInMantissa Amount of the tokenAddressIn sender would send to contract before conversion
110
+ /// @custom:error InsufficientInputAmount error is thrown when given input amount is zero
111
+ /// @custom:error ConversionConfigNotEnabled is thrown when conversion is disabled or config does not exist for given pair
112
+ function getUpdatedAmountIn(
113
+ uint256 amountOutMantissa,
114
+ address tokenAddressIn,
115
+ address tokenAddressOut
116
+ ) external returns (uint256 amountConvertedMantissa, uint256 amountInMantissa);
117
+
118
+ /// @notice Get the configuration for the pair of the tokens
119
+ /// @param tokenAddressIn Address of the token to convert
120
+ /// @param tokenAddressOut Address of the token to get after conversion
121
+ /// @return incentives Percentage of incentives to be distributed for the pair of tokens
122
+ /// @return conversionAccess Accessibility for the pair of tokens
123
+ function conversionConfigurations(address tokenAddressIn, address tokenAddressOut)
124
+ external
125
+ returns (uint256 incentives, ConversionAccessibility conversionAccess);
126
+
127
+ /// @notice Get the address of the converterNetwork
128
+ function converterNetwork() external returns (IConverterNetwork converterNetwork);
129
+
130
+ /// @notice Get the balance of the token for converter
131
+ function balanceOf(address token) external view returns (uint256 tokenBalance);
132
+ }