@gooddollar/goodprotocol 2.0.34-beta.2 → 2.0.34-beta.3

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 (315) hide show
  1. package/artifacts/abis/GenericDistributionHelper.min.json +1 -0
  2. package/artifacts/abis/INonfungiblePositionManager.min.json +1 -0
  3. package/artifacts/abis/IUniswapV3Pool.min.json +1 -0
  4. package/artifacts/abis/UBISchemeV2.min.json +1 -1
  5. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  6. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  7. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  8. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  9. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  10. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  11. package/artifacts/contracts/IQuoter.sol/IQuoterV2.dbg.json +4 -0
  12. package/artifacts/contracts/IQuoter.sol/IQuoterV2.json +211 -0
  13. package/artifacts/contracts/IUniswapV3.sol/INonfungiblePositionManager.dbg.json +4 -0
  14. package/artifacts/contracts/IUniswapV3.sol/INonfungiblePositionManager.json +102 -0
  15. package/artifacts/contracts/IUniswapV3.sol/IUniswapV3Pool.dbg.json +4 -0
  16. package/artifacts/contracts/IUniswapV3.sol/IUniswapV3Pool.json +93 -0
  17. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  18. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  19. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  20. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  21. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  23. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  27. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  28. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  32. package/artifacts/contracts/Interfaces.sol/IQuoterV2.dbg.json +1 -1
  33. package/artifacts/contracts/Interfaces.sol/ISwapRouter.dbg.json +1 -1
  34. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  35. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  36. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  37. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  38. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  39. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  40. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  41. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  42. package/artifacts/contracts/MentoInterfaces.sol/IBancorExchangeProvider.dbg.json +1 -1
  43. package/artifacts/contracts/MentoInterfaces.sol/IBroker.dbg.json +1 -1
  44. package/artifacts/contracts/MentoInterfaces.sol/IGoodDollarExchangeProvider.dbg.json +1 -1
  45. package/artifacts/contracts/MentoInterfaces.sol/IGoodDollarExpansionController.dbg.json +1 -1
  46. package/artifacts/contracts/MentoInterfaces.sol/IMentoReserve.dbg.json +1 -1
  47. package/artifacts/contracts/MentoInterfaces.sol/ITradingLimits.dbg.json +1 -1
  48. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
  49. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  50. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
  51. package/artifacts/contracts/fuseFaucet/SuperfluidFacuet.sol/SuperfluidFaucet.dbg.json +1 -1
  52. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  53. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  54. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  55. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  56. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +1 -1
  57. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +1 -1
  58. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  59. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  60. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  61. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  62. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  63. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +1 -1
  64. package/artifacts/contracts/identity/IdentityV3.sol/IdentityV3.dbg.json +1 -1
  65. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
  66. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  67. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
  68. package/artifacts/contracts/invite/OneTimeReward.sol/OneTimeReward.dbg.json +1 -1
  69. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  70. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  71. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  72. package/artifacts/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTest.dbg.json +1 -1
  73. package/artifacts/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTestHelper.dbg.json +1 -1
  74. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  75. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  76. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
  77. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  78. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
  79. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
  80. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
  81. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  82. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +1 -1
  83. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  84. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  85. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  86. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  87. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +1 -1
  88. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  89. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  90. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  91. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  92. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  93. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  94. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  95. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +1 -1
  96. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  97. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  98. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  99. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  100. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  101. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  102. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  103. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  104. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  105. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  106. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  107. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  108. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  109. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  110. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  111. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  112. package/artifacts/contracts/reserve/CeloDistributionHelper.sol/CeloDistributionHelper.dbg.json +1 -1
  113. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  114. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  115. package/artifacts/contracts/reserve/GenericDistributionHelper.sol/GenericDistributionHelper.dbg.json +4 -0
  116. package/artifacts/contracts/reserve/GenericDistributionHelper.sol/GenericDistributionHelper.json +931 -0
  117. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  118. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  119. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  120. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  121. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  122. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  123. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  124. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  125. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  126. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  127. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  128. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  129. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  130. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  131. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  132. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  133. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  134. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  135. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  136. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  137. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  138. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +1 -1
  139. package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +1 -1
  140. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +1 -1
  141. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +1 -1
  142. package/artifacts/contracts/token/GoodDollar2.sol/GoodDollar2.dbg.json +1 -1
  143. package/artifacts/contracts/token/IFeesFormula.sol/IFeesFormula.dbg.json +1 -1
  144. package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.dbg.json +1 -1
  145. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +1 -1
  146. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +1 -1
  147. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +1 -1
  148. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +1 -1
  149. package/artifacts/contracts/token/superfluid/ISuperToken.sol/ISuperToken.dbg.json +1 -1
  150. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +1 -1
  151. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +1 -1
  152. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +1 -1
  153. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +1 -1
  154. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +1 -1
  155. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +1 -1
  156. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +1 -1
  157. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  158. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.dbg.json +1 -1
  159. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.json +7 -2
  160. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  161. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
  162. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  163. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  164. package/artifacts/contracts/utils/BulkWhitelist.sol/BulkWhitelist.dbg.json +1 -1
  165. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +1 -1
  166. package/artifacts/contracts/utils/BuyFromReserveHelper.sol/BuyFromReserveHelper.dbg.json +1 -1
  167. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.dbg.json +1 -1
  168. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.dbg.json +1 -1
  169. package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.dbg.json +1 -1
  170. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  171. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  172. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  173. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  174. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/EternalStorage.dbg.json +1 -1
  175. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill.dbg.json +1 -1
  176. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage.dbg.json +1 -1
  177. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Initializable.dbg.json +1 -1
  178. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Ownable.dbg.json +1 -1
  179. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Upgradeable.dbg.json +1 -1
  180. package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.dbg.json +1 -1
  181. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  182. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  183. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  184. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  185. package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.dbg.json +1 -1
  186. package/artifacts/contracts/utils/LastauthReduction.sol/LastauthReduction.dbg.json +1 -1
  187. package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
  188. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  189. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  190. package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.dbg.json +1 -1
  191. package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.dbg.json +1 -1
  192. package/artifacts/contracts/utils/ProtoclUpgradeV4Mento.sol/MentoExchange.dbg.json +1 -1
  193. package/artifacts/contracts/utils/ProtoclUpgradeV4Mento.sol/ProtocolUpgradeV4Mento.dbg.json +1 -1
  194. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  195. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  196. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  197. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  198. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  199. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  200. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.json +2 -2
  201. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  202. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.json +2 -2
  203. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  204. package/artifacts/contracts/utils/ReserveRestore.sol/ReserveRestore.dbg.json +1 -1
  205. package/contracts/IQuoter.sol +108 -0
  206. package/contracts/IUniswapV3.sol +51 -0
  207. package/contracts/reserve/GenericDistributionHelper.sol +319 -0
  208. package/contracts/ubi/UBISchemeV2.sol +8 -4
  209. package/contracts/utils/ProxyFactory1967.sol +16 -18
  210. package/dist/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +2 -2
  211. package/dist/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +179 -186
  212. package/dist/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.json +2 -2
  213. package/dist/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.json +2 -2
  214. package/dist/test-sdk/deploySuperGoodDollar.d.ts +1 -1
  215. package/dist/test-sdk/deploySuperGoodDollar.js +4 -8
  216. package/dist/test-sdk/index.js +1 -5
  217. package/hardhat.config.ts +14 -6
  218. package/package.json +1 -1
  219. package/releases/deploy-settings.json +15 -2
  220. package/releases/deployment.json +66 -45
  221. package/releases/olddao.json +1 -1
  222. package/scripts/fv.ts +19 -1
  223. package/scripts/multichain-deploy/0_proxyFactory-deploy.ts +4 -3
  224. package/scripts/multichain-deploy/1_basicdao-deploy.ts +18 -9
  225. package/scripts/multichain-deploy/4_ubi-deploy.ts +1 -1
  226. package/scripts/multichain-deploy/8_disthelper-deploy.ts +152 -0
  227. package/scripts/multichain-deploy/createUniswapTestPools.ts +163 -0
  228. package/scripts/multichain-deploy/fulldeploy.sh +17 -17
  229. package/scripts/multichain-deploy/helpers.ts +76 -6
  230. package/scripts/multichain-deploy/verify.ts +41 -0
  231. package/scripts/proposals/gip-25-xdc-upgrade.ts +438 -0
  232. package/test/helpers.ts +1 -1
  233. package/test/ubi/UBISchemeV2.test.ts +35 -108
  234. package/types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.ts +108 -0
  235. package/types/@openzeppelin/contracts/proxy/ERC1967/index.ts +1 -0
  236. package/types/@uniswap/index.ts +2 -0
  237. package/types/@uniswap/v2-periphery/contracts/index.ts +5 -0
  238. package/types/@uniswap/v2-periphery/contracts/interfaces/IWETH.ts +159 -0
  239. package/types/@uniswap/v2-periphery/contracts/interfaces/index.ts +4 -0
  240. package/types/@uniswap/v2-periphery/index.ts +5 -0
  241. package/types/contracts/IQuoter.sol/IQuoterV2.ts +297 -0
  242. package/types/contracts/IQuoter.sol/index.ts +4 -0
  243. package/types/contracts/IUniswapV3.sol/INonfungiblePositionManager.ts +151 -0
  244. package/types/contracts/IUniswapV3.sol/IUniswapV3Factory.ts +155 -0
  245. package/types/contracts/IUniswapV3.sol/IUniswapV3Pool.ts +179 -0
  246. package/types/contracts/IUniswapV3.sol/index.ts +5 -0
  247. package/types/contracts/Interfaces.sol/AToken.ts +81 -0
  248. package/types/contracts/Interfaces.sol/IAaveIncentivesControllerV3.ts +156 -0
  249. package/types/contracts/Interfaces.sol/ILendingPoolV3.ts +254 -0
  250. package/types/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/EthDistributor.ts +648 -0
  251. package/types/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/EthDistributorUpgradeable.ts +843 -0
  252. package/types/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/index.ts +4 -0
  253. package/types/contracts/index.ts +4 -0
  254. package/types/contracts/mocks/CeloDistributionHelperTest.sol/DistributionHelperTestHelper.ts +1252 -0
  255. package/types/contracts/reserve/GenericDistributionHelper copy.sol/GenericDistributionHelper.ts +1247 -0
  256. package/types/contracts/reserve/GenericDistributionHelper copy.sol/index.ts +4 -0
  257. package/types/contracts/reserve/GenericDistributionHelper.ts +1304 -0
  258. package/types/contracts/reserve/GoodReserveADai.ts +2212 -0
  259. package/types/contracts/reserve/index.ts +1 -0
  260. package/types/contracts/staking/aave/GoodAave3StakingV2.sol/GoodAaveStakingV2.ts +1808 -0
  261. package/types/contracts/staking/aave/GoodAave3StakingV2.sol/index.ts +4 -0
  262. package/types/contracts/token/GoodDollar18.ts +1871 -0
  263. package/types/contracts/ubi/UBISchemeV2.ts +14 -3
  264. package/types/contracts/utils/BuyGDClone.sol/IQuoterV2.ts +184 -0
  265. package/types/contracts/utils/BuyGDClone.sol/ISwapRouter.ts +306 -0
  266. package/types/contracts/utils/FuseOldBridgeKill.sol/BasicAMBErc677ToErc677.ts +108 -0
  267. package/types/contracts/utils/ProtocolUpgradeV4Mento.sol/MentoExchange.ts +81 -0
  268. package/types/contracts/utils/ProtocolUpgradeV4Mento.sol/ProtocolUpgradeV4Mento.ts +161 -0
  269. package/types/contracts/utils/ProtocolUpgradeV4Mento.sol/index.ts +5 -0
  270. package/types/contracts/utils/ReserveRestore.sol/MentoExchange.ts +81 -0
  271. package/types/contracts/utils/ReserveRestore.sol/ReserveRestore.ts +112 -0
  272. package/types/contracts/utils/ReserveRestore.sol/index.ts +5 -0
  273. package/types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy__factory.ts +146 -0
  274. package/types/factories/@openzeppelin/contracts/proxy/ERC1967/index.ts +1 -0
  275. package/types/factories/@uniswap/index.ts +1 -0
  276. package/types/factories/@uniswap/v2-periphery/contracts/index.ts +4 -0
  277. package/types/factories/@uniswap/v2-periphery/contracts/interfaces/IWETH__factory.ts +67 -0
  278. package/types/factories/@uniswap/v2-periphery/contracts/interfaces/index.ts +4 -0
  279. package/types/factories/@uniswap/v2-periphery/index.ts +4 -0
  280. package/types/factories/contracts/IQuoter.sol/IQuoterV2__factory.ts +226 -0
  281. package/types/factories/contracts/IQuoter.sol/index.ts +4 -0
  282. package/types/factories/contracts/IUniswapV3.sol/INonfungiblePositionManager__factory.ts +121 -0
  283. package/types/factories/contracts/IUniswapV3.sol/IUniswapV3Factory__factory.ts +84 -0
  284. package/types/factories/contracts/IUniswapV3.sol/IUniswapV3Pool__factory.ts +108 -0
  285. package/types/factories/contracts/IUniswapV3.sol/index.ts +5 -0
  286. package/types/factories/contracts/Interfaces.sol/AToken__factory.ts +36 -0
  287. package/types/factories/contracts/Interfaces.sol/IAaveIncentivesControllerV3__factory.ts +88 -0
  288. package/types/factories/contracts/Interfaces.sol/ILendingPoolV3__factory.ts +186 -0
  289. package/types/factories/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/EthDistributorUpgradeable__factory.ts +572 -0
  290. package/types/factories/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/EthDistributor__factory.ts +482 -0
  291. package/types/factories/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/index.ts +4 -0
  292. package/types/factories/contracts/index.ts +2 -0
  293. package/types/factories/contracts/mocks/CeloDistributionHelperTest.sol/DistributionHelperTestHelper__factory.ts +929 -0
  294. package/types/factories/contracts/reserve/GenericDistributionHelper copy.sol/GenericDistributionHelper__factory.ts +935 -0
  295. package/types/factories/contracts/reserve/GenericDistributionHelper copy.sol/index.ts +4 -0
  296. package/types/factories/contracts/reserve/GenericDistributionHelper__factory.ts +987 -0
  297. package/types/factories/contracts/reserve/GoodReserveADai__factory.ts +1502 -0
  298. package/types/factories/contracts/reserve/index.ts +1 -0
  299. package/types/factories/contracts/staking/aave/GoodAave3StakingV2.sol/GoodAaveStakingV2__factory.ts +1240 -0
  300. package/types/factories/contracts/staking/aave/GoodAave3StakingV2.sol/index.ts +4 -0
  301. package/types/factories/contracts/token/GoodDollar18__factory.ts +1257 -0
  302. package/types/factories/contracts/ubi/UBISchemeV2__factory.ts +6 -1
  303. package/types/factories/contracts/utils/BuyGDClone.sol/IQuoterV2__factory.ts +126 -0
  304. package/types/factories/contracts/utils/BuyGDClone.sol/ISwapRouter__factory.ts +220 -0
  305. package/types/factories/contracts/utils/FuseOldBridgeKill.sol/BasicAMBErc677ToErc677__factory.ts +86 -0
  306. package/types/factories/contracts/utils/ProtocolUpgradeV4Mento.sol/MentoExchange__factory.ts +39 -0
  307. package/types/factories/contracts/utils/ProtocolUpgradeV4Mento.sol/ProtocolUpgradeV4Mento__factory.ts +152 -0
  308. package/types/factories/contracts/utils/ProtocolUpgradeV4Mento.sol/index.ts +5 -0
  309. package/types/factories/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy__factory.ts +1 -1
  310. package/types/factories/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967__factory.ts +1 -1
  311. package/types/factories/contracts/utils/ReserveRestore.sol/MentoExchange__factory.ts +39 -0
  312. package/types/factories/contracts/utils/ReserveRestore.sol/ReserveRestore__factory.ts +95 -0
  313. package/types/factories/contracts/utils/ReserveRestore.sol/index.ts +5 -0
  314. package/types/hardhat.d.ts +54 -0
  315. package/types/index.ts +10 -2
