@gooddollar/goodprotocol 2.0.25-beta.0 → 2.0.25-beta.10

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 (441) hide show
  1. package/artifacts/abis/BulkWhitelist.min.json +1 -0
  2. package/artifacts/abis/CompoundVotingMachine.min.json +1 -1
  3. package/artifacts/abis/DistributionHelper.min.json +1 -1
  4. package/artifacts/abis/DistributionHelperTest.min.json +1 -1
  5. package/artifacts/abis/DistributionHelperTestHelper.min.json +1 -1
  6. package/artifacts/abis/EternalStorage.min.json +1 -0
  7. package/artifacts/abis/FuseOldBridgeKill.min.json +1 -0
  8. package/artifacts/abis/FuseStakingV3.min.json +1 -1
  9. package/artifacts/abis/GoodFundManager.min.json +1 -1
  10. package/artifacts/abis/GoodFundManagerTest.min.json +1 -1
  11. package/artifacts/abis/GoodMarketMaker.min.json +1 -1
  12. package/artifacts/abis/GoodReserveCDai.min.json +1 -1
  13. package/artifacts/abis/IQuoterV2.min.json +1 -1
  14. package/artifacts/abis/ISwapRouter.min.json +1 -1
  15. package/artifacts/abis/IUpgradeabilityOwnerStorage.min.json +1 -0
  16. package/artifacts/abis/Initializable.min.json +1 -0
  17. package/artifacts/abis/InvitesV2.min.json +1 -1
  18. package/artifacts/abis/LastauthReduction.min.json +1 -0
  19. package/artifacts/abis/OneTimeReward.min.json +1 -0
  20. package/artifacts/abis/Ownable.min.json +1 -0
  21. package/artifacts/abis/ReserveRestore.min.json +1 -0
  22. package/artifacts/abis/Upgradeable.min.json +1 -0
  23. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  24. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  25. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  26. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  27. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  28. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  32. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  33. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  34. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  35. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  36. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  37. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  38. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  39. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  40. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +1 -1
  41. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  42. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  43. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  44. package/artifacts/contracts/Interfaces.sol/IQuoterV2.dbg.json +4 -0
  45. package/artifacts/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/IQuoterV2.json +1 -1
  46. package/artifacts/contracts/Interfaces.sol/ISwapRouter.dbg.json +4 -0
  47. package/artifacts/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/ISwapRouter.json +1 -1
  48. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  49. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  50. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  51. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  52. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  53. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  54. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  55. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  56. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
  57. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.json +2 -2
  58. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  59. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.json +2 -2
  60. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
  61. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.json +2 -2
  62. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  63. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +2 -2
  64. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  65. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +20 -2
  66. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  67. package/artifacts/contracts/governance/GReputation.sol/GReputation.json +2 -2
  68. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  69. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +2 -2
  70. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +1 -1
  71. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +1 -1
  72. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  73. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  74. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.json +2 -2
  75. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  76. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  77. package/artifacts/contracts/governance/Reputation.sol/Reputation.json +2 -2
  78. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  79. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +2 -2
  80. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +1 -1
  81. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +2 -2
  82. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
  83. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.json +2 -2
  84. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  85. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.json +2 -2
  86. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
  87. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.json +15 -2
  88. package/artifacts/contracts/invite/OneTimeReward.sol/OneTimeReward.dbg.json +4 -0
  89. package/artifacts/contracts/invite/OneTimeReward.sol/OneTimeReward.json +291 -0
  90. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  91. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  92. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  93. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  94. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  95. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
  96. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  97. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
  98. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.json +2 -2
  99. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
  100. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.json +21 -2
  101. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
  102. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +21 -2
  103. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  104. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +1 -1
  105. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  106. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  107. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +2 -2
  108. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  109. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.json +2 -2
  110. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  111. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +21 -2
  112. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +1 -1
  113. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.json +2 -2
  114. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  115. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  116. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  117. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  118. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.json +2 -2
  119. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  120. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  121. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +2 -2
  122. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  123. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
  124. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +1 -1
  125. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  126. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  127. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  128. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.json +2 -2
  129. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  130. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  131. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +2 -2
  132. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  133. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +2 -2
  134. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  135. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +2 -2
  136. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  137. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +2 -2
  138. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  139. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  140. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  141. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  142. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  143. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  144. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  145. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  146. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  147. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +21 -2
  148. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  149. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +2 -2
  150. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  151. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +6 -6
  152. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  153. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  154. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +3 -3
  155. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  156. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.json +2 -2
  157. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  158. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.json +2 -2
  159. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  160. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +2 -2
  161. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  162. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +7 -2
  163. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  164. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  165. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  166. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +21 -2
  167. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  168. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  169. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  170. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.json +2 -2
  171. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  172. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +2 -2
  173. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  174. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +2 -2
  175. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  176. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +2 -2
  177. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  178. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +2 -2
  179. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  180. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +2 -2
  181. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  182. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +2 -2
  183. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  184. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  185. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +1 -1
  186. package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +1 -1
  187. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +1 -1
  188. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +1 -1
  189. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.json +2 -2
  190. package/artifacts/contracts/token/IFeesFormula.sol/IFeesFormula.dbg.json +1 -1
  191. package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.dbg.json +1 -1
  192. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +1 -1
  193. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +1 -1
  194. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +1 -1
  195. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +1 -1
  196. package/artifacts/contracts/token/superfluid/ISuperToken.sol/ISuperToken.dbg.json +1 -1
  197. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +1 -1
  198. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +2 -2
  199. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +1 -1
  200. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +1 -1
  201. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +1 -1
  202. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +1 -1
  203. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +1 -1
  204. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +1 -1
  205. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  206. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +2 -2
  207. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.dbg.json +1 -1
  208. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.json +2 -2
  209. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  210. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.json +2 -2
  211. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
  212. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.json +2 -2
  213. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  214. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  215. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.json +2 -2
  216. package/artifacts/contracts/utils/BulkWhitelist.sol/BulkWhitelist.dbg.json +4 -0
  217. package/artifacts/contracts/utils/BulkWhitelist.sol/BulkWhitelist.json +67 -0
  218. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +1 -1
  219. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.json +2 -2
  220. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.dbg.json +1 -1
  221. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.json +2 -2
  222. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.dbg.json +1 -1
  223. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.json +2 -2
  224. package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.dbg.json +1 -1
  225. package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.json +2 -2
  226. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  227. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.json +2 -2
  228. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  229. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.json +2 -2
  230. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  231. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  232. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/EternalStorage.dbg.json +4 -0
  233. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/EternalStorage.json +10 -0
  234. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill.dbg.json +4 -0
  235. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill.json +31 -0
  236. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage.dbg.json +4 -0
  237. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage.json +24 -0
  238. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Initializable.dbg.json +4 -0
  239. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Initializable.json +24 -0
  240. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Ownable.dbg.json +4 -0
  241. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Ownable.json +56 -0
  242. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Upgradeable.dbg.json +4 -0
  243. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Upgradeable.json +10 -0
  244. package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.dbg.json +1 -1
  245. package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.json +2 -2
  246. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  247. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +2 -2
  248. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  249. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  250. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  251. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +2 -2
  252. package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.dbg.json +1 -1
  253. package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.json +2 -2
  254. package/artifacts/contracts/utils/LastauthReduction.sol/LastauthReduction.dbg.json +4 -0
  255. package/artifacts/contracts/utils/LastauthReduction.sol/LastauthReduction.json +81 -0
  256. package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
  257. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  258. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.json +2 -2
  259. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  260. package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.dbg.json +1 -1
  261. package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.json +2 -2
  262. package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.dbg.json +1 -1
  263. package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.json +2 -2
  264. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  265. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  266. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.json +2 -2
  267. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  268. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.json +2 -2
  269. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  270. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.json +2 -2
  271. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  272. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.json +2 -2
  273. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  274. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  275. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  276. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.json +2 -2
  277. package/artifacts/contracts/utils/ReserveRestore.sol/ReserveRestore.dbg.json +4 -0
  278. package/artifacts/contracts/utils/ReserveRestore.sol/ReserveRestore.json +91 -0
  279. package/contracts/Interfaces.sol +122 -0
  280. package/contracts/governance/CompoundVotingMachine.sol +26 -11
  281. package/contracts/governance/StakersDistribution.sol +13 -13
  282. package/contracts/invite/InvitesV2.sol +60 -43
  283. package/contracts/invite/OneTimeReward.sol +87 -0
  284. package/contracts/reserve/DistributionHelper.sol +29 -10
  285. package/contracts/reserve/ExchangeHelper.sol +16 -7
  286. package/contracts/reserve/GoodMarketMaker.sol +43 -53
  287. package/contracts/reserve/GoodReserveCDai.sol +44 -16
  288. package/contracts/staking/FuseStakingV3.sol +4 -2
  289. package/contracts/staking/GoodFundManager.sol +44 -4
  290. package/contracts/utils/BulkWhitelist.sol +51 -0
  291. package/contracts/utils/BuyGDClone.sol +0 -122
  292. package/contracts/utils/FuseOldBridgeKill.sol +123 -0
  293. package/contracts/utils/LastauthReduction.sol +92 -0
  294. package/contracts/utils/ReserveRestore.sol +157 -0
  295. package/dist/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +2 -2
  296. package/dist/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +2 -2
  297. package/dist/test-sdk/deploySuperGoodDollar.js +1 -1
  298. package/package.json +19 -20
  299. package/releases/deployment.json +612 -599
  300. package/scripts/analytics/activeStakers.ts +25 -0
  301. package/scripts/analytics/activeUsersCount.ts +80 -26
  302. package/scripts/analytics/activeWalletsStats.ts +155 -22
  303. package/scripts/analytics/checkBridgeBalances.ts +442 -0
  304. package/scripts/deployFullDAO.ts +6 -4
  305. package/scripts/fv.ts +148 -35
  306. package/scripts/multichain-deploy/helpers.ts +10 -8
  307. package/scripts/proposals/identityAuthPeriod.ts +229 -0
  308. package/scripts/proposals/reserveRestore.ts +429 -0
  309. package/scripts/test/localOldDaoDeploy.ts +2 -1
  310. package/scripts/utils.ts +28 -16
  311. package/test/governance/CompoundVotingMachine.daoscheme.ts +3 -0
  312. package/test/governance/CompoundVotingMachine.guardian.test.ts +76 -21
  313. package/test/governance/CompoundVotingMachine.state.test.ts +31 -28
  314. package/test/governance/StakersDistribution.test.ts +79 -5
  315. package/test/helpers.ts +9 -0
  316. package/test/invite/InvitesV2.test.ts +165 -271
  317. package/test/reserve/DistributionHelper.test.ts +10 -10
  318. package/test/reserve/GoodMarketMaker.test.ts +75 -26
  319. package/test/reserve/GoodReserveCDai.test.ts +2 -1
  320. package/test/staking/FuseStaking.test.ts +23 -54
  321. package/test/staking/StakingRewards.test.ts +106 -29
  322. package/test/utils/ProtocolUpgrade.test.ts +1 -0
  323. package/tsconfig.json +1 -1
  324. package/types/@openzeppelin/contracts/access/Ownable.ts +175 -0
  325. package/types/@openzeppelin/contracts/access/index.ts +1 -0
  326. package/types/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/IQuoterV2.ts +1 -1
  327. package/types/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/ISwapRouter.ts +1 -1
  328. package/types/contracts/Interfaces.sol/index.ts +2 -0
  329. package/types/contracts/governance/CompoundVotingMachine.ts +44 -3
  330. package/types/contracts/invite/InvitesV2.ts +32 -0
  331. package/types/contracts/invite/OneTimeReward.ts +521 -0
  332. package/types/contracts/invite/index.ts +1 -0
  333. package/types/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.ts +35 -0
  334. package/types/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.ts +35 -0
  335. package/types/contracts/mocks/GoodFundManagerTest.ts +35 -0
  336. package/types/contracts/reserve/DistributionHelper.ts +35 -0
  337. package/types/contracts/reserve/GoodMarketMaker.ts +3 -3
  338. package/types/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.ts +5 -5
  339. package/types/contracts/staking/FuseStakingV3.sol/FuseStakingV3.ts +7 -2
  340. package/types/contracts/staking/GoodFundManager.ts +35 -0
  341. package/types/contracts/utils/BulkWhitelist.ts +153 -0
  342. package/types/contracts/utils/BuyGDClone.sol/index.ts +0 -2
  343. package/types/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill.ts +108 -0
  344. package/types/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage.ts +89 -0
  345. package/types/contracts/utils/FuseOldBridgeKill.sol/Initializable.ts +87 -0
  346. package/types/contracts/utils/FuseOldBridgeKill.sol/Ownable.ts +148 -0
  347. package/types/contracts/utils/FuseOldBridgeKill.sol/index.ts +7 -0
  348. package/types/contracts/utils/LastauthReduction.ts +168 -0
  349. package/types/contracts/utils/ReserveRestore.ts +201 -0
  350. package/types/contracts/utils/index.ts +5 -0
  351. package/types/factories/@openzeppelin/contracts/access/Ownable__factory.ts +78 -0
  352. package/types/factories/@openzeppelin/contracts/access/index.ts +1 -0
  353. package/types/factories/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/IQuoterV2__factory.ts +1 -1
  354. package/types/factories/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/ISwapRouter__factory.ts +1 -1
  355. package/types/factories/contracts/Interfaces.sol/index.ts +2 -0
  356. package/types/factories/contracts/fuseFaucet/Faucet__factory.ts +1 -1
  357. package/types/factories/contracts/fuseFaucet/FuseFaucetV2__factory.ts +1 -1
  358. package/types/factories/contracts/fuseFaucet/FuseFaucet__factory.ts +1 -1
  359. package/types/factories/contracts/governance/ClaimersDistribution__factory.ts +1 -1
  360. package/types/factories/contracts/governance/CompoundVotingMachine__factory.ts +19 -1
  361. package/types/factories/contracts/governance/GReputation__factory.ts +1 -1
  362. package/types/factories/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking__factory.ts +1 -1
  363. package/types/factories/contracts/governance/GovernanceStaking__factory.ts +1 -1
  364. package/types/factories/contracts/governance/Reputation__factory.ts +1 -1
  365. package/types/factories/contracts/governance/StakersDistribution__factory.ts +1 -1
  366. package/types/factories/contracts/identity/IdentityV2__factory.ts +1 -1
  367. package/types/factories/contracts/invite/InvitesFuseV2__factory.ts +1 -1
  368. package/types/factories/contracts/invite/InvitesV1__factory.ts +1 -1
  369. package/types/factories/contracts/invite/InvitesV2__factory.ts +14 -1
  370. package/types/factories/contracts/invite/OneTimeReward__factory.ts +361 -0
  371. package/types/factories/contracts/invite/index.ts +1 -0
  372. package/types/factories/contracts/mocks/DistributionBridgeMock__factory.ts +1 -1
  373. package/types/factories/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper__factory.ts +20 -1
  374. package/types/factories/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest__factory.ts +20 -1
  375. package/types/factories/contracts/mocks/GoodCompoundStakingTest__factory.ts +1 -1
  376. package/types/factories/contracts/mocks/GoodDollarStakingMock__factory.ts +1 -1
  377. package/types/factories/contracts/mocks/GoodFundManagerTest__factory.ts +20 -1
  378. package/types/factories/contracts/mocks/IdentityMock__factory.ts +1 -1
  379. package/types/factories/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock__factory.ts +1 -1
  380. package/types/factories/contracts/mocks/OverMintTester.sol/OverMintTester__factory.ts +1 -1
  381. package/types/factories/contracts/mocks/OverMintTesterRegularStake__factory.ts +1 -1
  382. package/types/factories/contracts/mocks/SwapHelperTest__factory.ts +1 -1
  383. package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock2__factory.ts +1 -1
  384. package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock3__factory.ts +1 -1
  385. package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock4__factory.ts +1 -1
  386. package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock__factory.ts +1 -1
  387. package/types/factories/contracts/reserve/DistributionHelper__factory.ts +20 -1
  388. package/types/factories/contracts/reserve/ExchangeHelper__factory.ts +1 -1
  389. package/types/factories/contracts/reserve/GoodMarketMaker__factory.ts +5 -5
  390. package/types/factories/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai__factory.ts +2 -2
  391. package/types/factories/contracts/staking/BaseShareFieldV2__factory.ts +1 -1
  392. package/types/factories/contracts/staking/BaseShareField__factory.ts +1 -1
  393. package/types/factories/contracts/staking/DonationsStaking__factory.ts +1 -1
  394. package/types/factories/contracts/staking/FuseStakingV3.sol/FuseStakingV3__factory.ts +6 -1
  395. package/types/factories/contracts/staking/GoodFundManager__factory.ts +20 -1
  396. package/types/factories/contracts/staking/UniswapV2SwapHelper__factory.ts +1 -1
  397. package/types/factories/contracts/staking/aave/AaveStakingFactory__factory.ts +1 -1
  398. package/types/factories/contracts/staking/aave/GoodAaveStakingV2__factory.ts +1 -1
  399. package/types/factories/contracts/staking/aave/GoodAaveStaking__factory.ts +1 -1
  400. package/types/factories/contracts/staking/compound/CompoundStakingFactory__factory.ts +1 -1
  401. package/types/factories/contracts/staking/compound/GoodCompoundStakingV2__factory.ts +1 -1
  402. package/types/factories/contracts/staking/compound/GoodCompoundStaking__factory.ts +1 -1
  403. package/types/factories/contracts/token/GoodDollar__factory.ts +1 -1
  404. package/types/factories/contracts/token/superfluid/SuperGoodDollar__factory.ts +1 -1
  405. package/types/factories/contracts/ubi/UBISchemeV2__factory.ts +1 -1
  406. package/types/factories/contracts/ubi/UBIScheme__factory.ts +1 -1
  407. package/types/factories/contracts/utils/AdminWalletFuse__factory.ts +1 -1
  408. package/types/factories/contracts/utils/AdminWallet__factory.ts +1 -1
  409. package/types/factories/contracts/utils/BulkWhitelist__factory.ts +123 -0
  410. package/types/factories/contracts/utils/BuyAndBridgeHelper__factory.ts +1 -1
  411. package/types/factories/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory__factory.ts +1 -1
  412. package/types/factories/contracts/utils/BuyGDClone.sol/BuyGDClone__factory.ts +1 -1
  413. package/types/factories/contracts/utils/BuyGDClone.sol/DonateGDClone__factory.ts +1 -1
  414. package/types/factories/contracts/utils/BuyGDClone.sol/index.ts +0 -2
  415. package/types/factories/contracts/utils/DAOContract__factory.ts +1 -1
  416. package/types/factories/contracts/utils/DAOUpgradeableContract__factory.ts +1 -1
  417. package/types/factories/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill__factory.ts +82 -0
  418. package/types/factories/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage__factory.ts +43 -0
  419. package/types/factories/contracts/utils/FuseOldBridgeKill.sol/Initializable__factory.ts +75 -0
  420. package/types/factories/contracts/utils/FuseOldBridgeKill.sol/Ownable__factory.ts +105 -0
  421. package/types/factories/contracts/utils/FuseOldBridgeKill.sol/index.ts +7 -0
  422. package/types/factories/contracts/utils/GDFaucet__factory.ts +1 -1
  423. package/types/factories/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper__factory.ts +1 -1
  424. package/types/factories/contracts/utils/IdentityFix__factory.ts +1 -1
  425. package/types/factories/contracts/utils/LastauthReduction__factory.ts +134 -0
  426. package/types/factories/contracts/utils/MultichainBridgeHelper__factory.ts +1 -1
  427. package/types/factories/contracts/utils/OneTimePaymentsV2__factory.ts +1 -1
  428. package/types/factories/contracts/utils/OneTimePayments__factory.ts +1 -1
  429. package/types/factories/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade__factory.ts +1 -1
  430. package/types/factories/contracts/utils/ProtocolUpgradeFuseRecover__factory.ts +1 -1
  431. package/types/factories/contracts/utils/ProtocolUpgradeFuse__factory.ts +1 -1
  432. package/types/factories/contracts/utils/ProtocolUpgradeRecover__factory.ts +1 -1
  433. package/types/factories/contracts/utils/ReputationTestHelper__factory.ts +1 -1
  434. package/types/factories/contracts/utils/ReserveRestore__factory.ts +144 -0
  435. package/types/factories/contracts/utils/index.ts +4 -0
  436. package/types/hardhat.d.ts +97 -16
  437. package/types/index.ts +18 -4
  438. package/artifacts/contracts/utils/BuyGDClone.sol/IQuoterV2.dbg.json +0 -4
  439. package/artifacts/contracts/utils/BuyGDClone.sol/ISwapRouter.dbg.json +0 -4
  440. package/contracts/utils/.DS_Store +0 -0
  441. package/yarn.lock +0 -23715
