@gooddollar/goodprotocol 2.0.32-beta.0 → 2.0.32

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 (303) hide show
  1. package/artifacts/abis/CeloDistributionHelper.min.json +1 -0
  2. package/artifacts/abis/CeloDistributionHelperTest.min.json +1 -0
  3. package/artifacts/abis/CeloDistributionHelperTestHelper.min.json +1 -0
  4. package/artifacts/abis/IBancorExchangeProvider.min.json +1 -0
  5. package/artifacts/abis/IBroker.min.json +1 -0
  6. package/artifacts/abis/IGoodDollarExchangeProvider.min.json +1 -0
  7. package/artifacts/abis/IGoodDollarExpansionController.min.json +1 -0
  8. package/artifacts/abis/IMentoReserve.min.json +1 -0
  9. package/artifacts/abis/ITradingLimits.min.json +1 -0
  10. package/artifacts/abis/MentoExchange.min.json +1 -0
  11. package/artifacts/abis/ProtocolUpgradeV4Mento.min.json +1 -0
  12. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  13. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  14. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  15. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  16. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  17. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  18. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  19. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  20. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  21. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  23. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  27. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  28. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  32. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  33. package/artifacts/contracts/Interfaces.sol/IQuoterV2.dbg.json +1 -1
  34. package/artifacts/contracts/Interfaces.sol/ISwapRouter.dbg.json +1 -1
  35. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  36. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  37. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  38. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  39. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  40. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  41. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  42. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  43. package/artifacts/contracts/MentoInterfaces.sol/IBancorExchangeProvider.dbg.json +4 -0
  44. package/artifacts/contracts/MentoInterfaces.sol/IBancorExchangeProvider.json +282 -0
  45. package/artifacts/contracts/MentoInterfaces.sol/IBroker.dbg.json +4 -0
  46. package/artifacts/contracts/MentoInterfaces.sol/IBroker.json +491 -0
  47. package/artifacts/contracts/MentoInterfaces.sol/IGoodDollarExchangeProvider.dbg.json +4 -0
  48. package/artifacts/contracts/MentoInterfaces.sol/IGoodDollarExchangeProvider.json +164 -0
  49. package/artifacts/contracts/MentoInterfaces.sol/IGoodDollarExpansionController.dbg.json +4 -0
  50. package/artifacts/contracts/MentoInterfaces.sol/IGoodDollarExpansionController.json +333 -0
  51. package/artifacts/contracts/MentoInterfaces.sol/IMentoReserve.dbg.json +4 -0
  52. package/artifacts/contracts/MentoInterfaces.sol/IMentoReserve.json +927 -0
  53. package/artifacts/contracts/MentoInterfaces.sol/ITradingLimits.dbg.json +4 -0
  54. package/artifacts/contracts/MentoInterfaces.sol/ITradingLimits.json +10 -0
  55. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
  56. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  57. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
  58. package/artifacts/contracts/fuseFaucet/SuperfluidFacuet.sol/SuperfluidFaucet.dbg.json +1 -1
  59. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  60. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  61. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  62. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  63. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +1 -1
  64. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +1 -1
  65. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  66. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  67. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  68. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  69. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  70. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +2 -2
  71. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +1 -1
  72. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
  73. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  74. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
  75. package/artifacts/contracts/invite/OneTimeReward.sol/OneTimeReward.dbg.json +1 -1
  76. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  77. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  78. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  79. package/artifacts/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTest.dbg.json +4 -0
  80. package/artifacts/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTest.json +864 -0
  81. package/artifacts/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTestHelper.dbg.json +4 -0
  82. package/artifacts/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTestHelper.json +890 -0
  83. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  84. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  85. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
  86. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  87. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
  88. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
  89. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.json +2 -2
  90. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
  91. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +2 -2
  92. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  93. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +1 -1
  94. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  95. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  96. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +2 -2
  97. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  98. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  99. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +2 -2
  100. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +1 -1
  101. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  102. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  103. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  104. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  105. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  106. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  107. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  108. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
  109. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +1 -1
  110. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  111. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  112. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  113. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  114. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  115. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  116. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  117. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  118. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  119. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  120. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  121. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  122. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  123. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  124. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  125. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  126. package/artifacts/contracts/reserve/CeloDistributionHelper.sol/CeloDistributionHelper.dbg.json +4 -0
  127. package/artifacts/contracts/reserve/CeloDistributionHelper.sol/CeloDistributionHelper.json +864 -0
  128. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  129. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +2 -2
  130. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  131. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +2 -2
  132. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  133. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +2 -2
  134. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  135. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  136. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +2 -2
  137. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  138. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  139. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  140. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +2 -2
  141. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  142. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  143. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  144. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  145. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +2 -2
  146. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  147. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  148. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  149. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  150. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +2 -2
  151. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  152. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +2 -2
  153. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  154. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +2 -2
  155. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  156. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +2 -2
  157. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  158. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +2 -2
  159. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  160. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +2 -2
  161. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  162. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  163. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +1 -1
  164. package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +1 -1
  165. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +1 -1
  166. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +1 -1
  167. package/artifacts/contracts/token/IFeesFormula.sol/IFeesFormula.dbg.json +1 -1
  168. package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.dbg.json +1 -1
  169. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +1 -1
  170. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +1 -1
  171. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +1 -1
  172. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +1 -1
  173. package/artifacts/contracts/token/superfluid/ISuperToken.sol/ISuperToken.dbg.json +1 -1
  174. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +1 -1
  175. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +1 -1
  176. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +1 -1
  177. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +1 -1
  178. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +1 -1
  179. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +1 -1
  180. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +1 -1
  181. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  182. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.dbg.json +1 -1
  183. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  184. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
  185. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  186. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  187. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.json +2 -2
  188. package/artifacts/contracts/utils/BulkWhitelist.sol/BulkWhitelist.dbg.json +1 -1
  189. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +1 -1
  190. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.json +2 -2
  191. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.dbg.json +1 -1
  192. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.dbg.json +1 -1
  193. package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.dbg.json +1 -1
  194. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  195. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  196. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  197. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  198. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/EternalStorage.dbg.json +1 -1
  199. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill.dbg.json +1 -1
  200. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage.dbg.json +1 -1
  201. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Initializable.dbg.json +1 -1
  202. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Ownable.dbg.json +1 -1
  203. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Upgradeable.dbg.json +1 -1
  204. package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.dbg.json +1 -1
  205. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  206. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  207. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  208. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  209. package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.dbg.json +1 -1
  210. package/artifacts/contracts/utils/LastauthReduction.sol/LastauthReduction.dbg.json +1 -1
  211. package/artifacts/contracts/utils/LastauthReduction.sol/LastauthReduction.json +2 -2
  212. package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
  213. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  214. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  215. package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.dbg.json +1 -1
  216. package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.dbg.json +1 -1
  217. package/artifacts/contracts/utils/ProtoclUpgradeV4Mento.sol/MentoExchange.dbg.json +4 -0
  218. package/artifacts/contracts/utils/ProtoclUpgradeV4Mento.sol/MentoExchange.json +24 -0
  219. package/artifacts/contracts/utils/ProtoclUpgradeV4Mento.sol/ProtocolUpgradeV4Mento.dbg.json +4 -0
  220. package/artifacts/contracts/utils/ProtoclUpgradeV4Mento.sol/ProtocolUpgradeV4Mento.json +92 -0
  221. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  222. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  223. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  224. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  225. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  226. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  227. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  228. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  229. package/artifacts/contracts/utils/ReserveRestore.sol/ReserveRestore.dbg.json +1 -1
  230. package/artifacts/contracts/utils/ReserveRestore.sol/ReserveRestore.json +2 -2
  231. package/contracts/MentoInterfaces.sol +746 -0
  232. package/contracts/mocks/CeloDistributionHelperTest.sol +25 -0
  233. package/contracts/reserve/CeloDistributionHelper.sol +286 -0
  234. package/contracts/reserve/GoodMarketMaker.sol +11 -1
  235. package/contracts/staking/GoodFundManager.sol +5 -2
  236. package/contracts/utils/ProtoclUpgradeV4Mento.sol +99 -0
  237. package/contracts/utils/ReserveRestore.sol +171 -147
  238. package/hardhat.config.ts +4 -4
  239. package/package.json +5 -2
  240. package/releases/deployment.json +7 -5
  241. package/scripts/multichain-deploy/helpers.ts +45 -24
  242. package/scripts/proposals/reserveRestore.ts +130 -85
  243. package/scripts/proposals/v4Upgrade.ts +845 -0
  244. package/test/reserve/CeloDistributionHelper.test.ts +377 -0
  245. package/test/reserve/GoodMarketMaker.test.ts +98 -35
  246. package/test/zzz - e2e/CeloDistributionHelper.e2e.test.ts +0 -0
  247. package/types/contracts/MentoInterfaces.sol/IBancorExchangeProvider.ts +422 -0
  248. package/types/contracts/MentoInterfaces.sol/IBroker.ts +727 -0
  249. package/types/contracts/MentoInterfaces.sol/IGoodDollarExchangeProvider.ts +341 -0
  250. package/types/contracts/MentoInterfaces.sol/IGoodDollarExpansionController.ts +617 -0
  251. package/types/contracts/MentoInterfaces.sol/IMentoReserve.ts +1700 -0
  252. package/types/contracts/MentoInterfaces.sol/index.ts +8 -0
  253. package/types/contracts/index.ts +2 -0
  254. package/types/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTest.ts +1226 -0
  255. package/types/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTestHelper.ts +1279 -0
  256. package/types/contracts/mocks/CeloDistributionHelperTest.sol/index.ts +5 -0
  257. package/types/contracts/mocks/index.ts +2 -0
  258. package/types/contracts/reserve/CeloDistributionHelper.ts +1226 -0
  259. package/types/contracts/reserve/index.ts +1 -0
  260. package/types/contracts/utils/ProtoclUpgradeV4Mento.sol/MentoExchange.ts +81 -0
  261. package/types/contracts/utils/ProtoclUpgradeV4Mento.sol/ProtocolUpgradeV4Mento.ts +161 -0
  262. package/types/contracts/utils/ProtoclUpgradeV4Mento.sol/index.ts +5 -0
  263. package/types/contracts/utils/index.ts +2 -0
  264. package/types/factories/contracts/MentoInterfaces.sol/IBancorExchangeProvider__factory.ts +301 -0
  265. package/types/factories/contracts/MentoInterfaces.sol/IBroker__factory.ts +506 -0
  266. package/types/factories/contracts/MentoInterfaces.sol/IGoodDollarExchangeProvider__factory.ts +183 -0
  267. package/types/factories/contracts/MentoInterfaces.sol/IGoodDollarExpansionController__factory.ts +352 -0
  268. package/types/factories/contracts/MentoInterfaces.sol/IMentoReserve__factory.ts +942 -0
  269. package/types/factories/contracts/MentoInterfaces.sol/index.ts +8 -0
  270. package/types/factories/contracts/governance/StakersDistribution__factory.ts +1 -1
  271. package/types/factories/contracts/index.ts +1 -0
  272. package/types/factories/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTestHelper__factory.ts +949 -0
  273. package/types/factories/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTest__factory.ts +919 -0
  274. package/types/factories/contracts/mocks/CeloDistributionHelperTest.sol/index.ts +5 -0
  275. package/types/factories/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper__factory.ts +1 -1
  276. package/types/factories/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest__factory.ts +1 -1
  277. package/types/factories/contracts/mocks/GoodCompoundStakingTest__factory.ts +1 -1
  278. package/types/factories/contracts/mocks/GoodFundManagerTest__factory.ts +1 -1
  279. package/types/factories/contracts/mocks/OverMintTesterRegularStake__factory.ts +1 -1
  280. package/types/factories/contracts/mocks/index.ts +1 -0
  281. package/types/factories/contracts/reserve/CeloDistributionHelper__factory.ts +919 -0
  282. package/types/factories/contracts/reserve/DistributionHelper__factory.ts +1 -1
  283. package/types/factories/contracts/reserve/ExchangeHelper__factory.ts +1 -1
  284. package/types/factories/contracts/reserve/GoodMarketMaker__factory.ts +1 -1
  285. package/types/factories/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai__factory.ts +1 -1
  286. package/types/factories/contracts/reserve/index.ts +1 -0
  287. package/types/factories/contracts/staking/DonationsStaking__factory.ts +1 -1
  288. package/types/factories/contracts/staking/GoodFundManager__factory.ts +1 -1
  289. package/types/factories/contracts/staking/aave/AaveStakingFactory__factory.ts +1 -1
  290. package/types/factories/contracts/staking/aave/GoodAaveStakingV2__factory.ts +1 -1
  291. package/types/factories/contracts/staking/aave/GoodAaveStaking__factory.ts +1 -1
  292. package/types/factories/contracts/staking/compound/CompoundStakingFactory__factory.ts +1 -1
  293. package/types/factories/contracts/staking/compound/GoodCompoundStakingV2__factory.ts +1 -1
  294. package/types/factories/contracts/staking/compound/GoodCompoundStaking__factory.ts +1 -1
  295. package/types/factories/contracts/utils/BuyAndBridgeHelper__factory.ts +1 -1
  296. package/types/factories/contracts/utils/LastauthReduction__factory.ts +1 -1
  297. package/types/factories/contracts/utils/ProtoclUpgradeV4Mento.sol/MentoExchange__factory.ts +39 -0
  298. package/types/factories/contracts/utils/ProtoclUpgradeV4Mento.sol/ProtocolUpgradeV4Mento__factory.ts +152 -0
  299. package/types/factories/contracts/utils/ProtoclUpgradeV4Mento.sol/index.ts +5 -0
  300. package/types/factories/contracts/utils/ReserveRestore__factory.ts +1 -1
  301. package/types/factories/contracts/utils/index.ts +1 -0
  302. package/types/hardhat.d.ts +90 -0
  303. package/types/index.ts +20 -0