@@ -0,0 +1,438 @@
1
+ // Part 1 UBI+Bridge
2
+ // deploy dao to xdc - Done
3
+ // deploy bridge to xdc - Done
4
+ // give minting rights to xdc bridge
5
+ // upgrade to improved identity + ubischeme on celo + fuse
6
+ // upgrade bridge on celo/ethereum/fuse - make sure they include xdc
7
+ // burn celo bridge locked supply (now each chain has its own supply and all bridges are mint/burn)
8
+
9
+ // Part 2 Reserve
10
+ // create uniswap pools on xdc
11
+ // calculate how much G$s each reserve is backing
12
+ // deploy mento reserve to xdc with calculated parameters
13
+ // give mento broker minting rights on xdc
14
+ // deploy distribution helper
15
+ // transfer usdc to xdc reserve
16
+ // update celo reserve parameters accordingly
17
+
18
+ import { network, ethers, upgrades } from "hardhat";
19
+ import { reset } from "@nomicfoundation/hardhat-network-helpers";
20
+ import { defaultsDeep, last } from "lodash";
21
+ import prompt from "prompt";
22
+
23
+ import { executeViaGuardian, executeViaSafe, verifyProductionSigner } from "../multichain-deploy/helpers";
24
+
25
+ import ProtocolSettings from "../../releases/deploy-settings.json";
26
+
27
+ import dao from "../../releases/deployment.json";
28
+ import {
29
+ CeloDistributionHelper,
30
+ Controller,
31
+ FuseOldBridgeKill,
32
+ GoodMarketMaker,
33
+ IBancorExchangeProvider,
34
+ IBroker,
35
+ IGoodDollar,
36
+ IGoodDollarExchangeProvider,
37
+ IGoodDollarExpansionController,
38
+ IMentoReserve,
39
+ ProtocolUpgradeV4Mento
40
+ } from "../../types";
41
+ import releaser from "../releaser";
42
+ let { name: networkName } = network;
43
+ const isSimulation = network.name === "hardhat" || network.name === "fork" || network.name === "localhost";
44
+
45
+ export const upgradeCelo = async (network, checksOnly) => {
46
+ let [root] = await ethers.getSigners();
47
+
48
+ const isProduction = networkName.includes("production");
49
+
50
+ if (isProduction) verifyProductionSigner(root);
51
+
52
+ let networkEnv = networkName;
53
+ if (isSimulation) networkEnv = network;
54
+
55
+ let release: { [key: string]: any } = dao[networkEnv];
56
+
57
+ let guardian = root;
58
+ console.log("signer:", root.address, { networkEnv, isSimulation, isProduction, release });
59
+
60
+ const cusd = await ethers.getContractAt("IERC20", release.CUSD);
61
+ const gd = await ethers.getContractAt("GoodDollar", release.GoodDollar);
62
+ const mentoReserve = (await ethers.getContractAt("IMentoReserve", release.MentoReserve)) as IMentoReserve;
63
+
64
+ const ubiImpl = await ethers.deployContract("UBISchemeV2");
65
+ const identityImpl = await ethers.deployContract("IdentityV3");
66
+
67
+ console.log("deployed new impls", { ubiImpl: ubiImpl.address, identityImpl: identityImpl.address });
68
+
69
+ const proposalActions = [
70
+ [release.UBIScheme, "upgradeTo(address)", ethers.utils.defaultAbiCoder.encode(["address"], [ubiImpl.address]), "0"], //upgrade ubi
71
+ [
72
+ release.Identity,
73
+ "upgradeTo(address)",
74
+ ethers.utils.defaultAbiCoder.encode(["address"], [identityImpl.address]),
75
+ "0"
76
+ ] //upgrade identity
77
+ ];
78
+ const mentoExchange = (await ethers.getContractAt(
79
+ "IBancorExchangeProvider",
80
+ release.MentoExchangeProvider
81
+ )) as IBancorExchangeProvider;
82
+
83
+ //simulate on fork, make sure safe has enough eth to simulate txs
84
+ let DIST_HELPER_MIN_CELO_BALANCE = ethers.utils.parseEther("2");
85
+
86
+ if (isSimulation && !checksOnly) {
87
+ DIST_HELPER_MIN_CELO_BALANCE = ethers.utils.parseEther("0.1");
88
+ // await reset("https://rpc.ankr.com/celo");
89
+ await root.sendTransaction({ value: ethers.utils.parseEther("0.5"), to: release.Avatar });
90
+
91
+ const avatar = await ethers.getImpersonatedSigner(release.Avatar);
92
+ const reserveOwner = await ethers.getImpersonatedSigner(await mentoReserve.owner());
93
+ const eids = await mentoExchange.getExchangeIds();
94
+ if (eids.length > 0) {
95
+ await mentoExchange.connect(avatar).destroyExchange(eids[0], 0);
96
+ }
97
+
98
+ const devCUSD = await ethers.getContractAt(
99
+ [
100
+ "function mint(address,uint) external returns (uint)",
101
+ "function setValidators(address) external",
102
+ "function owner() view returns(address)"
103
+ ],
104
+ release.CUSD
105
+ );
106
+
107
+ console.log("minting devCUSD");
108
+ const cusdOwner = await ethers.getImpersonatedSigner(await devCUSD.owner());
109
+ await root.sendTransaction({ value: ethers.utils.parseEther("0.5"), to: cusdOwner.address });
110
+ await devCUSD.connect(cusdOwner).setValidators(release.Avatar).catch(console.log);
111
+ await devCUSD.connect(avatar).mint(root.address, ethers.utils.parseEther("2000000")).catch(console.log);
112
+
113
+ console.log("transfering cusd to reserve");
114
+ await cusd.connect(root).transfer(release.MentoReserve, ethers.utils.parseEther("200000"));
115
+
116
+ guardian = await ethers.getImpersonatedSigner(release.GuardiansSafe);
117
+ await root.sendTransaction({ value: ethers.utils.parseEther("0.5"), to: guardian.address });
118
+ } else if (!isProduction && !checksOnly) {
119
+ DIST_HELPER_MIN_CELO_BALANCE = ethers.utils.parseEther("0.1");
120
+ const mentoReserve = (await ethers.getContractAt("IMentoReserve", release.MentoReserve)) as IMentoReserve;
121
+ const ctrl = (await ethers.getContractAt("Controller", release.Controller)) as Controller;
122
+
123
+ const eids = await mentoExchange.getExchangeIds();
124
+ if (eids.length > 0) {
125
+ await (
126
+ await ctrl.genericCall(
127
+ mentoExchange.address,
128
+ mentoExchange.interface.encodeFunctionData("destroyExchange", [eids[0], 0]),
129
+ release.Avatar,
130
+ 0
131
+ )
132
+ ).wait();
133
+ }
134
+
135
+ const devCUSD = await ethers.getContractAt(
136
+ ["function mint(address,uint) external returns (uint)", "function setValidators(address) external"],
137
+ release.CUSD
138
+ );
139
+ await (
140
+ await ctrl.genericCall(
141
+ devCUSD.address,
142
+ devCUSD.interface.encodeFunctionData("setValidators", [release.Avatar]),
143
+ release.Avatar,
144
+ 0
145
+ )
146
+ ).wait();
147
+ await (
148
+ await ctrl.genericCall(
149
+ devCUSD.address,
150
+ devCUSD.interface.encodeFunctionData("mint", [root.address, ethers.utils.parseEther("2000000")]),
151
+ release.Avatar,
152
+ 0
153
+ )
154
+ ).wait();
155
+
156
+ if ((await cusd.balanceOf(release.MentoReserve)).lt(ethers.utils.parseEther("200000"))) {
157
+ await cusd.transfer(release.MentoReserve, ethers.utils.parseEther("200000"));
158
+ }
159
+ }
160
+
161
+ const mpbImplementation = mpbDeployments["42220"].find(_ => _.name === "celo")["MessagePassingBridge_Implementation"]
162
+ .address;
163
+ const bridgeLocked = ["0xa3247276DbCC76Dd7705273f766eB3E8a5ecF4a5", "0xD5D11eE582c8931F336fbcd135e98CEE4DB8CCB0"];
164
+ const locked = [
165
+ "0xD17652350Cfd2A37bA2f947C910987a3B1A1c60d",
166
+ "0xeC577447D314cf1e443e9f4488216651450DBE7c",
167
+ "0x6738fA889fF31F82d9Fe8862ec025dbE318f3Fde"
168
+ ];
169
+
170
+ const ethprovider = new ethers.providers.JsonRpcProvider("https://rpc.flashbots.net");
171
+ const fuseprovider = new ethers.providers.JsonRpcProvider("https://rpc.fuse.io");
172
+ const TOTAL_LOCKED = (
173
+ await Promise.all(
174
+ locked
175
+ .concat(bridgeLocked)
176
+ .map(_ => gd.connect(ethprovider).attach(dao["production-mainnet"].GoodDollar).balanceOf(_))
177
+ )
178
+ ).reduce((prev, cur) => prev.add(cur), ethers.constants.Zero);
179
+ const TOTAL_SUPPLY_ETH = await gd.connect(ethprovider).attach(dao["production-mainnet"].GoodDollar).totalSupply();
180
+ const TOTAL_SUPPLY_FUSE = await gd.connect(fuseprovider).attach(dao["production"].GoodDollar).totalSupply();
181
+ const TOTAL_SUPPLY_CELO = await gd.totalSupply();
182
+ const TOTAL_GLOBAL_SUPPLY = TOTAL_SUPPLY_ETH.add(TOTAL_SUPPLY_FUSE)
183
+ .sub(TOTAL_LOCKED)
184
+ .mul(ethers.BigNumber.from("10000000000000000")) //convert to 18 decimals
185
+ .add(TOTAL_SUPPLY_CELO);
186
+
187
+ const exchangeParams = [release.CUSD, release.GoodDollar, 0, 0, 0, 0]; //address reserveAsset;address tokenAddress;uint256 tokenSupply;uint256 reserveBalance;uint32 reserveRatio;uint32 exitConribution;
188
+
189
+ console.log({
190
+ networkEnv,
191
+ mpbImplementation,
192
+ guardian: guardian.address,
193
+ isSimulation,
194
+ isProduction,
195
+ release,
196
+ TOTAL_GLOBAL_SUPPLY
197
+ });
198
+
199
+ const mentoUpgrade = release.MentoUpgradeHelper
200
+ ? ((await ethers.getContractAt("ProtocolUpgradeV4Mento", release.MentoUpgradeHelper)) as ProtocolUpgradeV4Mento)
201
+ : await ethers.deployContract("ProtocolUpgradeV4Mento", [release.Avatar]);
202
+ let distHelper = release.CeloDistributionHelper
203
+ ? ((await ethers.getContractAt("CeloDistributionHelper", release.CeloDistributionHelper)) as CeloDistributionHelper)
204
+ : ((await upgrades.deployProxy(
205
+ await ethers.getContractFactory("CeloDistributionHelper"),
206
+ [release.NameService, "0x00851A91a3c4E9a4c1B48df827Bacc1f884bdE28"], //static oracle for uniswap
207
+ { initializer: "initialize" }
208
+ )) as CeloDistributionHelper);
209
+
210
+ release.MentoUpgradeHelper = mentoUpgrade.address;
211
+ release.CeloDistributionHelper = distHelper.address;
212
+ if (!isSimulation) {
213
+ releaser(release, networkEnv);
214
+ }
215
+ console.log("deployed mentoUpgrade", {
216
+ distribuitonHelper: distHelper.address,
217
+ mentoUpgrade: mentoUpgrade.address,
218
+ distHelperAvatar: await distHelper.avatar()
219
+ });
220
+
221
+ const proposalContracts = [
222
+ release.CeloDistributionHelper, //set fee settings
223
+ release.CeloDistributionHelper, //add ubi recipient
224
+ release.CeloDistributionHelper, //add community treasury recipient
225
+ release.MpbBridge, // upgrade
226
+ release.MpbBridge && release.GoodDollarMintBurnWrapper, // remove minting rights from bridge
227
+ release.GoodDollar, // set mento broker as minter
228
+ release.GoodDollar, // set reserve expansion controller as minter
229
+ release.Controller, // register upgrade contract
230
+ mentoUpgrade.address // create the exchange + set expansion rate
231
+ ];
232
+
233
+ const proposalEthValues = proposalContracts.map(_ => 0);
234
+
235
+ const proposalFunctionSignatures = [
236
+ "setFeeSettings((uint128,uint128,uint8,uint8))",
237
+ "addOrUpdateRecipient((uint32,uint32,address,uint8))",
238
+ "addOrUpdateRecipient((uint32,uint32,address,uint8))",
239
+ "upgradeTo(address)",
240
+ "revokeRole(bytes32,address)", // mpb is now lock/unlock doesnt need minting
241
+ "addMinter(address)",
242
+ "addMinter(address)",
243
+ "registerScheme(address,bytes32,bytes4,address)",
244
+ "upgrade(address,(address,address,uint256,uint256,uint32,uint32),address,address,address,uint256)" //Controller _controller,PoolExchange memory _exchange,address _mentoExchange,address _mentoController, address _distHelper
245
+ ];
246
+
247
+ console.log("preparing inputs...");
248
+ const proposalFunctionInputs = [
249
+ //uint128 maxFee;uint128 minBalanceForFees;uint8 percentageToSellForFee;
250
+ //2 celo max fee for lz bridge, min balance 2 celo, max percentage to sell 1%, max slippage 5%
251
+ ethers.utils.defaultAbiCoder.encode(
252
+ ["uint128", "uint128", "uint8", "uint8"],
253
+ [ethers.utils.parseEther("2"), DIST_HELPER_MIN_CELO_BALANCE, "1", "5"]
254
+ ),
255
+ ethers.utils.defaultAbiCoder.encode(["uint32", "uint32", "address", "uint8"], [9000, 42220, release.UBIScheme, 1]), // ubi pool recipient
256
+ ethers.utils.defaultAbiCoder.encode(
257
+ ["uint32", "uint32", "address", "uint8"],
258
+ [1000, 42220, release.CommunitySafe, 1]
259
+ ), //community treasury recipient
260
+ ethers.utils.defaultAbiCoder.encode(["address"], [mpbImplementation]),
261
+ release.MpbBridge &&
262
+ ethers.utils.defaultAbiCoder.encode(
263
+ ["bytes32", "address"],
264
+ [ethers.utils.keccak256(ethers.utils.toUtf8Bytes("MINTER_ROLE")), release.MpbBridge]
265
+ ),
266
+ ethers.utils.defaultAbiCoder.encode(["address"], [release.MentoBroker]),
267
+ ethers.utils.defaultAbiCoder.encode(["address"], [release.MentoExpansionController]),
268
+ ethers.utils.defaultAbiCoder.encode(
269
+ ["address", "bytes32", "bytes4", "address"],
270
+ [mentoUpgrade.address, ethers.constants.HashZero, "0x0000001f", release.Avatar]
271
+ ),
272
+ ethers.utils.defaultAbiCoder.encode(
273
+ ["address", "(address,address,uint256,uint256,uint32,uint32)", "address", "address", "address", "uint256"],
274
+ [
275
+ release.Controller,
276
+ exchangeParams,
277
+ release.MentoExchangeProvider,
278
+ release.MentoExpansionController,
279
+ release.CeloDistributionHelper,
280
+ TOTAL_GLOBAL_SUPPLY
281
+ ]
282
+ )
283
+ ];
284
+
285
+ console.log({ exchangeParams, mentoExchange: release.MentoExchangeProvider });
286
+ console.log("executing upgrade...", { proposalContracts, proposalFunctionInputs, proposalFunctionSignatures });
287
+
288
+ if (isProduction && !checksOnly) {
289
+ await executeViaSafe(
290
+ proposalContracts,
291
+ proposalEthValues,
292
+ proposalFunctionSignatures,
293
+ proposalFunctionInputs,
294
+ release.GuardiansSafe,
295
+ "celo"
296
+ );
297
+ } else if (!checksOnly) {
298
+ await executeViaGuardian(
299
+ proposalContracts,
300
+ proposalEthValues,
301
+ proposalFunctionSignatures,
302
+ proposalFunctionInputs,
303
+ guardian,
304
+ networkEnv
305
+ );
306
+ }
307
+
308
+ if (isSimulation || !isProduction) {
309
+ const swapper = networkEnv.includes("production")
310
+ ? await ethers.getImpersonatedSigner("0x66582D24FEaD72555adaC681Cc621caCbB208324")
311
+ : root;
312
+ const supplyAfter = await (await ethers.getContractAt("IGoodDollar", release.GoodDollar)).totalSupply();
313
+ console.log("Supply after upgrade:", { supplyAfter, TOTAL_GLOBAL_SUPPLY });
314
+
315
+ const isBrokerMinter = await gd.isMinter(release.MentoBroker);
316
+ const isExpansionMinter = await gd.isMinter(release.MentoExpansionController);
317
+ const mentoExchange = await ethers.getContractAt("IBancorExchangeProvider", release.MentoExchangeProvider);
318
+ const mentoBroker = (await ethers.getContractAt("IBroker", release.MentoBroker)) as IBroker;
319
+ const eids = await mentoExchange.getExchangeIds();
320
+ const exchange = await mentoExchange.getPoolExchange(eids[0]);
321
+ const price = (await mentoExchange.currentPrice(eids[0])) / 1e18;
322
+ console.log("current price:", price);
323
+ console.log("Exchange:", exchange, eids[0]);
324
+
325
+ console.log("Broker minter check:", isBrokerMinter ? "Success" : "Failed");
326
+ console.log("Expansion minter check:", isExpansionMinter ? "Success" : "Failed");
327
+
328
+ console.log("balance before swap:", await gd.balanceOf(swapper.address), await cusd.balanceOf(swapper.address));
329
+ await cusd.connect(swapper).approve(release.MentoBroker, ethers.utils.parseEther("1000"));
330
+ await mentoBroker
331
+ .connect(swapper)
332
+ .swapIn(mentoExchange.address, eids[0], cusd.address, gd.address, ethers.utils.parseEther("1000"), 0)
333
+ .then(_ => _.wait());
334
+ console.log(
335
+ "Balance after swap:",
336
+ swapper.address,
337
+ await gd.balanceOf(swapper.address),
338
+ await cusd.balanceOf(swapper.address)
339
+ );
340
+ const mentomint = (await ethers.getContractAt(
341
+ "IGoodDollarExpansionController",
342
+ release.MentoExpansionController
343
+ )) as IGoodDollarExpansionController;
344
+ await cusd.connect(swapper).approve(mentomint.address, ethers.utils.parseEther("1000"));
345
+ const tx = await (
346
+ await mentomint.connect(swapper).mintUBIFromInterest(eids[0], ethers.utils.parseEther("1000"))
347
+ ).wait();
348
+ console.log(
349
+ "mint from interest:",
350
+ tx.events.find(_ => _.event === "InterestUBIMinted").args.amount.toString() / 1e18
351
+ );
352
+ console.log("price after interest mint:", (await mentoExchange.currentPrice(eids[0])) / 1e18);
353
+ const distTx = await (await distHelper.onDistribution(0, { gasLimit: 2000000 })).wait();
354
+ const { distributionRecipients, distributed } = distTx.events.find(_ => _.event === "Distribution").args;
355
+ console.log("Distribution events:", distributionRecipients, distributed, distTx.events.length);
356
+ const bridgeBalance = await gd.balanceOf("0xa3247276DbCC76Dd7705273f766eB3E8a5ecF4a5");
357
+ console.log("Brigde balance should equal other chains total supply:", {
358
+ bridgeBalance,
359
+ isEqual: bridgeBalance.eq(TOTAL_GLOBAL_SUPPLY.sub(TOTAL_SUPPLY_CELO))
360
+ });
361
+ }
362
+ };
363
+
364
+ const calculateReserveParams = async () => {
365
+ const celoProvider = new ethers.providers.JsonRpcProvider("https://forno.celo.org");
366
+ const gd = await ethers.getContractAt("GoodDollar", dao["production-celo"].GoodDollar);
367
+ const celoCusd = (await ethers.getContractAt("IERC20", dao["production-celo"].CUSD)).connect(celoProvider);
368
+ const gdCelo = gd.connect(celoProvider);
369
+ const totalSupplyCelo = await gdCelo.totalSupply();
370
+ const reserveBalance = await celoCusd.balanceOf(dao["production-celo"].MentoReserve);
371
+ const xdcReserveBalance = ethers.utils.parseUnits("200000", 18); //200k in xdc
372
+ const totalUSD = reserveBalance.add(xdcReserveBalance); //reserve + 200k in xdc
373
+ const xdcSupplyShare = xdcReserveBalance.mul(1e8).div(totalUSD);
374
+ const xdcGdSupplyEquivalent = totalSupplyCelo.mul(xdcSupplyShare).div(1e8);
375
+ const price = ethers.utils.parseUnits("0.00013", 8);
376
+ const celoGdSupplyEquivalent = totalSupplyCelo.sub(xdcGdSupplyEquivalent);
377
+
378
+ console.log({
379
+ totalSupplyCelo,
380
+ reserveBalance,
381
+ totalUSD,
382
+ xdcSupplyShare,
383
+ xdcGdSupplyEquivalent,
384
+ celoGdSupplyEquivalent
385
+ });
386
+
387
+ // uint32 reserveRatio = uint32(
388
+ // (cUSDBalance * 1e18 * 1e8) / (price * totalGlobalSupply)
389
+ // );
390
+ //calculate reserve ratio
391
+ const reserveRatioXdc = xdcReserveBalance
392
+ .mul(ethers.BigNumber.from("100000000")) //1e8
393
+ .mul(ethers.BigNumber.from("1000000000000000000")) //1e18
394
+ .div(xdcGdSupplyEquivalent.mul(price));
395
+ console.log(
396
+ "recommended reserve ratio for xdc:",
397
+ reserveRatioXdc.toString(),
398
+ reserveRatioXdc.div("10000000000").toNumber() / 1e8
399
+ );
400
+
401
+ //calcualte reserve ratio for celo
402
+ const reserveRatioCelo = reserveBalance
403
+ .mul(ethers.BigNumber.from("100000000")) //1e8
404
+ .mul(ethers.BigNumber.from("1000000000000000000")) //1e18
405
+ .div(celoGdSupplyEquivalent.mul(price));
406
+
407
+ console.log(
408
+ "recommended reserve ratio for celo:",
409
+ reserveRatioCelo.toString(),
410
+ reserveRatioCelo.div("10000000000").toNumber() / 1e8
411
+ );
412
+ };
413
+
414
+ export const main = async () => {
415
+ await calculateReserveParams();
416
+ return;
417
+ prompt.start();
418
+ const { network } = await prompt.get(["network"]);
419
+
420
+ console.log("running step:", { network });
421
+ const chain = last(network.split("-"));
422
+ switch (chain) {
423
+ case "mainnet":
424
+ // await upgradeMainnet(network, true);
425
+
426
+ break;
427
+ case "fuse":
428
+ // await upgradeFuse(network);
429
+
430
+ break;
431
+ case "celo":
432
+ await upgradeCelo(network, true);
433
+
434
+ break;
435
+ }
436
+ };
437
+
438
+ main().catch(console.log);
package/test/helpers.ts CHANGED
@@ -525,7 +525,7 @@ export const deployUBI = async (deployedDAO, withFirstClaim = true) => {
525
525
 
526
526
  let ubiScheme = await upgrades.deployProxy(
527
527
  await ethers.getContractFactory("UBISchemeV2"),
528
- [nameService.address],
528
+ [nameService.address, 1000],
529
529
  { kind: "uups" }
530
530
  );
531
531