@@ -120,6 +120,22 @@ describe("GoodMarketMaker - calculate gd value at reserve", () => {
120
120
  expect(onecDAIReturn.toNumber() / 100).to.be.equal(10000); //0.0001 cdai is 1 gd, so for 1eth you get 10000 gd (divide by 100 to account for 2 decimals precision)
121
121
  });
122
122
 
123
+ it("should calculate mint UBI correctly for 8 decimals precision when price is 0.0001 and 100% ratio", async () => {
124
+ const expansion = await initializeToken(
125
+ cdai,
126
+ "100", //1gd
127
+ "10000", //0.0001 cDai
128
+ "1000000" //100% rr
129
+ );
130
+ const gdPrice = await marketMaker.currentPrice(cdai);
131
+ const toMint = await marketMaker.calculateMintInterest(cdai, "100000000");
132
+ const expectedTotalMinted = 10 ** 8 / gdPrice.toNumber(); //1cdai divided by gd price;
133
+ expect(expectedTotalMinted).to.be.equal(10000); //1k GD since price is 0.0001 cdai for 1 gd
134
+ expect(toMint.toString()).to.be.equal(
135
+ (expectedTotalMinted * 100).toString()
136
+ ); //add 2 decimals precision
137
+ });
138
+
123
139
  it("should update reserve ratio by days passed", async () => {
124
140
  const expansion = await marketMaker.reserveRatioDailyExpansion();
125
141
  // 20% yearly. set up in the constructor
@@ -144,16 +160,6 @@ describe("GoodMarketMaker - calculate gd value at reserve", () => {
144
160
  ).to.be.equal("994511"); // 998777 * 0.999388834642296000000000000^7
145
161
  });
146
162
 
147
- it("should calculate mint UBI correctly for 8 decimals precision", async () => {
148
- const gdPrice = await marketMaker.currentPrice(cdai);
149
- const toMint = await marketMaker.calculateMintInterest(cdai, "100000000");
150
- const expectedTotalMinted = 10 ** 8 / gdPrice.toNumber(); //1cdai divided by gd price;
151
- expect(expectedTotalMinted).to.be.equal(10000); //1k GD since price is 0.0001 cdai for 1 gd
152
- expect(toMint.toString()).to.be.equal(
153
- (expectedTotalMinted * 100).toString()
154
- ); //add 2 decimals precision
155
- });
156
-
157
163
  it("should not return a sell contribution if the given gd is less than the given contribution amount", async () => {
158
164
  let dai = await deployDAIMock();
159
165
 
@@ -181,13 +187,27 @@ describe("GoodMarketMaker - calculate gd value at reserve", () => {
181
187
  });
182
188
 
183
189
  it("should be able to calculate and update bonding curve gd balance based on oncoming cDAI and the price stays the same", async () => {
184
- const priceBefore = await marketMaker.currentPrice(cdai);
190
+ let priceBefore = await marketMaker.currentPrice(cdai);
185
191
  await marketMaker.mintInterest(cdai, BN.from(1e8));
192
+ let priceAfter = await marketMaker.currentPrice(cdai)
193
+
194
+ expect(priceAfter).gt(0)
195
+ expect(priceBefore).gt(0)
186
196
  expect(
187
197
  Math.floor(
188
- (await marketMaker.currentPrice(cdai).then(_ => _.toNumber())) / 100
189
- ).toString()
198
+ (priceAfter.toNumber() / 100)).toString()
190
199
  ).to.be.equal(Math.floor(priceBefore.toNumber() / 100).toString());
200
+
201
+
202
+ // very large amount of cdai
203
+ priceBefore = await marketMaker.currentPrice(cdai);
204
+ await marketMaker.mintInterest(cdai, ethers.utils.parseEther("1"));
205
+ priceAfter = await marketMaker.currentPrice(cdai)
206
+
207
+ console.log({ priceAfter, priceBefore })
208
+ expect(priceAfter).gt(0)
209
+ expect(priceBefore).gt(0)
210
+ expect(priceAfter).to.eq(priceBefore);
191
211
  });
192
212
 
193
213
  it("should not be able to mint interest by a non owner", async () => {
@@ -273,11 +293,12 @@ describe("GoodMarketMaker - calculate gd value at reserve", () => {
273
293
  "800000" //80% rr
274
294
  );
275
295
  const price = await marketMaker.currentPrice(dai);
276
- expect(price.toString()).to.be.equal("100000000000000"); //1gd is equal 0.0001 dai = 1000000000000000 wei;
296
+ expect(price.toString()).to.be.equal(ethers.utils.parseEther("0.000125")); //1gd is equal 0.0001/1*0.8 = 0.000125
277
297
  const oneDAIReturn = await marketMaker.buyReturn(
278
298
  dai,
279
299
  ethers.utils.parseEther("1") //1Dai
280
300
  );
301
+
281
302
  //bancor formula to calcualte return
282
303
  //gd return = gdsupply * ((1+tokenamount/tokensupply)^rr -1)
283
304
  const expectedReturn = 1 * ((1 + 1 / 0.0001) ** 0.8 - 1);
@@ -292,16 +313,27 @@ describe("GoodMarketMaker - calculate gd value at reserve", () => {
292
313
  dai,
293
314
  ethers.utils.parseEther("1")
294
315
  );
295
- const expectedTotalMinted = 10 ** 18 / gdPrice.toNumber();
296
- // according to the sell formula the gd price should be 10^14 so 10^18 / 10^14 = 10^4
297
- // Return = _reserveBalance * (1 - (1 - _sellAmount / _supply) ^ (1000000 / _reserveRatio))
298
- expect(expectedTotalMinted).to.be.equal(10000);
316
+ let reserveToken = await marketMaker.reserveTokens(dai);
317
+
318
+ //we expect price to stay the same p = reserve/supply*RR
319
+ const newPrice = reserveToken.reserveSupply.add(ethers.utils.parseEther("1")).mul(1e8).div(reserveToken.gdSupply.add(toMint).mul(reserveToken.reserveRatio))
320
+ expect(newPrice).equal(gdPrice)
321
+
322
+ // the formula is amountToMint = reserveInterest * tokenSupply / reserveBalance
323
+ const expectedTotalMinted = 10 ** 18 * reserveToken.gdSupply.toNumber() / reserveToken.reserveSupply.toNumber()
324
+ expect(expectedTotalMinted).to.be.equal(1000000);
299
325
  expect(toMint.toString()).to.be.equal(
300
- (expectedTotalMinted * 100).toString()
326
+ (expectedTotalMinted).toString()
301
327
  );
302
328
  });
303
329
 
304
330
  it("should calculate sell return with cDAI", async () => {
331
+ await initializeToken(
332
+ cdai,
333
+ "1000000000", //1gd
334
+ "100000000000", //0.0001 cDai
335
+ "900000" //80% rr
336
+ );
305
337
  const gDReturn = await marketMaker.sellReturn(
306
338
  cdai,
307
339
  10 //0.1 gd
@@ -515,19 +547,36 @@ describe("GoodMarketMaker - calculate gd value at reserve", () => {
515
547
  });
516
548
 
517
549
  it("should calculate amount of gd to mint based on incoming cDAI without effecting bonding curve price", async () => {
518
- const priceBefore = await marketMaker.currentPrice(dai);
519
- const toMint = await marketMaker.calculateMintInterest(
550
+ await initializeToken(
520
551
  dai,
521
- BN.from("1000000000000000000")
522
- );
523
- const totalMinted = 1e18 / priceBefore.toNumber();
524
- expect(toMint.toString()).to.be.equal(
525
- Math.floor(totalMinted * 100).toString()
552
+ 6e11,
553
+ ethers.utils.parseEther("600000"),
554
+ 5e5
526
555
  );
556
+
557
+ const priceBefore = await marketMaker.currentPrice(dai);
558
+
559
+ await marketMaker.mintInterest(dai, ethers.utils.parseEther("100"))
527
560
  const priceAfter = await marketMaker.currentPrice(dai);
528
561
  expect(priceBefore.toString()).to.be.equal(priceAfter.toString());
529
562
  });
530
563
 
564
+ it("should calculate amount of gd to mint based on incoming cDAI with small precision issue effecting bonding curve price in very low amounts", async () => {
565
+ await initializeToken(
566
+ dai,
567
+ 600,
568
+ 600000000,
569
+ 5e5
570
+ );
571
+
572
+ const priceBefore = await marketMaker.currentPrice(dai);
573
+
574
+ await marketMaker.mintInterest(dai, 60000)
575
+ const priceAfter = await marketMaker.currentPrice(dai);
576
+ expect(priceBefore).equal(200000000)
577
+ expect(priceAfter).equal(200020000)
578
+ });
579
+
531
580
  it("should not change the reserve ratio when calculate how much decrease it for the reservetoken", async () => {
532
581
  let reserveTokenBefore = await marketMaker.reserveTokens(cdai);
533
582
  let reserveRatioBefore = reserveTokenBefore.reserveRatio;
@@ -474,6 +474,7 @@ describe("GoodReserve - staking with cDAI mocks", () => {
474
474
  "BancorFormula",
475
475
  await marketMaker.getBancor()
476
476
  );
477
+
477
478
  const expectedReturn = await bancor.calculateSaleReturn(
478
479
  supplyBefore.toString(),
479
480
  reserveBalanceBefore.toString(),
@@ -966,7 +967,7 @@ describe("GoodReserve - staking with cDAI mocks", () => {
966
967
  parseInt(reserveBalance.toString()) *
967
968
  (1 -
968
969
  (1 - amount.toNumber() / parseInt(supply.toString())) **
969
- (1000000 / reserveToken.reserveRatio));
970
+ (1000000 / reserveToken.reserveRatio));
970
971
 
971
972
  expected = Math.ceil((0.8 * expected) / 100) * 100; //deduct 20% contribution, allow 5 points precission mismatch (due to bancor pow estimation?), match solidity no floating point
972
973
  //expected = Math.floor(0.8 * expected);
@@ -12,12 +12,7 @@ describe("FuseStakingV3", () => {
12
12
  let founder, staker1, staker2;
13
13
  let signers;
14
14
 
15
- let uniswap: waffle.MockContract,
16
- uniswapFactory,
17
- uniswapPair,
18
- gdusdcPair,
19
- fusefusdPair,
20
- ubiMock;
15
+ let uniswap: waffle.MockContract, uniswapFactory, uniswapPair, gdusdcPair, fusefusdPair, ubiMock;
21
16
 
22
17
  const deployMocks = async () => {
23
18
  let u = await hre.artifacts.readArtifact("Uniswap");
@@ -35,24 +30,14 @@ describe("FuseStakingV3", () => {
35
30
  await uniswap.mock.WETH.returns(signers[3].address);
36
31
  await uniswapFactory.mock.getPair.returns(uniswapPair.address);
37
32
  await uniswapFactory.mock.getPair
38
- .withArgs(
39
- ethers.constants.AddressZero,
40
- "0x620fd5fa44BE6af63715Ef4E65DDFA0387aD13F5"
41
- )
33
+ .withArgs(ethers.constants.AddressZero, "0x620fd5fa44BE6af63715Ef4E65DDFA0387aD13F5")
42
34
  .returns(gdusdcPair.address);
43
35
 
44
36
  await uniswapFactory.mock.getPair
45
- .withArgs(
46
- signers[3].address,
47
- "0x249BE57637D8B013Ad64785404b24aeBaE9B098B"
48
- )
37
+ .withArgs(signers[3].address, "0x249BE57637D8B013Ad64785404b24aeBaE9B098B")
49
38
  .returns(fusefusdPair.address);
50
39
 
51
- await uniswapPair.mock.getReserves.returns(
52
- ethers.utils.parseEther("1000"),
53
- "100000",
54
- "0"
55
- );
40
+ await uniswapPair.mock.getReserves.returns(ethers.utils.parseEther("1000"), "100000", "0");
56
41
  await gdusdcPair.mock.getReserves.returns("4984886100", "10789000000", "0");
57
42
  await fusefusdPair.mock.getReserves.returns(
58
43
  ethers.utils.parseEther("10000"),
@@ -67,9 +52,7 @@ describe("FuseStakingV3", () => {
67
52
  await deployMocks();
68
53
 
69
54
  let network = networkConfig.name;
70
- staking = (await (
71
- await ethers.getContractFactory("FuseStakingV3")
72
- ).deploy()) as FuseStakingV3;
55
+ staking = (await (await ethers.getContractFactory("FuseStakingV3")).deploy()) as FuseStakingV3;
73
56
 
74
57
  await staking.initialize(uniswap.address, NULL_ADDRESS);
75
58
  await staking.setUBIScheme(ubiMock.address);
@@ -80,54 +63,42 @@ describe("FuseStakingV3", () => {
80
63
  });
81
64
 
82
65
  it("should calc quantity with slippage", async () => {
83
- const res = await staking[
84
- "calcMaxTokenWithPriceImpact(uint256,uint256,uint256)"
85
- ]("6917100025787759640000", "265724494", ethers.utils.parseEther("500"));
66
+ const res = await staking["calcMaxTokenWithPriceImpact(uint256,uint256,uint256)"](
67
+ "6917100025787759640000",
68
+ "265724494",
69
+ ethers.utils.parseEther("500")
70
+ );
86
71
 
87
72
  // const fuseQuantity = ethers.utils.formatEther(res);
88
73
  expect(res.maxToken).to.gt(0);
89
- expect(res.maxToken).to.equal(
90
- BigNumber.from("6917100025787759640000").mul(3).div(100)
91
- );
92
- expect(res.tokenOut).to.equal(7717004);
74
+ expect(res.maxToken).to.equal(BigNumber.from("6917100025787759640000").mul(6).div(1000));
75
+ expect(res.tokenOut).to.equal(1580111);
93
76
  });
94
77
 
95
78
  it("should calc quantity with uniswap mock", async () => {
96
- const res = await staking["calcMaxFuseWithPriceImpact(uint256)"](
97
- ethers.utils.parseEther("500")
98
- );
79
+ const res = await staking["calcMaxFuseWithPriceImpact(uint256)"](ethers.utils.parseEther("500"));
99
80
 
100
81
  // const fuseQuantity = ethers.utils.formatEther(res);
101
82
  expect(res.fuseAmount).to.gt(0);
102
- expect(res.fuseAmount).to.equal(ethers.utils.parseEther("30"));
83
+ expect(res.fuseAmount).to.equal(ethers.utils.parseEther("6"));
103
84
 
104
- await uniswapPair.mock.getReserves.returns(
105
- ethers.utils.parseEther("100"),
106
- "500000",
107
- "0"
108
- );
109
- const res2 = await staking["calcMaxFuseWithPriceImpact(uint256)"](
110
- ethers.utils.parseEther("500")
111
- );
85
+ await uniswapPair.mock.getReserves.returns(ethers.utils.parseEther("100"), "500000", "0");
86
+ const res2 = await staking["calcMaxFuseWithPriceImpact(uint256)"](ethers.utils.parseEther("500"));
112
87
 
113
- expect(res2.fuseAmount).to.equal(ethers.utils.parseEther("3"));
88
+ expect(res2.fuseAmount).to.equal(ethers.utils.parseEther("0.6"));
114
89
  });
115
90
 
116
91
  it("should calculate gd/usdc quantity with 0 price impact ", async () => {
117
- const res = await staking["calcMaxFuseUSDCWithPriceImpact(uint256)"](
118
- ethers.utils.parseEther("10")
119
- );
92
+ const res = await staking["calcMaxFuseUSDCWithPriceImpact(uint256)"](ethers.utils.parseEther("10"));
120
93
  //exchanging 10 fuse which are equal 2$ USDC should have no significant price impact on usdc/gd swap so we should be able to swap the whole 10
121
94
  expect(res.maxFuse).to.gt(0);
122
95
  expect(res.maxFuse).to.equal(ethers.utils.parseEther("10"));
123
96
  });
124
97
 
125
98
  it("should detect gd/usdc price impact", async () => {
126
- const res = await staking["calcMaxFuseUSDCWithPriceImpact(uint256)"](
127
- ethers.utils.parseEther("10000")
128
- );
99
+ const res = await staking["calcMaxFuseUSDCWithPriceImpact(uint256)"](ethers.utils.parseEther("10000"));
129
100
  expect(res.maxFuse).to.lt(ethers.utils.parseEther("10000"));
130
- expect(res.maxFuse).to.equal(ethers.utils.parseEther("1618.35")); //on fuse swap it was around 335$ on above gd/usdc reserves that reaches 3% impact, that means 335*5=1675fuse
101
+ expect(res.maxFuse).to.equal(ethers.utils.parseEther("323.67")); //on fuse swap it was around 335$ on above gd/usdc reserves that reaches 3% impact, that means 335*5=1675fuse
131
102
  });
132
103
 
133
104
  it("should match fuseswap and allow to exchange +-4600 fuse to G$", async () => {
@@ -141,10 +112,8 @@ describe("FuseStakingV3", () => {
141
112
  "0"
142
113
  );
143
114
 
144
- const res = await staking["calcMaxFuseUSDCWithPriceImpact(uint256)"](
145
- ethers.utils.parseEther("10000")
146
- );
147
- expect(res.maxFuse).to.lt(ethers.utils.parseEther("5000"));
148
- expect(res.maxFuse).to.gt(ethers.utils.parseEther("4500"));
115
+ const res = await staking["calcMaxFuseUSDCWithPriceImpact(uint256)"](ethers.utils.parseEther("10000"));
116
+ expect(res.maxFuse).to.lt(ethers.utils.parseEther("1000"));
117
+ expect(res.maxFuse).to.gt(ethers.utils.parseEther("450"));
149
118
  });
150
119
  });
@@ -47,8 +47,10 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
47
47
  genericCall,
48
48
  goodCompoundStakingFactory,
49
49
  goodCompoundStakingTestFactory,
50
+ runAsAvatarOnly,
50
51
  deployStaking;
51
52
 
53
+
52
54
  before(async () => {
53
55
  [founder, staker, ...signers] = await ethers.getSigners();
54
56
  schemeMock = signers.pop();
@@ -67,9 +69,11 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
67
69
  reserve,
68
70
  setReserveToken,
69
71
  genericCall: gc,
70
- COMP
72
+ COMP,
73
+ runAsAvatarOnly: raao
71
74
  } = await loadFixture(createDAO);
72
75
 
76
+ runAsAvatarOnly = raao
73
77
  const cdaiFactory = await ethers.getContractFactory("cDAIMock");
74
78
  const cBatFactory = await ethers.getContractFactory("cBATMock");
75
79
  const goodFundManagerFactory = await ethers.getContractFactory(
@@ -447,6 +451,15 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
447
451
  expect(gdBalancerAfterWithdraw).to.be.equal(gdBalanceBeforeWithdraw);
448
452
  });
449
453
 
454
+ it("shouldn't be able to collect interest when contract is not active", async () => {
455
+ const goodCompoundStaking2 = await deployStaking(null, null, "1728000");
456
+ await expect(
457
+ goodFundManager
458
+ .connect(staker)
459
+ .collectInterest([goodCompoundStaking2.address], true)
460
+ ).revertedWith(/not a dao contract/);
461
+ });
462
+
450
463
  // it("should set blacklisted false and mint rewards", async () => {
451
464
  // const goodFundManagerFactory = await ethers.getContractFactory(
452
465
  // "GoodFundManager"
@@ -1137,6 +1150,86 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
1137
1150
  expect(sortedArrays[1][0]).to.be.equal(cDAI1.address);
1138
1151
  });
1139
1152
 
1153
+ // needs to come before next test where we blacklist the goodcompoundstaking contract
1154
+ it("should revert when colleced interest is not greater than gas cost when 2 months passed [ @skip-on-coverage ]", async () => {
1155
+
1156
+ // make sure expansion is very low
1157
+ await initializeToken(
1158
+ cDAI.address,
1159
+ "129966743722", //1gd
1160
+ "499870173594", //0.0001 cDai
1161
+ "1000000" //100% rr
1162
+ );
1163
+ await runAsAvatarOnly(
1164
+ goodReserve,
1165
+ "setReserveRatioDailyExpansion(uint256,uint256)",
1166
+ ethers.utils.parseEther("999999999"),
1167
+ ethers.utils.parseEther("1000000000")
1168
+ );
1169
+
1170
+ const currentBlockNumber = await ethers.provider.getBlockNumber();
1171
+ const currentBlock = await ethers.provider.getBlock(currentBlockNumber);
1172
+
1173
+ let encodedData = goodFundManager.interface.encodeFunctionData(
1174
+ "setStakingReward",
1175
+ [
1176
+ "1000",
1177
+ goodCompoundStaking.address,
1178
+ 0,
1179
+ currentBlockNumber + 1000000,
1180
+ false
1181
+ ] // set 10 gd per block
1182
+ );
1183
+ await genericCall(goodFundManager.address, encodedData);
1184
+ await ethers.provider.send("evm_setNextBlockTimestamp", [
1185
+ currentBlock.timestamp + 5185020
1186
+ ]);
1187
+ await ethers.provider.send("evm_mine", []);
1188
+ console.log(await goodFundManager.activeContracts(0));
1189
+ await expect(
1190
+ goodFundManager.collectInterest([goodCompoundStaking.address], false)
1191
+ ).revertedWith(/< gas costs/);
1192
+ });
1193
+
1194
+ it("should be able to mint ubi when 0 interest but ubi value > interestMultiplier*gas cost when 2 months passed [ @skip-on-coverage ]", async () => {
1195
+
1196
+ await initializeToken(
1197
+ cDAI.address,
1198
+ "129966743722", //1gd
1199
+ "499870173594", //0.0001 cDai
1200
+ "400000" //100% rr
1201
+ );
1202
+ await runAsAvatarOnly(
1203
+ goodReserve,
1204
+ "setReserveRatioDailyExpansion(uint256,uint256)",
1205
+ ethers.utils.parseEther("999999999"),
1206
+ ethers.utils.parseEther("1000000000")
1207
+ );
1208
+
1209
+ const currentBlockNumber = await ethers.provider.getBlockNumber();
1210
+ const currentBlock = await ethers.provider.getBlock(currentBlockNumber);
1211
+
1212
+ let encodedData = goodFundManager.interface.encodeFunctionData(
1213
+ "setStakingReward",
1214
+ [
1215
+ "1000",
1216
+ goodCompoundStaking.address,
1217
+ 0,
1218
+ currentBlockNumber + 1000000,
1219
+ false
1220
+ ] // set 10 gd per block
1221
+ );
1222
+ await genericCall(goodFundManager.address, encodedData);
1223
+ await ethers.provider.send("evm_setNextBlockTimestamp", [
1224
+ currentBlock.timestamp + 5185020
1225
+ ]);
1226
+ await ethers.provider.send("evm_mine", []);
1227
+ console.log(await goodFundManager.activeContracts(0));
1228
+ await expect(
1229
+ goodFundManager.collectInterest([goodCompoundStaking.address], false)
1230
+ ).revertedWith(/< gas costs/);
1231
+ });
1232
+
1140
1233
  it("It should not be able to calc and sort array when there is no active staking contract", async () => {
1141
1234
  const goodFundManagerFactory = await ethers.getContractFactory(
1142
1235
  "GoodFundManager"
@@ -1156,22 +1249,6 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
1156
1249
  await genericCall(goodFundManager.address, encodedData, avatar, 0);
1157
1250
  });
1158
1251
 
1159
- it("collected interest should be greater than gas cost when 2 months passed", async () => {
1160
- const currentBlockNumber = await ethers.provider.getBlockNumber();
1161
- const currentBlock = await ethers.provider.getBlock(currentBlockNumber);
1162
-
1163
- await ethers.provider.send("evm_setNextBlockTimestamp", [
1164
- currentBlock.timestamp + 5185020
1165
- ]);
1166
- await ethers.provider.send("evm_mine", []);
1167
- const collectableContracts = await goodFundManager
1168
- .calcSortedContracts()
1169
- .catch(e => e);
1170
- await expect(
1171
- goodFundManager.collectInterest([goodCompoundStaking.address], false)
1172
- ).revertedWith(/< gas costs/);
1173
- });
1174
-
1175
1252
  it("Avatar should be able to set gd minting gas amount", async () => {
1176
1253
  const goodFundManagerFactory = await ethers.getContractFactory(
1177
1254
  "GoodFundManager"
@@ -1512,13 +1589,13 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
1512
1589
  );
1513
1590
  await bat
1514
1591
  .connect(staker)
1515
- ["approve(address,uint256)"](simpleStaking1.address, stakingAmount);
1592
+ ["approve(address,uint256)"](simpleStaking1.address, stakingAmount);
1516
1593
  await bat
1517
1594
  .connect(signers[0])
1518
- ["approve(address,uint256)"](simpleStaking1.address, stakingAmount);
1595
+ ["approve(address,uint256)"](simpleStaking1.address, stakingAmount);
1519
1596
  await bat
1520
1597
  .connect(signers[1])
1521
- ["approve(address,uint256)"](simpleStaking1.address, stakingAmount);
1598
+ ["approve(address,uint256)"](simpleStaking1.address, stakingAmount);
1522
1599
  const stakerOneStakeBlockNumber =
1523
1600
  (await ethers.provider.getBlockNumber()) + 1;
1524
1601
  await simpleStaking1["stake(uint256,uint256,bool)"](
@@ -1533,7 +1610,7 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
1533
1610
  (await ethers.provider.getBlockNumber()) + 1;
1534
1611
  await simpleStaking1
1535
1612
  .connect(staker)
1536
- ["stake(uint256,uint256,bool)"](stakingAmount.div(5), "0", false);
1613
+ ["stake(uint256,uint256,bool)"](stakingAmount.div(5), "0", false);
1537
1614
  const stakerTwoGdBalanceAfterStake = await goodDollar.balanceOf(
1538
1615
  staker.address
1539
1616
  );
@@ -1541,7 +1618,7 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
1541
1618
  (await ethers.provider.getBlockNumber()) + 1;
1542
1619
  await simpleStaking1
1543
1620
  .connect(signers[0])
1544
- ["stake(uint256,uint256,bool)"](stakingAmount.div(4), "0", false);
1621
+ ["stake(uint256,uint256,bool)"](stakingAmount.div(4), "0", false);
1545
1622
  const stakerThreeGdBalanceAfterStake = await goodDollar.balanceOf(
1546
1623
  signers[0].address
1547
1624
  );
@@ -1549,7 +1626,7 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
1549
1626
  (await ethers.provider.getBlockNumber()) + 1;
1550
1627
  await simpleStaking1
1551
1628
  .connect(signers[1])
1552
- ["stake(uint256,uint256,bool)"](stakingAmount.div(10), "0", false);
1629
+ ["stake(uint256,uint256,bool)"](stakingAmount.div(10), "0", false);
1553
1630
  const stakerFourGdBalanceAfterStake = await goodDollar.balanceOf(
1554
1631
  signers[1].address
1555
1632
  );
@@ -1561,21 +1638,21 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
1561
1638
  );
1562
1639
  await simpleStaking1
1563
1640
  .connect(staker)
1564
- ["withdrawStake(uint256,bool)"](stakingAmount.div(5), false);
1641
+ ["withdrawStake(uint256,bool)"](stakingAmount.div(5), false);
1565
1642
  const stakerTwoWithdrawBlockNumber = await ethers.provider.getBlockNumber();
1566
1643
  const stakerTwoGdBalanceAfterWithdraw = await goodDollar.balanceOf(
1567
1644
  staker.address
1568
1645
  );
1569
1646
  await simpleStaking1
1570
1647
  .connect(signers[0])
1571
- ["withdrawStake(uint256,bool)"](stakingAmount.div(4), false);
1648
+ ["withdrawStake(uint256,bool)"](stakingAmount.div(4), false);
1572
1649
 
1573
1650
  const stakerThreeGdBalanceAfterWithdraw = await goodDollar.balanceOf(
1574
1651
  signers[0].address
1575
1652
  );
1576
1653
  await simpleStaking1
1577
1654
  .connect(signers[1])
1578
- ["withdrawStake(uint256,bool)"](stakingAmount.div(10), false);
1655
+ ["withdrawStake(uint256,bool)"](stakingAmount.div(10), false);
1579
1656
  const stakerFourGdBalanceAfterWithdraw = await goodDollar.balanceOf(
1580
1657
  signers[1].address
1581
1658
  );
@@ -1683,7 +1760,7 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
1683
1760
  );
1684
1761
  await bat
1685
1762
  .connect(staker)
1686
- ["approve(address,uint256)"](simpleStaking1.address, stakingAmount);
1763
+ ["approve(address,uint256)"](simpleStaking1.address, stakingAmount);
1687
1764
  await simpleStaking1["stake(uint256,uint256,bool)"](
1688
1765
  stakingAmount,
1689
1766
  "0",
@@ -1695,14 +1772,14 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
1695
1772
  const stakerStakeBlockNumber = (await ethers.provider.getBlockNumber()) + 1;
1696
1773
  await simpleStaking1
1697
1774
  .connect(staker)
1698
- ["stake(uint256,uint256,bool)"](stakingAmount.div(20), "0", false); // should get ~0.009 gd each block
1775
+ ["stake(uint256,uint256,bool)"](stakingAmount.div(20), "0", false); // should get ~0.009 gd each block
1699
1776
  const stakerGdBalanceAfterStake = await goodDollar.balanceOf(
1700
1777
  staker.address
1701
1778
  );
1702
1779
  await advanceBlocks(100);
1703
1780
  await simpleStaking1
1704
1781
  .connect(staker)
1705
- ["withdrawStake(uint256,bool)"](stakingAmount.div(20), false);
1782
+ ["withdrawStake(uint256,bool)"](stakingAmount.div(20), false);
1706
1783
  const stakerWithdrawBlockNumber = await ethers.provider.getBlockNumber();
1707
1784
  const stakerGdBalanceAfterWithdraw = await goodDollar.balanceOf(
1708
1785
  staker.address
@@ -460,6 +460,7 @@ describe("ProtocolUpgrade - Upgrade old protocol contracts to new ones", () => {
460
460
  "ExchangeHelper",
461
461
  deployment["test-mainnet"].ExchangeHelper
462
462
  );
463
+ await exchangeHelper.setAddresses();
463
464
  await cDAI["mint(address,uint256)"](
464
465
  founder.address,
465
466
  ethers.utils.parseUnits("1000", 8)
package/tsconfig.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "compilerOptions": {
3
- "target": "es2018",
3
+ "target": "ESNext",
4
4
  "module": "commonjs",
5
5
  "strict": false,
6
6
  "moduleResolution": "node",