@@ -11,7 +11,7 @@
11
11
  * - add requirement of guardians to approve on-chain proposals
12
12
  * - reserve should not trust exchange helper
13
13
  * - resere should not trust fundmanager for its starting balance
14
- *
14
+ *
15
15
  * PLAN:
16
16
  * - pause staking
17
17
  * - prevent fusebridge usage
@@ -29,7 +29,7 @@
29
29
  * - unpause reserve
30
30
  * - unpause goodfundmanager
31
31
  * - switch fuse distribution to use lz bridge insted of deprecated fuse bridge
32
- *
32
+ *
33
33
  *
34
34
  * Fuse:
35
35
  * PLAN:
@@ -49,17 +49,28 @@ import { executeViaGuardian, executeViaSafe, verifyProductionSigner } from "../m
49
49
  import ProtocolSettings from "../../releases/deploy-settings.json";
50
50
 
51
51
  import dao from "../../releases/deployment.json";
52
- import { ExchangeHelper, FuseOldBridgeKill, GoodFundManager, GoodMarketMaker, GoodReserveCDai, IGoodDollar, ReserveRestore } from "../../types";
52
+ import {
53
+ ExchangeHelper,
54
+ FuseOldBridgeKill,
55
+ GoodFundManager,
56
+ GoodMarketMaker,
57
+ GoodReserveCDai,
58
+ IGoodDollar,
59
+ ReserveRestore
60
+ } from "../../types";
53
61
  let { name: networkName } = network;
