@gooddollar/goodprotocol 1.0.30-beta.2 → 1.0.30-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 (727) hide show
  1. package/README.md +25 -0
  2. package/artifacts/abis/AaveMock.min.json +1 -1
  3. package/artifacts/abis/AaveStakingFactory.min.json +1 -1
  4. package/artifacts/abis/AdminWallet.min.json +1 -1
  5. package/artifacts/abis/BuyAndBridgeHelper.min.json +1 -0
  6. package/artifacts/abis/ClaimersDistribution.min.json +1 -1
  7. package/artifacts/abis/CompoundStakingFactory.min.json +1 -1
  8. package/artifacts/abis/CompoundVotingMachine.min.json +1 -1
  9. package/artifacts/abis/DAIMock.min.json +1 -1
  10. package/artifacts/abis/DAOUpgradeableContract.min.json +1 -1
  11. package/artifacts/abis/DecimalsMock.min.json +1 -1
  12. package/artifacts/abis/DistributionHelper.min.json +1 -1
  13. package/artifacts/abis/DistributionHelperTest.min.json +1 -1
  14. package/artifacts/abis/DistributionHelperTestHelper.min.json +1 -1
  15. package/artifacts/abis/DonationsStaking.min.json +1 -1
  16. package/artifacts/abis/ERC20Permit.min.json +1 -0
  17. package/artifacts/abis/ERC20PresetMinterPauserUpgradeable.min.json +1 -0
  18. package/artifacts/abis/ERC677.min.json +1 -0
  19. package/artifacts/abis/ERC677Receiver.min.json +1 -0
  20. package/artifacts/abis/ExchangeHelper.min.json +1 -1
  21. package/artifacts/abis/Faucet.min.json +1 -0
  22. package/artifacts/abis/FeesFormulaMock.min.json +1 -0
  23. package/artifacts/abis/FuseFaucet.min.json +1 -1
  24. package/artifacts/abis/FuseStakingV3.min.json +1 -1
  25. package/artifacts/abis/GReputation.min.json +1 -1
  26. package/artifacts/abis/GoodAaveStaking.min.json +1 -1
  27. package/artifacts/abis/GoodAaveStakingV2.min.json +1 -1
  28. package/artifacts/abis/GoodCompoundStaking.min.json +1 -1
  29. package/artifacts/abis/GoodCompoundStakingTest.min.json +1 -1
  30. package/artifacts/abis/GoodCompoundStakingV2.min.json +1 -1
  31. package/artifacts/abis/GoodDollar.min.json +1 -0
  32. package/artifacts/abis/GoodDollarMintBurnWrapper.min.json +1 -1
  33. package/artifacts/abis/GoodDollarStaking.min.json +1 -1
  34. package/artifacts/abis/GoodDollarStakingMock.min.json +1 -1
  35. package/artifacts/abis/GoodFundManager.min.json +1 -1
  36. package/artifacts/abis/GoodFundManagerTest.min.json +1 -1
  37. package/artifacts/abis/GoodMarketMaker.min.json +1 -1
  38. package/artifacts/abis/GoodReserveCDai.min.json +1 -1
  39. package/artifacts/abis/GovernanceStaking.min.json +1 -1
  40. package/artifacts/abis/IFeesFormula.min.json +1 -0
  41. package/artifacts/abis/IGoodDollar.min.json +1 -1
  42. package/artifacts/abis/IGoodDollarCustom.min.json +1 -0
  43. package/artifacts/abis/IGovernanceStaking.min.json +1 -0
  44. package/artifacts/abis/IIdentity.min.json +1 -1
  45. package/artifacts/abis/IIdentityV2.min.json +1 -0
  46. package/artifacts/abis/IStakingUpgrade.min.json +1 -0
  47. package/artifacts/abis/ISuperGoodDollar.min.json +1 -0
  48. package/artifacts/abis/IdentityMock.min.json +1 -0
  49. package/artifacts/abis/IdentityV2.min.json +1 -0
  50. package/artifacts/abis/InvitesV1.min.json +1 -1
  51. package/artifacts/abis/InvitesV2.min.json +1 -0
  52. package/artifacts/abis/LendingPoolMock.min.json +1 -1
  53. package/artifacts/abis/NameService.min.json +1 -1
  54. package/artifacts/abis/PayableMock.min.json +1 -0
  55. package/artifacts/abis/Proxy.min.json +1 -0
  56. package/artifacts/abis/Reputation.min.json +1 -1
  57. package/artifacts/abis/SelfApprove.min.json +1 -0
  58. package/artifacts/abis/SimpleStaking.min.json +1 -1
  59. package/artifacts/abis/SimpleStakingV2.min.json +1 -1
  60. package/artifacts/abis/SixteenDecimalsTokenMock.min.json +1 -1
  61. package/artifacts/abis/StakersDistribution.min.json +1 -1
  62. package/artifacts/abis/SuperGoodDollar.min.json +1 -0
  63. package/artifacts/abis/SuperToken.min.json +1 -0
  64. package/artifacts/abis/SuperfluidToken.min.json +1 -0
  65. package/artifacts/abis/TwentyDecimalsTokenMock.min.json +1 -1
  66. package/artifacts/abis/UBIScheme.min.json +1 -1
  67. package/artifacts/abis/USDCMock.min.json +1 -1
  68. package/artifacts/abis/UUPSProxiable.min.json +1 -0
  69. package/artifacts/abis/UUPSProxy.min.json +1 -0
  70. package/artifacts/abis/UUPSUtils.min.json +1 -0
  71. package/artifacts/abis/UpgradableMock.min.json +1 -1
  72. package/artifacts/abis/UpgradableMock2.min.json +1 -1
  73. package/artifacts/abis/UpgradableMock3.min.json +1 -1
  74. package/artifacts/abis/UpgradableMock4.min.json +1 -1
  75. package/artifacts/abis/cBATMock.min.json +1 -1
  76. package/artifacts/abis/cDAILowWorthMock.min.json +1 -1
  77. package/artifacts/abis/cDAIMock.min.json +1 -1
  78. package/artifacts/abis/cDAINonMintableMock.min.json +1 -1
  79. package/artifacts/abis/cDecimalsMock.min.json +1 -1
  80. package/artifacts/abis/cSDTMock.min.json +1 -1
  81. package/artifacts/abis/cUSDCMock.min.json +1 -1
  82. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  83. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  84. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  85. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  86. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  87. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  88. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  89. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  90. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  91. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  92. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  93. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  94. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  95. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  96. package/artifacts/contracts/Interfaces.sol/IGoodDollar.json +184 -0
  97. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  98. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  99. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  100. package/artifacts/contracts/Interfaces.sol/IIdentity.json +70 -0
  101. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +4 -0
  102. package/artifacts/contracts/Interfaces.sol/IIdentityV2.json +300 -0
  103. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  104. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  105. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  106. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  107. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  108. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  109. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  110. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  111. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  112. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  113. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  114. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +4 -0
  115. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.json +736 -0
  116. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  117. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.json +15 -2
  118. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  119. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +28 -2
  120. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  121. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +28 -2
  122. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  123. package/artifacts/contracts/governance/GReputation.sol/GReputation.json +78 -3
  124. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  125. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +71 -2
  126. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +4 -0
  127. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.json +24 -0
  128. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +4 -0
  129. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.json +35 -0
  130. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  131. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  132. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.json +31 -5
  133. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  134. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  135. package/artifacts/contracts/governance/Reputation.sol/Reputation.json +28 -2
  136. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  137. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +28 -2
  138. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +4 -0
  139. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +1081 -0
  140. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  141. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.json +15 -2
  142. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +4 -0
  143. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.json +640 -0
  144. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  145. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.json +18 -5
  146. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  147. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.json +2 -2
  148. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  149. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.json +2 -2
  150. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  151. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.json +2 -2
  152. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  153. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.json +18 -5
  154. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
  155. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.json +2 -2
  156. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  157. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.json +18 -5
  158. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
  159. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.json +2 -2
  160. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
  161. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.json +35 -2
  162. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
  163. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +35 -2
  164. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  165. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.json +2 -2
  166. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +4 -0
  167. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.json +69 -0
  168. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  169. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.json +2 -2
  170. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  171. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +22 -9
  172. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  173. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.json +95 -2
  174. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  175. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +28 -2
  176. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +4 -0
  177. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.json +277 -0
  178. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  179. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.json +2 -2
  180. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  181. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.json +18 -5
  182. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  183. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  184. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.json +2 -2
  185. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  186. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  187. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +2 -2
  188. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  189. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
  190. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +4 -0
  191. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.json +18 -0
  192. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  193. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.json +18 -5
  194. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  195. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.json +2 -2
  196. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  197. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.json +2 -2
  198. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  199. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.json +18 -5
  200. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  201. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +28 -2
  202. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  203. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +28 -2
  204. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  205. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +28 -2
  206. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  207. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +28 -2
  208. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  209. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.json +18 -5
  210. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  211. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.json +18 -5
  212. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  213. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.json +18 -5
  214. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  215. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.json +18 -5
  216. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  217. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.json +18 -5
  218. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  219. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.json +18 -5
  220. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  221. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.json +18 -5
  222. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  223. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.json +18 -5
  224. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  225. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +35 -2
  226. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  227. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +28 -2
  228. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  229. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +28 -2
  230. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  231. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  232. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +37 -5
  233. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  234. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.json +2 -2
  235. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  236. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.json +2 -2
  237. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  238. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +32 -6
  239. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  240. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +44 -83
  241. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  242. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  243. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  244. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +28 -2
  245. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  246. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.json +16 -3
  247. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  248. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.json +16 -3
  249. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  250. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.json +2 -2
  251. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  252. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +3 -3
  253. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  254. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +20 -7
  255. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  256. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +20 -7
  257. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  258. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +4 -4
  259. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  260. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +22 -9
  261. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  262. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +22 -9
  263. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  264. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.json +2 -2
  265. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  266. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +4 -0
  267. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.json +768 -0
  268. package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +4 -0
  269. package/artifacts/contracts/token/ERC677.sol/ERC677.json +66 -0
  270. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +4 -0
  271. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.json +40 -0
  272. package/artifacts/contracts/token/FeesFormula.sol/IFeesFormula.dbg.json +4 -0
  273. package/artifacts/contracts/token/FeesFormula.sol/IFeesFormula.json +45 -0
  274. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +4 -0
  275. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.json +1206 -0
  276. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +4 -0
  277. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.json +99 -0
  278. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +4 -0
  279. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.json +34 -0
  280. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +4 -0
  281. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.json +355 -0
  282. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +4 -0
  283. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.json +2132 -0
  284. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +4 -0
  285. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +2590 -0
  286. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +4 -0
  287. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.json +1759 -0
  288. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +4 -0
  289. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.json +682 -0
  290. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +4 -0
  291. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.json +89 -0
  292. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +4 -0
  293. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.json +19 -0
  294. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +4 -0
  295. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.json +32 -0
  296. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +4 -0
  297. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.json +10 -0
  298. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  299. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +41 -22
  300. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  301. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.json +94 -48
  302. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  303. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.json +2 -2
  304. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  305. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.json +2 -2
  306. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +4 -0
  307. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.json +184 -0
  308. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  309. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.json +2 -2
  310. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  311. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.json +28 -2
  312. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  313. package/artifacts/contracts/utils/DSMath.sol/DSMath.json +2 -2
  314. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  315. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.json +2 -2
  316. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  317. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +35 -2
  318. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  319. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  320. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  321. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +2 -2
  322. package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
  323. package/artifacts/contracts/utils/MultiCall.sol/Multicall.json +2 -2
  324. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  325. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.json +2 -2
  326. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  327. package/artifacts/contracts/utils/NameService.sol/NameService.json +28 -2
  328. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  329. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  330. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.json +2 -2
  331. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  332. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.json +2 -2
  333. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  334. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.json +2 -2
  335. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  336. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.json +2 -2
  337. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  338. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.json +2 -2
  339. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  340. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.json +2 -2
  341. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  342. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.json +2 -2
  343. package/contracts/Interfaces.sol +57 -3
  344. package/contracts/fuseFaucet/Faucet.sol +258 -0
  345. package/contracts/fuseFaucet/FuseFaucet.sol +1 -2
  346. package/contracts/governance/GReputation.sol +104 -16
  347. package/contracts/governance/GoodDollarStaking.sol +139 -53
  348. package/contracts/governance/GovernanceStaking.sol +2 -2
  349. package/contracts/identity/IdentityV2.sol +559 -0
  350. package/contracts/invite/InvitesV1.sol +6 -24
  351. package/contracts/invite/InvitesV2.sol +338 -0
  352. package/contracts/mocks/AaveMock.sol +1 -1
  353. package/contracts/mocks/DAIMock.sol +1 -1
  354. package/contracts/mocks/DecimalsMock.sol +1 -1
  355. package/contracts/mocks/FeesFormularMock.sol +21 -0
  356. package/contracts/mocks/GoodDollarStakingMock.sol +16 -0
  357. package/contracts/mocks/GoodFundManagerTest.sol +1 -1
  358. package/contracts/mocks/IdentityMock.sol +58 -0
  359. package/contracts/mocks/LendingPoolMock.sol +1 -1
  360. package/contracts/mocks/PayableMock.sol +3 -0
  361. package/contracts/mocks/SixteenDecimalsTokenMock.sol +1 -6
  362. package/contracts/mocks/TwentyDecimalsTokenMock.sol +1 -6
  363. package/contracts/mocks/UpgradableMocks.sol +5 -3
  364. package/contracts/mocks/UsdcMock.sol +1 -6
  365. package/contracts/mocks/cBATMock.sol +7 -12
  366. package/contracts/mocks/cDAILowWorthMock.sol +8 -12
  367. package/contracts/mocks/cDAIMock.sol +1 -1
  368. package/contracts/mocks/cDAINonMintableMock.sol +7 -12
  369. package/contracts/mocks/cDecimalsMock.sol +1 -1
  370. package/contracts/mocks/cSDTMock.sol +3 -3
  371. package/contracts/mocks/cUSDCMock.sol +5 -5
  372. package/contracts/reserve/DistributionHelper.sol +5 -1
  373. package/contracts/reserve/GoodReserveCDai.sol +15 -5
  374. package/contracts/staking/FuseStakingV3.sol +42 -112
  375. package/contracts/staking/GoodFundManager.sol +2 -2
  376. package/contracts/token/ERC20PresetMinterPauserUpgradeable.sol +140 -0
  377. package/contracts/token/ERC677.sol +74 -0
  378. package/contracts/token/FeesFormula.sol +10 -0
  379. package/contracts/token/GoodDollar.sol +234 -0
  380. package/contracts/token/superfluid/ERC20Permit.sol +101 -0
  381. package/contracts/token/superfluid/ISuperGoodDollar.sol +84 -0
  382. package/contracts/token/superfluid/SuperGoodDollar.sol +348 -0
  383. package/contracts/token/superfluid/SuperToken.sol +712 -0
  384. package/contracts/token/superfluid/SuperfluidToken.sol +402 -0
  385. package/contracts/token/superfluid/UUPSProxiable.sol +55 -0
  386. package/contracts/token/superfluid/UUPSProxy.sol +153 -0
  387. package/contracts/ubi/UBIScheme.sol +88 -68
  388. package/contracts/utils/AdminWallet.sol +42 -11
  389. package/contracts/utils/BuyAndBridgeHelper.sol +108 -0
  390. package/contracts/utils/GoodDollarMintBurnWrapper.sol +19 -1
  391. package/hardhat.config.ts +60 -9
  392. package/package.json +19 -10
  393. package/releases/deploy-settings.json +47 -3
  394. package/releases/deployment.json +67 -196
  395. package/scripts/analytics/activeWalletsStats.ts +4 -0
  396. package/scripts/analytics/gdinflow.ts +3 -0
  397. package/scripts/analytics/p2pTxs.ts +582 -0
  398. package/scripts/analytics/tokenInOutStats.ts +3 -1
  399. package/scripts/deployFullDAO.ts +39 -19
  400. package/scripts/deployGnosisSafe.ts +21 -21
  401. package/scripts/gdx/gdxAirdropCalculation.ts +11 -12
  402. package/scripts/governance/airdropCalculationRecover.ts +43 -33
  403. package/scripts/governance/airdropCalculationSorted.ts +438 -0
  404. package/scripts/governance/goodCheckpointSorted.ts +377 -0
  405. package/scripts/multichain-deploy/0_proxyFactory-deploy.ts +100 -0
  406. package/scripts/multichain-deploy/{basicdao-deploy.ts → 1_basicdao-deploy.ts} +123 -93
  407. package/scripts/multichain-deploy/2_helpers-deploy.ts +152 -0
  408. package/scripts/multichain-deploy/{gdSavings-deploy.ts → 3_gdSavings-deploy.ts} +106 -76
  409. package/scripts/multichain-deploy/4_ubi-deploy.ts +147 -0
  410. package/scripts/multichain-deploy/5_gov-deploy.ts +147 -0
  411. package/scripts/multichain-deploy/fulldeploy.sh +26 -0
  412. package/scripts/multichain-deploy/helpers.ts +205 -7
  413. package/scripts/multichain-deploy/verifyEtherscan.ts +197 -0
  414. package/scripts/staking/stakersGdRewardsCalculation.ts +57 -46
  415. package/scripts/test/localOldDaoDeploy.ts +10 -3
  416. package/scripts/upgradeToV3/v3-fix.ts +120 -0
  417. package/scripts/upgradeToV3/v3-upgrade.ts +219 -0
  418. package/scripts/upgrades/celo-deploy.ts +6 -0
  419. package/scripts/upgrades/identity-upgrade.ts +153 -0
  420. package/scripts/{multichain-deploy → upgrades}/nonubiDistribution-deploy.ts +2 -5
  421. package/scripts/upgrades/transferDaoToGuardians.ts +80 -0
  422. package/test/faucet/Faucet.test.ts +184 -0
  423. package/test/{FuseFaucet.test.ts → faucet/FuseFaucet.test.ts} +4 -3
  424. package/test/governance/ClaimersDistribution.test.ts +58 -6
  425. package/test/governance/CompoundVotingMachine.castvote.test.ts +3 -3
  426. package/test/governance/CompoundVotingMachine.crossblockchain.ts +3 -2
  427. package/test/governance/CompoundVotingMachine.daoscheme.ts +8 -10
  428. package/test/governance/CompoundVotingMachine.delegate.test.ts +4 -5
  429. package/test/governance/CompoundVotingMachine.guardian.test.ts +5 -11
  430. package/test/governance/CompoundVotingMachine.propose.test.ts +3 -2
  431. package/test/governance/CompoundVotingMachine.state.test.ts +3 -2
  432. package/test/governance/GReputation.test.ts +78 -32
  433. package/test/governance/GReputation.v2merkle.test.ts +186 -0
  434. package/test/governance/GoodDollarStaking.gd.test.ts +83 -1
  435. package/test/governance/GoodDollarStaking.good.test.ts +2 -1
  436. package/test/governance/GovernanceStaking.test.ts +4 -4
  437. package/test/governance/Reputation.test.ts +2 -1
  438. package/test/governance/StakersDistribution.test.ts +26 -13
  439. package/test/helpers.ts +145 -52
  440. package/test/identity/IdentityV2.test.ts +539 -0
  441. package/test/{InvitesV1.test.ts → invite/InvitesV1.test.ts} +10 -5
  442. package/test/invite/InvitesV2.test.ts +499 -0
  443. package/test/reserve/DistributionHelper.test.ts +2 -1
  444. package/test/reserve/GoodMarketMaker.test.ts +20 -19
  445. package/test/reserve/GoodReserveCDai.cap.test.ts +8 -1
  446. package/test/reserve/GoodReserveCDai.distribution.test.ts +2 -1
  447. package/test/reserve/GoodReserveCDai.gdx.test.ts +2 -2
  448. package/test/reserve/GoodReserveCDai.pause.test.ts +2 -1
  449. package/test/reserve/GoodReserveCDai.test.ts +14 -38
  450. package/test/reserve/GoodReserveCDai.uniswap.test.ts +21 -19
  451. package/test/staking/CompoundStakingFactory.test.ts +8 -5
  452. package/test/staking/DifferentStakingTokens.test.ts +3 -2
  453. package/test/staking/DonationsStaking.test.ts +33 -24
  454. package/test/staking/FuseStaking.test.ts +11 -13
  455. package/test/staking/GoodAaveStakingFactory.test.ts +36 -31
  456. package/test/staking/SimpleDAIStaking.test.ts +13 -19
  457. package/test/staking/StakingRewards.test.ts +32 -32
  458. package/test/staking/StakingRewardsFixedAPY.test.ts +2 -1
  459. package/test/staking/SwapHelper.test.ts +20 -17
  460. package/test/staking/UsdcAaveStaking.test.ts +36 -33
  461. package/test/token/GoodDollar.test.ts +342 -0
  462. package/test/token/SuperGoodDollar.test.ts +422 -0
  463. package/test/ubi/UBIScheme.e2e.test.ts +6 -5
  464. package/test/ubi/UBIScheme.test.ts +37 -36
  465. package/test/ubi/UBISchemeCycle.test.ts +11 -8
  466. package/test/utils/AdminWallet.test.ts +34 -11
  467. package/test/utils/BuyAndBridgeHelper.test.ts +249 -0
  468. package/test/utils/DAOUpgradeableContract.test.ts +3 -2
  469. package/test/utils/GoodDollarMintBurnWrapper.test.ts +3 -2
  470. package/test/utils/NameService.test.ts +37 -21
  471. package/test/utils/ProtocolUpgrade.test.ts +1 -1
  472. package/test/utils/ProxyFactory.test.ts +12 -10
  473. package/truffle-config.js +13 -4
  474. package/types/AaveMock.ts +24 -15
  475. package/types/AccessControlEnumerableUpgradeable.ts +9 -0
  476. package/types/AccessControlUpgradeable.ts +9 -0
  477. package/types/AdminWallet.ts +149 -110
  478. package/types/BuyAndBridgeHelper.ts +279 -0
  479. package/types/CBATMock.ts +24 -15
  480. package/types/CDAILowWorthMock.ts +24 -15
  481. package/types/CDAIMock.ts +24 -15
  482. package/types/CDAINonMintableMock.ts +24 -15
  483. package/types/CDecimalsMock.ts +24 -15
  484. package/types/CSDTMock.ts +24 -15
  485. package/types/CUSDCMock.ts +24 -15
  486. package/types/ClaimersDistribution.ts +28 -0
  487. package/types/CompoundVotingMachine.ts +28 -0
  488. package/types/ContextUpgradeable.ts +77 -0
  489. package/types/DAIMock.ts +24 -15
  490. package/types/DAOUpgradeableContract.ts +28 -0
  491. package/types/DecimalsMock.ts +24 -15
  492. package/types/DistributionHelper.ts +55 -0
  493. package/types/DistributionHelperTest.ts +55 -0
  494. package/types/DistributionHelperTestHelper.ts +55 -0
  495. package/types/DonationsStaking.ts +28 -0
  496. package/types/EIP712Upgradeable.ts +77 -0
  497. package/types/ERC165Upgradeable.ts +13 -2
  498. package/types/ERC1967UpgradeUpgradeable.ts +9 -0
  499. package/types/ERC20BurnableUpgradeable.ts +24 -15
  500. package/types/ERC20PausableUpgradeable.ts +24 -15
  501. package/types/ERC20Permit.ts +186 -0
  502. package/types/ERC20PermitUpgradeable.ts +531 -0
  503. package/types/ERC20PresetMinterPauserUpgradeable.ts +129 -16
  504. package/types/ERC20Upgradeable.ts +24 -15
  505. package/types/ERC20WithTokenInfo.ts +339 -0
  506. package/types/ERC677.ts +131 -0
  507. package/types/ERC677Receiver.ts +115 -0
  508. package/types/EventsEmitter.ts +88 -0
  509. package/types/ExchangeHelper.ts +28 -0
  510. package/types/Faucet.ts +1107 -0
  511. package/types/FeesFormulaMock.ts +130 -0
  512. package/types/FuseFaucet.ts +9 -0
  513. package/types/FuseStakingV3.ts +75 -208
  514. package/types/GReputation.ts +103 -4
  515. package/types/GoodAaveStaking.ts +24 -15
  516. package/types/GoodAaveStakingV2.ts +24 -15
  517. package/types/GoodCompoundStaking.ts +24 -15
  518. package/types/GoodCompoundStakingTest.ts +24 -15
  519. package/types/GoodCompoundStakingV2.ts +24 -15
  520. package/types/GoodDollar.ts +1733 -0
  521. package/types/GoodDollarMintBurnWrapper.ts +55 -0
  522. package/types/GoodDollarStaking.ts +92 -0
  523. package/types/GoodDollarStakingMock.ts +131 -0
  524. package/types/GoodFundManager.ts +28 -0
  525. package/types/GoodFundManagerTest.ts +28 -0
  526. package/types/GoodMarketMaker.ts +28 -0
  527. package/types/GoodReserveCDai.ts +55 -21
  528. package/types/GovernanceStaking.ts +43 -15
  529. package/types/IERC1271Upgradeable.ts +109 -0
  530. package/types/IERC1820Registry.ts +398 -0
  531. package/types/IERC1822ProxiableUpgradeable.ts +90 -0
  532. package/types/IERC20MetadataUpgradeable.ts +15 -15
  533. package/types/IERC20Permit.ts +175 -0
  534. package/types/IERC20PermitUpgradeable.ts +176 -0
  535. package/types/IERC20Upgradeable.ts +15 -15
  536. package/types/IERC777.ts +586 -0
  537. package/types/IERC777Recipient.ts +130 -0
  538. package/types/IERC777Sender.ts +130 -0
  539. package/types/IFeesFormula.ts +111 -0
  540. package/types/IGoodDollar.ts +304 -7
  541. package/types/IGoodDollarCustom.ts +618 -0
  542. package/types/IGovernanceStaking.ts +98 -0
  543. package/types/IIdentity.ts +106 -0
  544. package/types/IIdentityV2.ts +557 -0
  545. package/types/IStakingUpgrade.ts +110 -0
  546. package/types/ISuperAgreement.ts +151 -0
  547. package/types/ISuperApp.ts +410 -0
  548. package/types/ISuperGoodDollar.ts +3029 -0
  549. package/types/ISuperToken.ts +2326 -0
  550. package/types/ISuperTokenFactory.ts +415 -0
  551. package/types/ISuperfluid.ts +1565 -0
  552. package/types/ISuperfluidGovernance.ts +455 -0
  553. package/types/ISuperfluidToken.ts +951 -0
  554. package/types/IdentityMock.ts +493 -0
  555. package/types/IdentityV2.ts +1743 -0
  556. package/types/Initializable.ts +77 -0
  557. package/types/InvitesV1.ts +9 -0
  558. package/types/InvitesV2.ts +1015 -0
  559. package/types/LendingPoolMock.ts +24 -15
  560. package/types/NameService.ts +28 -0
  561. package/types/OwnableUpgradeable.ts +9 -0
  562. package/types/PausableUpgradeable.ts +9 -0
  563. package/types/PayableMock.ts +92 -0
  564. package/types/ReentrancyGuardUpgradeable.ts +78 -0
  565. package/types/Reputation.ts +28 -0
  566. package/types/SelfApprove.ts +115 -0
  567. package/types/SimpleStaking.ts +24 -15
  568. package/types/SimpleStakingV2.ts +24 -15
  569. package/types/SixteenDecimalsTokenMock.ts +24 -15
  570. package/types/StakersDistribution.ts +28 -0
  571. package/types/SuperGoodDollar.ts +3632 -0
  572. package/types/SuperToken.ts +2434 -0
  573. package/types/SuperfluidToken.ts +951 -0
  574. package/types/TokenInfo.ts +109 -0
  575. package/types/TwentyDecimalsTokenMock.ts +24 -15
  576. package/types/UBIScheme.ts +47 -40
  577. package/types/USDCMock.ts +24 -15
  578. package/types/UUPSProxiable.ts +183 -0
  579. package/types/UUPSProxy.ts +105 -0
  580. package/types/UUPSUpgradeable.ts +28 -0
  581. package/types/UpgradableMock.ts +28 -0
  582. package/types/UpgradableMock2.ts +28 -0
  583. package/types/UpgradableMock3.ts +28 -0
  584. package/types/UpgradableMock4.ts +28 -0
  585. package/types/factories/AaveMock__factory.ts +17 -4
  586. package/types/factories/AaveStakingFactory__factory.ts +1 -1
  587. package/types/factories/AaveUSDMockOracle__factory.ts +1 -1
  588. package/types/factories/AccessControlEnumerableUpgradeable__factory.ts +13 -0
  589. package/types/factories/AccessControlUpgradeable__factory.ts +13 -0
  590. package/types/factories/AdminWallet__factory.ts +93 -47
  591. package/types/factories/BancorFormula__factory.ts +1 -1
  592. package/types/factories/BaseShareFieldV2__factory.ts +1 -1
  593. package/types/factories/BaseShareField__factory.ts +1 -1
  594. package/types/factories/BatUSDMockOracle__factory.ts +1 -1
  595. package/types/factories/BuyAndBridgeHelper__factory.ts +237 -0
  596. package/types/factories/CBATMock__factory.ts +17 -4
  597. package/types/factories/CDAILowWorthMock__factory.ts +17 -4
  598. package/types/factories/CDAIMock__factory.ts +17 -4
  599. package/types/factories/CDAINonMintableMock__factory.ts +17 -4
  600. package/types/factories/CDecimalsMock__factory.ts +17 -4
  601. package/types/factories/CSDTMock__factory.ts +17 -4
  602. package/types/factories/CUSDCMock__factory.ts +17 -4
  603. package/types/factories/ClaimersDistribution__factory.ts +27 -1
  604. package/types/factories/CompUSDMockOracle__factory.ts +1 -1
  605. package/types/factories/CompoundStakingFactory__factory.ts +1 -1
  606. package/types/factories/CompoundVotingMachine__factory.ts +27 -1
  607. package/types/factories/ContextUpgradeable__factory.ts +39 -0
  608. package/types/factories/DAIMock__factory.ts +17 -4
  609. package/types/factories/DAOContract__factory.ts +1 -1
  610. package/types/factories/DAOUpgradeableContract__factory.ts +27 -1
  611. package/types/factories/DaiEthPriceMockOracle__factory.ts +1 -1
  612. package/types/factories/DecimalsMock__factory.ts +17 -4
  613. package/types/factories/DistributionBridgeMock__factory.ts +1 -1
  614. package/types/factories/DistributionHelperTestHelper__factory.ts +34 -1
  615. package/types/factories/DistributionHelperTest__factory.ts +34 -1
  616. package/types/factories/DistributionHelper__factory.ts +34 -1
  617. package/types/factories/DonationsStaking__factory.ts +27 -1
  618. package/types/factories/EIP712Upgradeable__factory.ts +39 -0
  619. package/types/factories/ERC165Upgradeable__factory.ts +13 -0
  620. package/types/factories/ERC1967Proxy__factory.ts +1 -1
  621. package/types/factories/ERC1967UpgradeUpgradeable__factory.ts +13 -0
  622. package/types/factories/ERC20BurnableUpgradeable__factory.ts +16 -3
  623. package/types/factories/ERC20PausableUpgradeable__factory.ts +16 -3
  624. package/types/factories/ERC20PermitUpgradeable__factory.ts +388 -0
  625. package/types/factories/ERC20Permit__factory.ts +111 -0
  626. package/types/factories/ERC20PresetMinterPauserUpgradeable__factory.ts +99 -5
  627. package/types/factories/ERC20Upgradeable__factory.ts +17 -4
  628. package/types/factories/ERC20WithTokenInfo__factory.ts +248 -0
  629. package/types/factories/ERC677Receiver__factory.ts +55 -0
  630. package/types/factories/ERC677__factory.ts +75 -0
  631. package/types/factories/EthUSDMockOracle__factory.ts +1 -1
  632. package/types/factories/EventsEmitter__factory.ts +84 -0
  633. package/types/factories/ExchangeHelper__factory.ts +27 -1
  634. package/types/factories/Faucet__factory.ts +781 -0
  635. package/types/factories/FeesFormulaMock__factory.ts +132 -0
  636. package/types/factories/FuseFaucet__factory.ts +14 -1
  637. package/types/factories/FuseStakingV3__factory.ts +43 -82
  638. package/types/factories/GReputation__factory.ts +77 -2
  639. package/types/factories/GasPriceMockOracle__factory.ts +1 -1
  640. package/types/factories/GoodAaveStakingV2__factory.ts +17 -4
  641. package/types/factories/GoodAaveStaking__factory.ts +17 -4
  642. package/types/factories/GoodCompoundStakingTest__factory.ts +17 -4
  643. package/types/factories/GoodCompoundStakingV2__factory.ts +17 -4
  644. package/types/factories/GoodCompoundStaking__factory.ts +17 -4
  645. package/types/factories/GoodDollarMintBurnWrapper__factory.ts +34 -1
  646. package/types/factories/GoodDollarStakingMock__factory.ts +94 -1
  647. package/types/factories/GoodDollarStaking__factory.ts +70 -1
  648. package/types/factories/GoodDollar__factory.ts +1254 -0
  649. package/types/factories/GoodFundManagerTest__factory.ts +27 -1
  650. package/types/factories/GoodFundManager__factory.ts +27 -1
  651. package/types/factories/GoodMarketMaker__factory.ts +27 -1
  652. package/types/factories/GoodReserveCDai__factory.ts +36 -4
  653. package/types/factories/GovernanceStaking__factory.ts +30 -4
  654. package/types/factories/IERC1271Upgradeable__factory.ts +50 -0
  655. package/types/factories/IERC1820Registry__factory.ts +239 -0
  656. package/types/factories/IERC1822ProxiableUpgradeable__factory.ts +43 -0
  657. package/types/factories/IERC20MetadataUpgradeable__factory.ts +3 -3
  658. package/types/factories/IERC20PermitUpgradeable__factory.ts +105 -0
  659. package/types/factories/IERC20Permit__factory.ts +98 -0
  660. package/types/factories/IERC20Upgradeable__factory.ts +3 -3
  661. package/types/factories/IERC777Recipient__factory.ts +64 -0
  662. package/types/factories/IERC777Sender__factory.ts +61 -0
  663. package/types/factories/IERC777__factory.ts +414 -0
  664. package/types/factories/IFeesFormula__factory.ts +57 -0
  665. package/types/factories/IGoodDollarCustom__factory.ts +370 -0
  666. package/types/factories/IGoodDollar__factory.ts +184 -0
  667. package/types/factories/IGovernanceStaking__factory.ts +39 -0
  668. package/types/factories/IIdentityV2__factory.ts +312 -0
  669. package/types/factories/IIdentity__factory.ts +70 -0
  670. package/types/factories/IStakingUpgrade__factory.ts +50 -0
  671. package/types/factories/ISuperAgreement__factory.ts +78 -0
  672. package/types/factories/ISuperApp__factory.ts +272 -0
  673. package/types/factories/ISuperGoodDollar__factory.ts +2147 -0
  674. package/types/factories/ISuperTokenFactory__factory.ts +271 -0
  675. package/types/factories/ISuperToken__factory.ts +1682 -0
  676. package/types/factories/ISuperfluidGovernance__factory.ts +264 -0
  677. package/types/factories/ISuperfluidToken__factory.ts +697 -0
  678. package/types/factories/ISuperfluid__factory.ts +1143 -0
  679. package/types/factories/IdentityMock__factory.ts +327 -0
  680. package/types/factories/IdentityV2__factory.ts +1129 -0
  681. package/types/factories/IncentiveControllerMock__factory.ts +1 -1
  682. package/types/factories/Initializable__factory.ts +36 -0
  683. package/types/factories/InvitesV1__factory.ts +14 -1
  684. package/types/factories/InvitesV2__factory.ts +688 -0
  685. package/types/factories/LendingPoolMock__factory.ts +17 -4
  686. package/types/factories/Multicall__factory.ts +1 -1
  687. package/types/factories/MultichainBridgeHelper__factory.ts +1 -1
  688. package/types/factories/MultichainRouterMock__factory.ts +1 -1
  689. package/types/factories/NameService__factory.ts +27 -1
  690. package/types/factories/OverMintTesterRegularStake__factory.ts +1 -1
  691. package/types/factories/OverMintTester__factory.ts +1 -1
  692. package/types/factories/OwnableUpgradeable__factory.ts +13 -0
  693. package/types/factories/PausableUpgradeable__factory.ts +13 -0
  694. package/types/factories/PayableMock__factory.ts +66 -0
  695. package/types/factories/ProtocolUpgradeFuseRecover__factory.ts +1 -1
  696. package/types/factories/ProtocolUpgradeFuse__factory.ts +1 -1
  697. package/types/factories/ProtocolUpgradeRecover__factory.ts +1 -1
  698. package/types/factories/ProtocolUpgrade__factory.ts +1 -1
  699. package/types/factories/ProxyFactory1967__factory.ts +1 -1
  700. package/types/factories/ReentrancyGuardUpgradeable__factory.ts +43 -0
  701. package/types/factories/ReputationTestHelper__factory.ts +1 -1
  702. package/types/factories/Reputation__factory.ts +27 -1
  703. package/types/factories/SelfApprove__factory.ts +46 -0
  704. package/types/factories/SimpleStakingV2__factory.ts +16 -3
  705. package/types/factories/SimpleStaking__factory.ts +16 -3
  706. package/types/factories/SixteenDecimalsTokenMock__factory.ts +17 -4
  707. package/types/factories/StakersDistribution__factory.ts +27 -1
  708. package/types/factories/StakingMockFixedAPY__factory.ts +1 -1
  709. package/types/factories/SuperGoodDollar__factory.ts +2643 -0
  710. package/types/factories/SuperToken__factory.ts +1809 -0
  711. package/types/factories/SuperfluidToken__factory.ts +697 -0
  712. package/types/factories/SwapHelperTest__factory.ts +1 -1
  713. package/types/factories/TokenInfo__factory.ts +62 -0
  714. package/types/factories/TwentyDecimalsTokenMock__factory.ts +17 -4
  715. package/types/factories/UBIScheme__factory.ts +40 -21
  716. package/types/factories/USDCMock__factory.ts +17 -4
  717. package/types/factories/UUPSProxiable__factory.ts +101 -0
  718. package/types/factories/UUPSProxy__factory.ts +80 -0
  719. package/types/factories/UUPSUpgradeable__factory.ts +26 -0
  720. package/types/factories/UniswapV2SwapHelper__factory.ts +1 -1
  721. package/types/factories/UpgradableMock2__factory.ts +27 -1
  722. package/types/factories/UpgradableMock3__factory.ts +27 -1
  723. package/types/factories/UpgradableMock4__factory.ts +27 -1
  724. package/types/factories/UpgradableMock__factory.ts +27 -1
  725. package/types/hardhat.d.ts +432 -0
  726. package/types/index.ts +92 -0
  727. package/yarn.lock +2348 -864
@@ -1,4 +1,5 @@
1
1
  import { ethers, upgrades } from "hardhat";
2
+ import { loadFixture } from "@nomicfoundation/hardhat-network-helpers";
2
3
  import { BigNumber, Contract } from "ethers";
3
4
  import { expect } from "chai";
4
5
  import { GoodMarketMaker } from "../../types";
@@ -51,19 +52,7 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
51
52
  before(async () => {
52
53
  [founder, staker, ...signers] = await ethers.getSigners();
53
54
  schemeMock = signers.pop();
54
- const cdaiFactory = await ethers.getContractFactory("cDAIMock");
55
- const cBatFactory = await ethers.getContractFactory("cBATMock");
56
- const goodFundManagerFactory = await ethers.getContractFactory(
57
- "GoodFundManager"
58
- );
59
- goodCompoundStakingFactory = await getStakingFactory(
60
- "GoodCompoundStakingV2"
61
- );
62
- goodCompoundStakingTestFactory = await getStakingFactory(
63
- "GoodCompoundStakingTest"
64
- );
65
55
 
66
- const daiFactory = await ethers.getContractFactory("DAIMock");
67
56
  let {
68
57
  controller: ctrl,
69
58
  avatar: av,
@@ -79,7 +68,21 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
79
68
  setReserveToken,
80
69
  genericCall: gc,
81
70
  COMP
82
- } = await createDAO();
71
+ } = await loadFixture(createDAO);
72
+
73
+ const cdaiFactory = await ethers.getContractFactory("cDAIMock");
74
+ const cBatFactory = await ethers.getContractFactory("cBATMock");
75
+ const goodFundManagerFactory = await ethers.getContractFactory(
76
+ "GoodFundManager"
77
+ );
78
+ goodCompoundStakingFactory = await getStakingFactory(
79
+ "GoodCompoundStakingV2"
80
+ );
81
+ goodCompoundStakingTestFactory = await getStakingFactory(
82
+ "GoodCompoundStakingTest"
83
+ );
84
+
85
+ const daiFactory = await ethers.getContractFactory("DAIMock");
83
86
 
84
87
  genericCall = gc;
85
88
  dai = await ethers.getContractAt("DAIMock", daiAddress);
@@ -129,7 +132,7 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
129
132
  const tokenUsdOracleFactory = await ethers.getContractFactory(
130
133
  "BatUSDMockOracle"
131
134
  );
132
- setDAOAddress("UNISWAP_ROUTER", uniswapRouter.address);
135
+ await setDAOAddress("UNISWAP_ROUTER", uniswapRouter.address);
133
136
 
134
137
  daiUsdOracle = await tokenUsdOracleFactory.deploy();
135
138
  const compUsdOracleFactory = await ethers.getContractFactory(
@@ -194,8 +197,8 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
194
197
  JSON.stringify(IUniswapV2Pair.abi),
195
198
  staker
196
199
  ).connect(founder);
197
- setDAOAddress("CDAI", cDAI.address);
198
- setDAOAddress("DAI", dai.address);
200
+ await setDAOAddress("CDAI", cDAI.address);
201
+ await setDAOAddress("DAI", dai.address);
199
202
 
200
203
  batUsdOracle = await tokenUsdOracleFactory.deploy();
201
204
 
@@ -641,12 +644,13 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
641
644
 
642
645
  await advanceBlocks(4);
643
646
 
644
- const userMintedAndPending = await goodCompoundStaking.getUserMintedAndPending(staker.address);
647
+ const userMintedAndPending =
648
+ await goodCompoundStaking.getUserMintedAndPending(staker.address);
645
649
  const userMintedReward = userMintedAndPending[0].toString();
646
650
  const userPendingReward = userMintedAndPending[1].toString();
647
651
  expect(userMintedReward).to.equal("5000");
648
652
  expect(userPendingReward).to.equal("2000");
649
-
653
+
650
654
  await goodCompoundStaking
651
655
  .connect(staker)
652
656
  .withdrawStake(stakingAmount, false);
@@ -1430,7 +1434,7 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
1430
1434
  expect(data.isBlackListed).to.equal(true);
1431
1435
  });