54
62
 
55
-
56
63
  const isSimulation = network.name === "hardhat" || network.name === "fork" || network.name === "localhost";
57
64
 
58
65
  // hacker and hacked multichain bridge accounts
59
- const LOCKED_ACCOUNTS = ["0xeC577447D314cf1e443e9f4488216651450DBE7c", "0xD17652350Cfd2A37bA2f947C910987a3B1A1c60d", "0x6738fA889fF31F82d9Fe8862ec025dbE318f3Fde"]
60
- const INITIAL_DAI = ethers.utils.parseEther("100000") // 100k
66
+ const LOCKED_ACCOUNTS = [
67
+ "0xeC577447D314cf1e443e9f4488216651450DBE7c",
68
+ "0xD17652350Cfd2A37bA2f947C910987a3B1A1c60d",
69
+ "0x6738fA889fF31F82d9Fe8862ec025dbE318f3Fde"
70
+ ];
71
+ const INITIAL_DAI = ethers.utils.parseEther("100000"); // 100k
61
72
  // reserve funder (goodlabs safe)
62
- const funder = "0xF0652a820dd39EC956659E0018Da022132f2f40a"
73
+ const funder = "0xF0652a820dd39EC956659E0018Da022132f2f40a";
63
74
 
64
75
  export const upgradeMainnet = async network => {
65
76
  const isProduction = networkName.includes("production");
@@ -106,14 +117,12 @@ export const upgradeMainnet = async network => {
106
117
  const govImpl = await ethers.deployContract("CompoundVotingMachine");
107
118
  const distHelperImplt = await ethers.deployContract("DistributionHelper");
108
119
  const marketMakerImpl = await ethers.deployContract("GoodMarketMaker");
109
- const upgradeImpl = await ethers.deployContract("ReserveRestore", [release.NameService]) as ReserveRestore;
120
+ const upgradeImpl = (await ethers.deployContract("ReserveRestore", [release.NameService])) as ReserveRestore;
110
121
 
111
122
  const gd = (await ethers.getContractAt("IGoodDollar", release.GoodDollar)) as IGoodDollar;
112
123
 
113
-
114
124
  // test blacklisting to prevent burn by hacker
115
125
  if (isSimulation) {
116
-
117
126
  const locked = await ethers.getImpersonatedSigner(LOCKED_ACCOUNTS[0]);
118
127
  const tx = await gd
119
128
  .connect(locked)
@@ -124,21 +133,19 @@ export const upgradeMainnet = async network => {
124
133
 
125
134
  console.log("Burn tx before:", tx);
126
135
 
127
- const funderSigner = await ethers.getImpersonatedSigner(funder)
128
- const dai = await ethers.getContractAt("IGoodDollar", release.DAI)
129
- await dai.connect(funderSigner).approve(upgradeImpl.address, ethers.utils.parseEther("200000"))
130
- const whale = await ethers.getImpersonatedSigner("0xa359Fc83C48277EedF375a5b6DC9Ec7D093aD3f2")
131
- await dai.connect(whale).transfer(root.address, ethers.utils.parseEther("100000"))
132
-
133
- const lockedFunds = await Promise.all(LOCKED_ACCOUNTS.map(_ => gd.balanceOf(_)))
134
- const totalLocked = lockedFunds.reduce((acc, cur) => acc.add(cur), ethers.constants.Zero)
135
- console.log({ totalLocked })
136
+ const funderSigner = await ethers.getImpersonatedSigner(funder);
137
+ const dai = await ethers.getContractAt("IGoodDollar", release.DAI);
138
+ await dai.connect(funderSigner).approve(upgradeImpl.address, ethers.utils.parseEther("200000"));
139
+ const whale = await ethers.getImpersonatedSigner("0xa359Fc83C48277EedF375a5b6DC9Ec7D093aD3f2");
140
+ await dai.connect(whale).transfer(root.address, ethers.utils.parseEther("100000"));
136
141
 
142
+ const lockedFunds = await Promise.all(LOCKED_ACCOUNTS.map(_ => gd.balanceOf(_)));
143
+ const totalLocked = lockedFunds.reduce((acc, cur) => acc.add(cur), ethers.constants.Zero);
144
+ console.log({ totalLocked });
137
145
  }
138
146
 
139
147
  const startSupply = await gd.totalSupply();
140
148
 
141
-
142
149
  console.log("executing proposals");
143
150
 
144
151
  const proposalContracts = [
@@ -152,7 +159,7 @@ export const upgradeMainnet = async network => {
152
159
  release.Identity, // set locked G$ accounts as blacklisted so cant do burnfrom
153
160
  release.ForeignBridge, // claim bridge tokens to mpb bridge
154
161
  release.GoodReserveCDai, //upgrade reserve
155
- release.GoodFundManager, //upgrade fundmanager
162
+ release.GoodFundManager, //upgrade fundmanager
156
163
  release.ExchangeHelper, //upgrade exchangehelper
157
164
  release.DistributionHelper, //upgrade disthelper
158
165
  release.StakersDistribution, //upgrade stakers dist
@@ -162,7 +169,7 @@ export const upgradeMainnet = async network => {
162
169
  release.ExchangeHelper, // activate upgrade changes
163
170
  release.Controller,
164
171
  // upgradeImpl.address,
165
- release.GuardiansSafe + "_" + release.GoodReserveCDai
172
+ release.GoodReserveCDai
166
173
  ];
167
174
 
168
175
  const proposalEthValues = proposalContracts.map(_ => 0);
@@ -187,8 +194,7 @@ export const upgradeMainnet = async network => {
187
194
  "addOrUpdateRecipient((uint32,uint32,address,uint8))",
188
195
  "setAddresses()",
189
196
  "registerScheme(address,bytes32,bytes4,address)", // give upgrade contract permissions
190
- // "upgrade(address, uint256)",
191
- "unpause()"
197
+ "grantRole(bytes32,address)"
192
198
  ];
193
199
 
194
200
  const proposalFunctionInputs = [
@@ -222,7 +228,13 @@ export const upgradeMainnet = async network => {
222
228
  release.Avatar
223
229
  ]
224
230
  ),
225
- "0x"
231
+ ethers.utils.defaultAbiCoder.encode(
232
+ ["bytes32", "address"],
233
+ [
234
+ "0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a", //pauser role
235
+ release.Avatar
236
+ ]
237
+ )
226
238
  ];
227
239
 
228
240
  if (isProduction) {
@@ -247,7 +259,7 @@ export const upgradeMainnet = async network => {
247
259
  }
248
260
 
249
261
  if (isSimulation) {
250
- await mainnetPostChecks(upgradeImpl)
262
+ await mainnetPostChecks(upgradeImpl);
251
263
  }
252
264
  };
253
265
 
@@ -259,8 +271,7 @@ const mainnetPostChecks = async (upgradeImpl: ReserveRestore) => {
259
271
  const gd = await ethers.getContractAt("IGoodDollar", release.GoodDollar);
260
272
 
261
273
  //execute the reserve initialization
262
- (await upgradeImpl.upgrade(funder, INITIAL_DAI)).wait()
263
-
274
+ (await upgradeImpl.upgrade(funder, INITIAL_DAI)).wait();
264
275
 
265
276
  const locked = await ethers.getImpersonatedSigner(LOCKED_ACCOUNTS[0]);
266
277
  const tx = await gd
@@ -273,64 +284,100 @@ const mainnetPostChecks = async (upgradeImpl: ReserveRestore) => {
273
284
 
274
285
  const dai = await ethers.getContractAt("IGoodDollar", release.DAI);
275
286
  const cdai = await ethers.getContractAt("IGoodDollar", release.cDAI);
276
- const reserve = await ethers.getContractAt("GoodReserveCDai", release.GoodReserveCDai) as GoodReserveCDai
277
- const mm = await ethers.getContractAt("GoodMarketMaker", release.GoodMarketMaker) as GoodMarketMaker
278
- const newExpansion = await mm.reserveRatioDailyExpansion()
279
- console.log("new expansion set:", newExpansion, newExpansion.mul(1e15).div(ethers.utils.parseEther("1000000000")).toNumber() / 1e15 === 0.999711382710978)
280
- console.log("discount should be disabled:", await reserve.discountDisabled(), " gdx should be disabled:", await reserve.gdxDisabled());
281
- const resereState = await mm.reserveTokens(release.cDAI)
282
- console.log({ resereState })
287
+ const reserve = (await ethers.getContractAt("GoodReserveCDai", release.GoodReserveCDai)) as GoodReserveCDai;
288
+ const mm = (await ethers.getContractAt("GoodMarketMaker", release.GoodMarketMaker)) as GoodMarketMaker;
289
+ const newExpansion = await mm.reserveRatioDailyExpansion();
290
+ console.log(
291
+ "new expansion set:",
292
+ newExpansion,
293
+ newExpansion.mul(1e15).div(ethers.utils.parseEther("1000000000")).toNumber() / 1e15 === 0.999711382710978
294
+ );
295
+ console.log(
296
+ "discount should be disabled:",
297
+ await reserve.discountDisabled(),
298
+ " gdx should be disabled:",
299
+ await reserve.gdxDisabled()
300
+ );
301
+ const resereState = await mm.reserveTokens(release.cDAI);
302
+ console.log({ resereState });
283
303
  const finalSupply = await gd.totalSupply();
284
- const distHelper = await ethers.getContractAt("DistributionHelper", release.DistributionHelper)
285
- const result = await distHelper.calcGDToSell(1e9)
286
- console.log("how much G$ to sell to cover distribution fees out of 1M:", result.toNumber() / 100)
287
- const [cdaiPriceBefore, daiPriceBefore] = await (await Promise.all([reserve.currentPrice(), reserve.currentPriceDAI()])).map(_ => _.toNumber())
288
- console.log({ cdaiPriceBefore, daiPriceBefore })
289
- const dex = await ethers.getContractAt("ExchangeHelper", release.ExchangeHelper) as ExchangeHelper
290
- await dai.approve(dex.address, ethers.utils.parseEther("10000"))
304
+ const distHelper = await ethers.getContractAt("DistributionHelper", release.DistributionHelper);
305
+ const result = await distHelper.calcGDToSell(1e9);
306
+ console.log("how much G$ to sell to cover distribution fees out of 1M:", result.toNumber() / 100);
307
+ const [cdaiPriceBefore, daiPriceBefore] = await (
308
+ await Promise.all([reserve.currentPrice(), reserve.currentPriceDAI()])
309
+ ).map(_ => _.toNumber());
310
+ console.log({ cdaiPriceBefore, daiPriceBefore });
311
+ const dex = (await ethers.getContractAt("ExchangeHelper", release.ExchangeHelper)) as ExchangeHelper;
312
+ await dai.approve(dex.address, ethers.utils.parseEther("10000"));
291
313
  await dex.buy([release.DAI], ethers.utils.parseEther("10000"), 0, 0, root.address);
292
314
  // check g$ prices
293
- const [cdaiPriceAfter, daiPriceAfter] = await (await Promise.all([reserve.currentPrice(), reserve.currentPriceDAI()])).map(_ => _.toNumber())
294
- console.log("prices after buying form reserve with 10k DAI", { cdaiPriceAfter, daiPriceAfter })
295
- await gd.approve(dex.address, await gd.balanceOf(root.address))
315
+ const [cdaiPriceAfter, daiPriceAfter] = await (
316
+ await Promise.all([reserve.currentPrice(), reserve.currentPriceDAI()])
317
+ ).map(_ => _.toNumber());
318
+ console.log("prices after buying form reserve with 10k DAI", { cdaiPriceAfter, daiPriceAfter });
319
+ await gd.approve(dex.address, await gd.balanceOf(root.address));
296
320
  await dex.sell([release.DAI], await gd.balanceOf(root.address), 0, 0, root.address);
297
- const daiBalanceAfterSell = await dai.balanceOf(root.address)
321
+ const daiBalanceAfterSell = await dai.balanceOf(root.address);
298
322
  // expect a 10% sell fee
299
- console.log("expect 10% sell fee (selling 10K gets only 9K of dai, balance should be ~99K):", { daiBalanceAfterSell })
300
- const cdaiReserveBalance = await cdai.balanceOf(reserve.address)
301
- console.log({ cdaiReserveBalance })
302
-
303
- const [mpbBalance, fuseBalance] = await Promise.all([gd.balanceOf(release.MpbBridge), gd.balanceOf(release.ForeignBridge)])
304
- console.log("fuse bridge should have 0 balance and Mpb should be >6B", { mpbBalance, fuseBalance })
305
- const gfm = await ethers.getContractAt("GoodFundManager", release.GoodFundManager) as GoodFundManager
306
- const stakingContracts = await gfm.callStatic.calcSortedContracts()
307
- console.log({ stakingContracts })
308
- const interesTX = await (await gfm.collectInterest(stakingContracts.map(_ => _[0]), false)).wait()
309
- const ubiEvents = last(await reserve.queryFilter(reserve.filters.UBIMinted(), -1))
310
- console.log("collectinterest gfm events:", interesTX.events?.find(_ => _.event === 'FundsTransferred'))
311
- console.log("ubiEvents after collect interest:", ubiEvents)
323
+ console.log("expect 10% sell fee (selling 10K gets only 9K of dai, balance should be ~99K):", {
324
+ daiBalanceAfterSell
325
+ });
326
+ const cdaiReserveBalance = await cdai.balanceOf(reserve.address);
327
+ console.log({ cdaiReserveBalance });
328
+
329
+ const [mpbBalance, fuseBalance] = await Promise.all([
330
+ gd.balanceOf(release.MpbBridge),
331
+ gd.balanceOf(release.ForeignBridge)
332
+ ]);
333
+ console.log("fuse bridge should have 0 balance and Mpb should be >6B", { mpbBalance, fuseBalance });
334
+ const gfm = (await ethers.getContractAt("GoodFundManager", release.GoodFundManager)) as GoodFundManager;
335
+ const stakingContracts = await gfm.callStatic.calcSortedContracts();
336
+ console.log({ stakingContracts });
337
+ const interesTX = await (
338
+ await gfm.collectInterest(
339
+ stakingContracts.map(_ => _[0]),
340
+ false
341
+ )
342
+ ).wait();
343
+ const ubiEvents = last(await reserve.queryFilter(reserve.filters.UBIMinted(), -1));
344
+ console.log(
345
+ "collectinterest gfm events:",
346
+ interesTX.events?.find(_ => _.event === "FundsTransferred")
347
+ );
348
+ console.log("ubiEvents after collect interest:", ubiEvents);
312
349
  // check expansion after some time
313
- await time.increase(365 * 60 * 60 * 24)
350
+ await time.increase(365 * 60 * 60 * 24);
314
351
  const gdSupplyBeforeExpansion = await gd.totalSupply();
315
- const reserveStateBeforeYearExpansion = await mm.reserveTokens(release.cDAI)
316
-
317
- const expansionTX = await (await gfm.collectInterest([], false)).wait()
318
- const ubiExpansionEvents = last(await reserve.queryFilter(reserve.filters.UBIMinted(), -1))
319
- console.log("gfm events after 1 year expansion:", expansionTX.events?.filter(_ => _.event === 'FundsTransferred'))
320
- console.log("ubiEvents after 1 year expansion:", ubiExpansionEvents)
321
- const reserveStateAfterYearExpansion = await mm.reserveTokens(release.cDAI)
352
+ const reserveStateBeforeYearExpansion = await mm.reserveTokens(release.cDAI);
353
+
354
+ const expansionTX = await (await gfm.collectInterest([], false)).wait();
355
+ const ubiExpansionEvents = last(await reserve.queryFilter(reserve.filters.UBIMinted(), -1));
356
+ console.log(
357
+ "gfm events after 1 year expansion:",
358
+ expansionTX.events?.filter(_ => _.event === "FundsTransferred")
359
+ );
360
+ console.log("ubiEvents after 1 year expansion:", ubiExpansionEvents);
361
+ const reserveStateAfterYearExpansion = await mm.reserveTokens(release.cDAI);
322
362
  const gdSupplyAfterExpansion = await gd.totalSupply();
323
- console.log({ reserveStateAfterYearExpansion, gdSupplyAfterExpansion, gdSupplyBeforeExpansion, reserveStateBeforeYearExpansion })
363
+ console.log({
364
+ reserveStateAfterYearExpansion,
365
+ gdSupplyAfterExpansion,
366
+ gdSupplyBeforeExpansion,
367
+ reserveStateBeforeYearExpansion
368
+ });
324
369
 
325
370
  //execute the reserve initialization
326
- await (await upgradeImpl.donate(funder, INITIAL_DAI)).wait()
327
- const [cdaiPriceAfterDonation, daiPriceAfterDonation] = await (await Promise.all([reserve.currentPrice(), reserve.currentPriceDAI()])).map(_ => _.toNumber())
328
- console.log("price after dai donation:", { cdaiPriceAfterDonation, daiPriceAfterDonation })
329
- const reserveStateAfterDonation = await mm.reserveTokens(release.cDAI)
330
- console.log({ reserveStateAfterDonation })
331
-
332
- await (await upgradeImpl.end()).wait()
333
- }
371
+ await (await upgradeImpl.donate(funder, INITIAL_DAI)).wait();
372
+ const [cdaiPriceAfterDonation, daiPriceAfterDonation] = await (
373
+ await Promise.all([reserve.currentPrice(), reserve.currentPriceDAI()])
374
+ ).map(_ => _.toNumber());
375
+ console.log("price after dai donation:", { cdaiPriceAfterDonation, daiPriceAfterDonation });
376
+ const reserveStateAfterDonation = await mm.reserveTokens(release.cDAI);
377
+ console.log({ reserveStateAfterDonation });
378
+
379
+ await (await upgradeImpl.end()).wait();
380
+ };
334
381
  export const upgradeFuse = async network => {
335
382
  let [root] = await ethers.getSigners();
336
383
 
@@ -350,8 +397,6 @@ export const upgradeFuse = async network => {
350
397
  await root.sendTransaction({ value: ethers.constants.WeiPerEther.mul(3), to: guardian.address });
351
398
  }
352
399
 
353
-
354
-
355
400
  const gd = (await ethers.getContractAt("IGoodDollar", release.GoodDollar)) as IGoodDollar;
356
401
 
357
402
  const isMinter = await gd.isMinter(release.HomeBridge);
@@ -359,11 +404,11 @@ export const upgradeFuse = async network => {
359
404
  console.log({ networkEnv, guardian: guardian.address, isSimulation, isProduction, isMinter });
360
405
 
361
406
  const govImpl = await ethers.deployContract("CompoundVotingMachine");
362
- const killBridge = await ethers.deployContract("FuseOldBridgeKill") as FuseOldBridgeKill
407
+ const killBridge = (await ethers.deployContract("FuseOldBridgeKill")) as FuseOldBridgeKill;
363
408
 
364
409
  const proposalContracts = [
365
410
  release.HomeBridge, // prevent from using by upgrading to empty contract and removing minting rights
366
- release.CompoundVotingMachine, //upgrade gov
411
+ release.CompoundVotingMachine //upgrade gov
367
412
  ];
368
413
 
369
414
  const proposalEthValues = proposalContracts.map(_ => 0);
@@ -373,11 +418,12 @@ export const upgradeFuse = async network => {
373
418
  "upgradeTo(address)"
374
419
  ];
375
420
 
376
-
377
421
  const proposalFunctionInputs = [
378
- ethers.utils.defaultAbiCoder.encode(["uint256", "address", "bytes"], [2, killBridge.address, killBridge.interface.encodeFunctionData("end")]),
379
- ethers.utils.defaultAbiCoder.encode(["address"], [govImpl.address]),
380
-
422
+ ethers.utils.defaultAbiCoder.encode(
423
+ ["uint256", "address", "bytes"],
424
+ [2, killBridge.address, killBridge.interface.encodeFunctionData("end")]
425
+ ),
426
+ ethers.utils.defaultAbiCoder.encode(["address"], [govImpl.address])
381
427
  ];
382
428
 
383
429
  if (isProduction) {
@@ -401,7 +447,6 @@ export const upgradeFuse = async network => {
401
447
  }
402
448
 
403
449
  if (isSimulation) {
404
-
405
450
  const isMinter = await gd.isMinter(release.HomeBridge);
406
451
  console.log("Fuse bridge scheme registration check:", isMinter ? "Failed" : "Success");
407
452
  }