1432
1436
 
1433
- it("it should remove staking contract from active staking contracts when it's reward set to zero", async () => {
1437
+ it("it should not remove staking contract from active staking contracts when it's reward set to zero", async () => {
1434
1438
  const simpleStaking1 = await goodCompoundStakingTestFactory.deploy(
1435
1439
  bat.address,
1436
1440
  cBat.address,
@@ -1449,9 +1453,6 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
1449
1453
  await genericCall(goodFundManager.address, encodedData, avatar, 0);
1450
1454
  const activeContractsCount =
1451
1455
  await goodFundManager.getActiveContractsCount();
1452
- const lastActiveContractBeforeAdd = await goodFundManager.activeContracts(
1453
- activeContractsCount.sub(1)
1454
- );
1455
1456
 
1456
1457
  const simpleStaking = await goodCompoundStakingTestFactory.deploy(
1457
1458
  bat.address,
@@ -1471,9 +1472,9 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
1471
1472
  await genericCall(goodFundManager.address, encodedData, avatar, 0);
1472
1473
  const activeContractsCountAfterAdded =
1473
1474
  await goodFundManager.getActiveContractsCount();
1474
- const lastActiveContractAfterAdd = await goodFundManager.activeContracts(
1475
- activeContractsCountAfterAdded.sub(1)
1476
- );
1475
+
1476
+ expect(activeContractsCountAfterAdded).equal(activeContractsCount.add(1));
1477
+
1477
1478
  encodedData = goodFundManager.interface.encodeFunctionData(
1478
1479
  "setStakingReward",
1479
1480
  ["0", simpleStaking.address, 10, 1000, false] // set 10 gd per block
@@ -1485,16 +1486,15 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
1485
1486
  const lastActiveContractAfterRemove = await goodFundManager.activeContracts(
1486
1487
  activeContractsCountAfterRemoved.sub(1)
1487
1488
  );
1488
- expect(lastActiveContractBeforeAdd).to.be.equal(
1489
- lastActiveContractAfterRemove
1490
- );
1491
- expect(lastActiveContractAfterAdd).to.be.equal(simpleStaking.address);
1492
- expect(activeContractsCountAfterAdded).to.be.gt(activeContractsCount);
1493
- expect(activeContractsCountAfterAdded).to.be.gt(
1489
+
1490
+ expect(lastActiveContractAfterRemove).to.be.equal(simpleStaking.address);
1491
+ expect(activeContractsCountAfterAdded).to.be.eq(
1494
1492
  activeContractsCountAfterRemoved
1495
1493
  );
1496
- expect(activeContractsCount).to.be.equal(activeContractsCountAfterRemoved);
1494
+
1495
+ expect(activeContractsCount).to.be.lt(activeContractsCountAfterRemoved);
1497
1496
  });
1497
+
1498
1498
  it("it should distribute rewards correctly when there is multiple stakers", async () => {
1499
1499
  const simpleStaking1 = await goodCompoundStakingTestFactory.deploy(
1500
1500
  bat.address,
@@ -1,5 +1,6 @@
1
1
  import { expect } from "chai";
2
2
  import { ethers, waffle } from "hardhat";
3
+ import { loadFixture } from "@nomicfoundation/hardhat-network-helpers";
3
4
  import { createDAO, advanceBlocks } from "../helpers";
4
5
  import { StakingMockFixedAPY } from "../../types";
5
6
  import { default as StakingABI } from "../../artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.json";
@@ -61,7 +62,7 @@ describe("StakingRewardsFixedAPY - generic staking for fixed APY rewards contrac
61
62
  gd,
62
63
  nameService: ns,
63
64
  setDAOAddress
64
- } = await createDAO();
65
+ } = await loadFixture(createDAO);
65
66
 
66
67
  setNSAddress = setDAOAddress;
67
68
  nameService = ns;
@@ -1,4 +1,5 @@
1
1
  import { ethers, upgrades } from "hardhat";
2
+ import { loadFixture } from "@nomicfoundation/hardhat-network-helpers";
2
3
  import { BigNumber, Contract } from "ethers";
3
4
  import { expect } from "chai";
4
5
 
@@ -38,6 +39,24 @@ describe("SwapHelper - Helper library for swap on the Uniswap", () => {
38
39
  before(async () => {
39
40
  [founder, staker, ...signers] = await ethers.getSigners();
40
41
  schemeMock = signers.pop();
42
+
43
+ let {
44
+ controller: ctrl,
45
+ avatar: av,
46
+ gd,
47
+ identity,
48
+ nameService: ns,
49
+ setDAOAddress: sda,
50
+ setSchemes,
51
+ marketMaker: mm,
52
+ daiAddress,
53
+ cdaiAddress,
54
+ reserve,
55
+ setReserveToken,
56
+ genericCall: gc,
57
+ COMP
58
+ } = await loadFixture(createDAO);
59
+
41
60
  const cdaiFactory = await ethers.getContractFactory("cDAIMock");
42
61
  const cBatFactory = await ethers.getContractFactory("cDecimalsMock");
43
62
  const goodFundManagerFactory = await ethers.getContractFactory(
@@ -54,22 +73,6 @@ describe("SwapHelper - Helper library for swap on the Uniswap", () => {
54
73
  );
55
74
  swapHelperTest = await swapHelperTestFactory.deploy();
56
75
  const daiFactory = await ethers.getContractFactory("DAIMock");
57
- let {
58
- controller: ctrl,
59
- avatar: av,
60
- gd,
61
- identity,
62
- nameService: ns,
63
- setDAOAddress: sda,
64
- setSchemes,
65
- marketMaker: mm,
66
- daiAddress,
67
- cdaiAddress,
68
- reserve,
69
- setReserveToken,
70
- genericCall: gc,
71
- COMP
72
- } = await createDAO();
73
76
 
74
77
  genericCall = gc;
75
78
  dai = await ethers.getContractAt("DAIMock", daiAddress);
@@ -109,7 +112,7 @@ describe("SwapHelper - Helper library for swap on the Uniswap", () => {
109
112
  const tokenUsdOracleFactory = await ethers.getContractFactory(
110
113
  "BatUSDMockOracle"
111
114
  );
112
- setDAOAddress("UNISWAP_ROUTER", uniswapRouter.address);
115
+ await setDAOAddress("UNISWAP_ROUTER", uniswapRouter.address);
113
116
 
114
117
  const compUsdOracleFactory = await ethers.getContractFactory(
115
118
  "CompUSDMockOracle"
@@ -1,4 +1,5 @@
1
1
  import { default as hre, ethers, upgrades } from "hardhat";
2
+ import { loadFixture } from "@nomicfoundation/hardhat-network-helpers";
2
3
  import { BigNumber, Contract } from "ethers";
3
4
  import { expect } from "chai";
4
5
  import { GoodMarketMaker } from "../../types";
@@ -37,17 +38,6 @@ describe("UsdcAaveStakingV2 - staking with USDC mocks to AAVE interface", () =>
37
38
  [founder, staker, ...signers] = await ethers.getSigners();
38
39
  schemeMock = signers.pop();
39
40
 
40
- const cUsdcFactory = await ethers.getContractFactory("cUSDCMock");
41
- const goodFundManagerFactory = await ethers.getContractFactory(
42
- "GoodFundManager"
43
- );
44
- goodAaveStakingFactory = await getStakingFactory("GoodAaveStakingV2");
45
-
46
- const lendingPoolFactory = await ethers.getContractFactory(
47
- "LendingPoolMock"
48
- );
49
-
50
- const usdcFactory = await ethers.getContractFactory("USDCMock");
51
41
  let {
52
42
  controller: ctrl,
53
43
  avatar: av,
@@ -60,7 +50,20 @@ describe("UsdcAaveStakingV2 - staking with USDC mocks to AAVE interface", () =>
60
50
  genericCall: gc,
61
51
  COMP,
62
52
  runAsAvatarOnly: raao
63
- } = await createDAO();
53
+ } = await loadFixture(createDAO);
54
+
55
+ const cUsdcFactory = await ethers.getContractFactory("cUSDCMock");
56
+ const goodFundManagerFactory = await ethers.getContractFactory(
57
+ "GoodFundManager"
58
+ );
59
+ goodAaveStakingFactory = await getStakingFactory("GoodAaveStakingV2");
60
+
61
+ const lendingPoolFactory = await ethers.getContractFactory(
62
+ "LendingPoolMock"
63
+ );
64
+
65
+ const usdcFactory = await ethers.getContractFactory("USDCMock");
66
+
64
67
  dai = await ethers.getContractAt("DAIMock", daiAddress);
65
68
  avatar = av;
66
69
  controller = ctrl;
@@ -96,7 +99,7 @@ describe("UsdcAaveStakingV2 - staking with USDC mocks to AAVE interface", () =>
96
99
  const uniswap = await deployUniswap(comp, dai);
97
100
  uniswapRouter = uniswap.router;
98
101
  const { factory, weth } = uniswap;
99
- setDAOAddress("UNISWAP_ROUTER", uniswapRouter.address);
102
+ await setDAOAddress("UNISWAP_ROUTER", uniswapRouter.address);
100
103
  await factory.createPair(usdc.address, dai.address); // Create tokenA and dai pair
101
104
  const pairAddress = factory.getPair(usdc.address, dai.address);
102
105
  pair = new Contract(
@@ -139,23 +142,21 @@ describe("UsdcAaveStakingV2 - staking with USDC mocks to AAVE interface", () =>
139
142
  ).deploy();
140
143
  await setDAOAddress("AAVE", aave.address);
141
144
  deployStaking = async () => {
142
- return await goodAaveStakingFactory
143
- .deploy()
144
- .then(async contract => {
145
- await contract.init(
146
- usdc.address,
147
- lendingPool.address,
148
- nameService.address,
149
- "Good USDC",
150
- "gUSDC",
151
- "172800",
152
- daiUsdOracle.address,
153
- incentiveController.address,
154
- aaveUsdOracle.address,
155
- [usdc.address, dai.address]
156
- );
157
- return contract;
158
- });
145
+ return await goodAaveStakingFactory.deploy().then(async contract => {
146
+ await contract.init(
147
+ usdc.address,
148
+ lendingPool.address,
149
+ nameService.address,
150
+ "Good USDC",
151
+ "gUSDC",
152
+ "172800",
153
+ daiUsdOracle.address,
154
+ incentiveController.address,
155
+ aaveUsdOracle.address,
156
+ [usdc.address, dai.address]
157
+ );
158
+ return contract;
159
+ });
159
160
  };
160
161
  goodAaveStaking = await deployStaking();
161
162
  await usdc["mint(address,uint256)"](
@@ -318,15 +319,17 @@ describe("UsdcAaveStakingV2 - staking with USDC mocks to AAVE interface", () =>
318
319
  it("should set gas cost to interest collection parameters", async () => {
319
320
  const stakingContract = await deployStaking();
320
321
  const collectGasCostBefore = await stakingContract.collectInterestGasCost();
321
- const claimStakeGasCostBefore = await stakingContract.collectInterestGasCost();
322
+ const claimStakeGasCostBefore =
323
+ await stakingContract.collectInterestGasCost();
322
324
  await runAsAvatarOnly(
323
325
  stakingContract,
324
326
  "setcollectInterestGasCostParams(uint32,uint32)",
325
327
  999,
326
328
  999
327
- )
329
+ );
328
330
  const collectGasCostAfter = await stakingContract.collectInterestGasCost();
329
- const claimStakeGasCostAfter = await stakingContract.collectInterestGasCost();
331
+ const claimStakeGasCostAfter =
332
+ await stakingContract.collectInterestGasCost();
330
333
  expect(collectGasCostAfter).to.not.equal(collectGasCostBefore);
331
334
  expect(collectGasCostAfter).to.equal(999);
332
335
  expect(claimStakeGasCostAfter).to.not.equal(claimStakeGasCostBefore);
@@ -0,0 +1,342 @@
1
+ import hre, { ethers, upgrades } from "hardhat";
2
+ import { loadFixture } from "@nomicfoundation/hardhat-network-helpers";
3
+ import { expect } from "chai";
4
+ import FeeFormulaABI from "@gooddollar/goodcontracts/build/contracts/SenderFeeFormula.json";
5
+ import TransferAndCallMockABI from "@gooddollar/goodcontracts/build/contracts/TransferAndCallMock.json";
6
+ import { IIdentity, GoodDollar, ISuperGoodDollar } from "../../types";
7
+ import { createDAO, deploySuperGoodDollar } from "../helpers";
8
+ import { Contract } from "ethers";
9
+
10
+ const BN = ethers.BigNumber;
11
+
12
+ describe("GoodDollar Token", () => {
13
+ let receiver: Contract,
14
+ identity,
15
+ feeFormula,
16
+ newFormula,
17
+ token: ISuperGoodDollar,
18
+ unCappedToken: ISuperGoodDollar,
19
+ cappedToken: ISuperGoodDollar,
20
+ newtoken: ISuperGoodDollar,
21
+ founder,
22
+ outsider,
23
+ whitelisted;
24
+ let signers;
25
+
26
+ let avatar, gd: ISuperGoodDollar, Controller, id: IIdentity, superFluid;
27
+
28
+ const regularTokenState = async () => {
29
+ const deployedDAO = createDAO("regular");
30
+ const token = (await ethers.getContractAt(
31
+ "GoodDollar",
32
+ (
33
+ await deployedDAO
34
+ ).gd
35
+ )) as GoodDollar;
36
+
37
+ await token.mint(founder.address, 100000000);
38
+
39
+ return token;
40
+ };
41
+
42
+ before(async () => {
43
+ [founder, whitelisted, outsider, ...signers] = await ethers.getSigners();
44
+
45
+ let {
46
+ daoCreator,
47
+ controller,
48
+ avatar: av,
49
+ gd: gooddollar,
50
+ identity: idv2,
51
+ sfContracts
52
+ } = await loadFixture(createDAO);
53
+
54
+ superFluid = sfContracts;
55
+ avatar = av;
56
+ identity = await ethers.getContractAt("IdentityV2", idv2);
57
+
58
+ const FeeFormulaFactory = new ethers.ContractFactory(
59
+ FeeFormulaABI.abi,
60
+ FeeFormulaABI.bytecode,
61
+ founder
62
+ );
63
+
64
+ receiver = await new ethers.ContractFactory(
65
+ TransferAndCallMockABI.abi,
66
+ TransferAndCallMockABI.bytecode,
67
+ founder
68
+ ).deploy();
69
+
70
+ token = (await ethers.getContractAt(
71
+ "ISuperGoodDollar",
72
+ gooddollar
73
+ )) as ISuperGoodDollar;
74
+ feeFormula = FeeFormulaFactory.attach(await token.formula());
75
+
76
+ // isProduction ? "GoodDollar" : "GoodDollar Dev",
77
+ // "G$",
78
+ // 0,
79
+ // FeeFormula.address,
80
+ // Identity.address,
81
+ // ethers.constants.AddressZero,
82
+ // daoCreator.address
83
+ // unCappedToken = (await upgrades.deployProxy(
84
+ // await ethers.getContractFactory("GoodDollar"),
85
+ // [
86
+ // "Test",
87
+ // "TDD",
88
+ // 0,
89
+ // feeFormula.address,
90
+ // identity.address,
91
+ // receiver.address,
92
+ // founder.address
93
+ // ],
94
+ // {
95
+ // initializer:
96
+ // "initialize(string,string,uint256,address,address,address,address)"
97
+ // }
98
+ // )) as GoodDollar;
99
+
100
+ unCappedToken = (await deploySuperGoodDollar(superFluid, [
101
+ "Test",
102
+ "TDD",
103
+ 0,
104
+ feeFormula.address,
105
+ identity.address,
106
+ receiver.address,
107
+ founder.address
108
+ ])) as ISuperGoodDollar;
109
+
110
+ cappedToken = (await deploySuperGoodDollar(superFluid, [
111
+ "Test",
112
+ "TDD",
113
+ 1000,
114
+ feeFormula.address,
115
+ identity.address,
116
+ receiver.address,
117
+ founder.address
118
+ ])) as ISuperGoodDollar;
119
+
120
+ newFormula = await FeeFormulaFactory.deploy(1);
121
+
122
+ newtoken = (await deploySuperGoodDollar(superFluid, [
123
+ "gd",
124
+ "gd",
125
+ 1000000,
126
+ newFormula.address,
127
+ identity.address,
128
+ av,
129
+ founder.address
130
+ ])) as ISuperGoodDollar;
131
+
132
+ // cappedToken = (await upgrades.deployProxy(
133
+ // await ethers.getContractFactory("GoodDollar"),
134
+ // [
135
+ // "Test",
136
+ // "TDD",
137
+ // 1000,
138
+ // feeFormula.address,
139
+ // identity.address,
140
+ // receiver.address,
141
+ // founder.address
142
+ // ],
143
+ // {
144
+ // initializer:
145
+ // "initialize(string,string,uint256,address,address,address,address)"
146
+ // }
147
+ // )) as GoodDollar;
148
+
149
+ // newtoken = (await upgrades.deployProxy(
150
+ // await ethers.getContractFactory("GoodDollar"),
151
+ // [
152
+ // "gd",
153
+ // "gd",
154
+ // 1000000,
155
+ // newFormula.address,
156
+ // identity.address,
157
+ // av,
158
+ // founder.address
159
+ // ],
160
+ // {
161
+ // initializer:
162
+ // "initialize(string,string,uint256,address,address,address,address)"
163
+ // }
164
+ // )) as GoodDollar;
165
+
166
+ await token.mint(founder.address, 100000000);
167
+
168
+ await newtoken.mint(whitelisted.address, 30000);
169
+ await token.transfer(whitelisted.address, 30000);
170
+ await token.transfer(founder.address, 10000);
171
+ await token.transfer(outsider.address, 1000);
172
+ await identity.addWhitelisted(whitelisted.address);
173
+ await identity.addWhitelisted(outsider.address);
174
+ });
175
+
176
+ it("should have low gas cost for transfer with regular token", async () => {
177
+ const token = await loadFixture(regularTokenState);
178
+ const firstTime = await (
179
+ await token.transfer(signers[2].address, 1000)
180
+ ).wait();
181
+ const secondTime = await (
182
+ await token.transfer(signers[2].address, 1000)
183
+ ).wait();
184
+ expect(firstTime.gasUsed).lt(70000);
185
+ expect(secondTime.gasUsed).lt(55000);
186
+ });
187
+
188
+ it("should have high gas cost for transfer with superfluid token", async () => {
189
+ const firstTime = await (
190
+ await token.transfer(signers[2].address, 1000)
191
+ ).wait();
192
+ const secondTime = await (
193
+ await token.transfer(signers[2].address, 1000)
194
+ ).wait();
195
+ expect(firstTime.gasUsed).gt(160000);
196
+ expect(secondTime.gasUsed).gt(149000);
197
+ });
198
+
199
+ it("should have avatar as default pauser", async () => {
200
+ expect(await token.isPauser(avatar)).true;
201
+ });
202
+
203
+ it("should let owner set identity and formula", async () => {
204
+ await expect(newtoken.setFormula(ethers.constants.AddressZero)).not
205
+ .reverted;
206
+ await expect(newtoken.setIdentity(ethers.constants.AddressZero)).not
207
+ .reverted;
208
+ expect(await newtoken.identity()).eq(ethers.constants.AddressZero);
209
+ expect(await newtoken.formula()).eq(ethers.constants.AddressZero);
210
+ await newtoken.setIdentity(identity.address);
211
+ await newtoken.setFormula(newFormula.address);
212
+ });
213
+
214
+ it("should not let non owner set identity and formula", async () => {
215
+ await expect(
216
+ newtoken.connect(signers[0]).setFormula(ethers.constants.AddressZero)
217
+ ).revertedWith("not owner");
218
+ await expect(
219
+ newtoken.connect(signers[0]).setIdentity(ethers.constants.AddressZero)
220
+ ).revertedWith("not owner");
221
+ });
222
+
223
+ it("should fail transfer", async () => {
224
+ let data = "0x0";
225
+
226
+ await expect(
227
+ token
228
+ .connect(outsider)
229
+ .transferAndCall(
230
+ receiver.address,
231
+ (await token.balanceOf(outsider.address)).add(100000),
232
+ data
233
+ )
234
+ ).reverted;
235
+ });
236
+
237
+ it("should not transfer and not call function", async () => {
238
+ let data = "0x";
239
+
240
+ await expect(
241
+ token.transferAndCall(receiver.address, 1000, data)
242
+ ).revertedWith("Contract Fallback failed");
243
+ expect(await receiver.wasCalled()).false;
244
+ });
245
+
246
+ it("should transfer, not call and return true if not contract", async () => {
247
+ let data = "0x";
248
+
249
+ await expect(token.transferAndCall(founder.address, 300, data)).not
250
+ .reverted;
251
+ });
252
+
253
+ it("should transfer and call correct function on receiver contract", async () => {
254
+ let data = receiver.interface.encodeFunctionData("mockTransfer", []);
255
+
256
+ expect(await token.transferAndCall(receiver.address, 1000, data));
257
+ expect(await receiver.wasCalled()).true;
258
+ });
259
+
260
+ it("should increase allowance", async () => {
261
+ expect(await token.increaseAllowance(whitelisted.address, 2000));
262
+ });
263
+
264
+ it("should allow to transfer from", async () => {
265
+ await expect(
266
+ token
267
+ .connect(whitelisted)
268
+ .transferFrom(founder.address, whitelisted.address, 1000)
269
+ ).not.reverted;
270
+ });
271
+
272
+ it("should decrease allowance", async () => {
273
+ await expect(token.decreaseAllowance(whitelisted.address, 1000)).not
274
+ .reverted;
275
+ });
276
+
277
+ it("should allow to burn", async () => {
278
+ expect(token.connect(whitelisted)["burn(uint256)"](1000)).not.reverted;
279
+ });
280
+
281
+ it("should allow to burn from", async () => {
282
+ await expect(token.approve(whitelisted.address, 2000)).not.reverted;
283
+ await expect(token.connect(whitelisted).burnFrom(founder.address, 2000)).not
284
+ .reverted;
285
+ });
286
+
287
+ it("should not allow to mint beyond cap", async () => {
288
+ await expect(unCappedToken.mint(founder.address, 1000)).not.reverted;
289
+
290
+ await expect(cappedToken.mint(founder.address, 1200)).revertedWith(
291
+ "Cannot increase supply beyond cap"
292
+ );
293
+ });
294
+
295
+ it("should collect transaction fee", async () => {
296
+ const oldReserve = await token.balanceOf(avatar);
297
+
298
+ await token.connect(whitelisted).transfer(founder.address, 20000);
299
+
300
+ // Check that reserve has received fees
301
+ const reserve = (await token.balanceOf(avatar)) as any;
302
+
303
+ const reserveDiff = reserve.sub(oldReserve);
304
+ const totalFees = await token["getFees(uint256)"](20000).then(_ => _["0"]);
305
+ expect(reserveDiff.toString()).to.be.equal(totalFees.toString());
306
+ });
307
+
308
+ it("should get same results from overloaded getFees method", async () => {
309
+ const totalFees = await newtoken["getFees(uint256)"](3000) //fix overload issue
310
+ .then(_ => _["0"]);
311
+ const totalFees2 = await newtoken["getFees(uint256,address,address)"](
312
+ 3000,
313
+ whitelisted.address,
314
+ whitelisted.address
315
+ ).then(_ => _["0"]);
316
+ expect(totalFees2.toNumber()).to.be.gt(0);
317
+ expect(totalFees2.toString()).to.be.equal(totalFees.toString());
318
+ });
319
+
320
+ it("should collect transaction fee from sender", async () => {
321
+ const oldReserve = await newtoken.balanceOf(avatar);
322
+ const oldFounder = await newtoken.balanceOf(founder.address);
323
+ const newWhitelistedBefore = await newtoken.balanceOf(whitelisted.address);
324
+
325
+ await newtoken.connect(whitelisted).transfer(founder.address, 20000);
326
+
327
+ // Check that reserve has received fees
328
+ const reserve = (await newtoken.balanceOf(avatar)) as any;
329
+ const newFounder = (await newtoken.balanceOf(founder.address)) as any;
330
+ const newWhitelisted = await newtoken.balanceOf(whitelisted.address);
331
+
332
+ const reserveDiff = reserve.sub(oldReserve);
333
+ const founderDiff = newFounder.sub(oldFounder);
334
+
335
+ const totalFees = await newtoken["getFees(uint256)"](20000).then(
336
+ _ => _["0"]
337
+ );
338
+ expect(reserveDiff.toString()).to.be.equal(totalFees.toString());
339
+ expect(founderDiff.toString()).to.be.equal("20000");
340
+ expect(newWhitelistedBefore.sub(newWhitelisted)).to.be.equal("20200"); //20000 + 1%
341
+ });
342
+ });