@gooddollar/goodprotocol 1.0.31-beta.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (738) 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/AdminWalletFuse.min.json +1 -0
  6. package/artifacts/abis/BuyAndBridgeHelper.min.json +1 -0
  7. package/artifacts/abis/ClaimersDistribution.min.json +1 -1
  8. package/artifacts/abis/CompoundStakingFactory.min.json +1 -1
  9. package/artifacts/abis/CompoundVotingMachine.min.json +1 -1
  10. package/artifacts/abis/DAIMock.min.json +1 -1
  11. package/artifacts/abis/DAOUpgradeableContract.min.json +1 -1
  12. package/artifacts/abis/DecimalsMock.min.json +1 -1
  13. package/artifacts/abis/DistributionHelper.min.json +1 -1
  14. package/artifacts/abis/DistributionHelperTest.min.json +1 -1
  15. package/artifacts/abis/DistributionHelperTestHelper.min.json +1 -1
  16. package/artifacts/abis/DonationsStaking.min.json +1 -1
  17. package/artifacts/abis/ERC20Permit.min.json +1 -0
  18. package/artifacts/abis/ERC20PresetMinterPauserUpgradeable.min.json +1 -0
  19. package/artifacts/abis/ERC677.min.json +1 -0
  20. package/artifacts/abis/ERC677Receiver.min.json +1 -0
  21. package/artifacts/abis/ExchangeHelper.min.json +1 -1
  22. package/artifacts/abis/Faucet.min.json +1 -0
  23. package/artifacts/abis/FeesFormulaMock.min.json +1 -0
  24. package/artifacts/abis/FuseFaucet.min.json +1 -1
  25. package/artifacts/abis/FuseFaucetV2.min.json +1 -0
  26. package/artifacts/abis/FuseStakingV3.min.json +1 -1
  27. package/artifacts/abis/GReputation.min.json +1 -1
  28. package/artifacts/abis/GoodAaveStaking.min.json +1 -1
  29. package/artifacts/abis/GoodAaveStakingV2.min.json +1 -1
  30. package/artifacts/abis/GoodCompoundStaking.min.json +1 -1
  31. package/artifacts/abis/GoodCompoundStakingTest.min.json +1 -1
  32. package/artifacts/abis/GoodCompoundStakingV2.min.json +1 -1
  33. package/artifacts/abis/GoodDollar.min.json +1 -0
  34. package/artifacts/abis/GoodDollarMintBurnWrapper.min.json +1 -1
  35. package/artifacts/abis/GoodDollarStaking.min.json +1 -1
  36. package/artifacts/abis/GoodDollarStakingMock.min.json +1 -1
  37. package/artifacts/abis/GoodFundManager.min.json +1 -1
  38. package/artifacts/abis/GoodFundManagerTest.min.json +1 -1
  39. package/artifacts/abis/GoodMarketMaker.min.json +1 -1
  40. package/artifacts/abis/GoodReserveCDai.min.json +1 -1
  41. package/artifacts/abis/GovernanceStaking.min.json +1 -1
  42. package/artifacts/abis/IFeesFormula.min.json +1 -0
  43. package/artifacts/abis/IGoodDollar.min.json +1 -1
  44. package/artifacts/abis/IGoodDollarCustom.min.json +1 -0
  45. package/artifacts/abis/IGovernanceStaking.min.json +1 -0
  46. package/artifacts/abis/IIdentity.min.json +1 -1
  47. package/artifacts/abis/IIdentityV2.min.json +1 -0
  48. package/artifacts/abis/IStakingUpgrade.min.json +1 -0
  49. package/artifacts/abis/ISuperGoodDollar.min.json +1 -0
  50. package/artifacts/abis/IdentityMock.min.json +1 -0
  51. package/artifacts/abis/IdentityV2.min.json +1 -0
  52. package/artifacts/abis/InvitesFuseV2.min.json +1 -0
  53. package/artifacts/abis/InvitesV1.min.json +1 -1
  54. package/artifacts/abis/InvitesV2.min.json +1 -0
  55. package/artifacts/abis/LendingPoolMock.min.json +1 -1
  56. package/artifacts/abis/NameService.min.json +1 -1
  57. package/artifacts/abis/PayableMock.min.json +1 -0
  58. package/artifacts/abis/Proxy.min.json +1 -0
  59. package/artifacts/abis/Reputation.min.json +1 -1
  60. package/artifacts/abis/SelfApprove.min.json +1 -0
  61. package/artifacts/abis/SimpleStaking.min.json +1 -1
  62. package/artifacts/abis/SimpleStakingV2.min.json +1 -1
  63. package/artifacts/abis/SixteenDecimalsTokenMock.min.json +1 -1
  64. package/artifacts/abis/StakersDistribution.min.json +1 -1
  65. package/artifacts/abis/SuperGoodDollar.min.json +1 -0
  66. package/artifacts/abis/SuperToken.min.json +1 -0
  67. package/artifacts/abis/SuperfluidToken.min.json +1 -0
  68. package/artifacts/abis/TwentyDecimalsTokenMock.min.json +1 -1
  69. package/artifacts/abis/UBIScheme.min.json +1 -1
  70. package/artifacts/abis/USDCMock.min.json +1 -1
  71. package/artifacts/abis/UUPSProxiable.min.json +1 -0
  72. package/artifacts/abis/UUPSProxy.min.json +1 -0
  73. package/artifacts/abis/UUPSUtils.min.json +1 -0
  74. package/artifacts/abis/UpgradableMock.min.json +1 -1
  75. package/artifacts/abis/UpgradableMock2.min.json +1 -1
  76. package/artifacts/abis/UpgradableMock3.min.json +1 -1
  77. package/artifacts/abis/UpgradableMock4.min.json +1 -1
  78. package/artifacts/abis/cBATMock.min.json +1 -1
  79. package/artifacts/abis/cDAILowWorthMock.min.json +1 -1
  80. package/artifacts/abis/cDAIMock.min.json +1 -1
  81. package/artifacts/abis/cDAINonMintableMock.min.json +1 -1
  82. package/artifacts/abis/cDecimalsMock.min.json +1 -1
  83. package/artifacts/abis/cSDTMock.min.json +1 -1
  84. package/artifacts/abis/cUSDCMock.min.json +1 -1
  85. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  86. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  87. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  88. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  89. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  90. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  91. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  92. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  93. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  94. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  95. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  96. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  97. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  98. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  99. package/artifacts/contracts/Interfaces.sol/IGoodDollar.json +184 -0
  100. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  101. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  102. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  103. package/artifacts/contracts/Interfaces.sol/IIdentity.json +70 -0
  104. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +4 -0
  105. package/artifacts/contracts/Interfaces.sol/IIdentityV2.json +300 -0
  106. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  107. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  108. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  109. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  110. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  111. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  112. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  113. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  114. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  115. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  116. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  117. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +4 -0
  118. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.json +736 -0
  119. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  120. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.json +15 -2
  121. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +4 -0
  122. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.json +480 -0
  123. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  124. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +28 -2
  125. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  126. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +28 -2
  127. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  128. package/artifacts/contracts/governance/GReputation.sol/GReputation.json +78 -3
  129. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  130. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +71 -2
  131. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +4 -0
  132. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.json +24 -0
  133. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +4 -0
  134. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.json +35 -0
  135. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  136. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  137. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.json +31 -5
  138. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  139. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  140. package/artifacts/contracts/governance/Reputation.sol/Reputation.json +28 -2
  141. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  142. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +28 -2
  143. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +4 -0
  144. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +1081 -0
  145. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +4 -0
  146. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.json +505 -0
  147. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  148. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.json +15 -2
  149. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +4 -0
  150. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.json +635 -0
  151. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  152. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.json +18 -5
  153. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  154. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.json +2 -2
  155. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  156. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.json +2 -2
  157. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  158. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.json +2 -2
  159. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  160. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.json +18 -5
  161. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
  162. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.json +2 -2
  163. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  164. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.json +18 -5
  165. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
  166. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.json +2 -2
  167. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
  168. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.json +28 -2
  169. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
  170. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +28 -2
  171. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  172. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.json +2 -2
  173. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +4 -0
  174. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.json +69 -0
  175. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  176. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.json +2 -2
  177. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  178. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +22 -9
  179. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  180. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.json +95 -2
  181. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  182. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +28 -2
  183. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +4 -0
  184. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.json +277 -0
  185. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  186. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.json +2 -2
  187. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  188. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.json +18 -5
  189. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  190. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  191. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.json +2 -2
  192. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  193. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  194. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +2 -2
  195. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  196. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
  197. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +4 -0
  198. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.json +18 -0
  199. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  200. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.json +18 -5
  201. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  202. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.json +2 -2
  203. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  204. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.json +2 -2
  205. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  206. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.json +18 -5
  207. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  208. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +28 -2
  209. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  210. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +28 -2
  211. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  212. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +28 -2
  213. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  214. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +28 -2
  215. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  216. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.json +18 -5
  217. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  218. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.json +18 -5
  219. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  220. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.json +18 -5
  221. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  222. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.json +18 -5
  223. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  224. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.json +18 -5
  225. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  226. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.json +18 -5
  227. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  228. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.json +18 -5
  229. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  230. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.json +18 -5
  231. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  232. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +28 -2
  233. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  234. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +28 -2
  235. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  236. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +28 -2
  237. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  238. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  239. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +31 -5
  240. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  241. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.json +2 -2
  242. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  243. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.json +2 -2
  244. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  245. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +32 -6
  246. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  247. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +15 -2
  248. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  249. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  250. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  251. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +28 -2
  252. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  253. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.json +16 -3
  254. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  255. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.json +16 -3
  256. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  257. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.json +2 -2
  258. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  259. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +3 -3
  260. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  261. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +20 -7
  262. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  263. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +20 -7
  264. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  265. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +4 -4
  266. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  267. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +22 -9
  268. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  269. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +22 -9
  270. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  271. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.json +2 -2
  272. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  273. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +4 -0
  274. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.json +768 -0
  275. package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +4 -0
  276. package/artifacts/contracts/token/ERC677.sol/ERC677.json +66 -0
  277. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +4 -0
  278. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.json +40 -0
  279. package/artifacts/contracts/token/FeesFormula.sol/IFeesFormula.dbg.json +4 -0
  280. package/artifacts/contracts/token/FeesFormula.sol/IFeesFormula.json +45 -0
  281. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +4 -0
  282. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.json +1206 -0
  283. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +4 -0
  284. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.json +99 -0
  285. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +4 -0
  286. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.json +34 -0
  287. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +4 -0
  288. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.json +355 -0
  289. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +4 -0
  290. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.json +2132 -0
  291. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +4 -0
  292. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +2627 -0
  293. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +4 -0
  294. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.json +1759 -0
  295. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +4 -0
  296. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.json +682 -0
  297. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +4 -0
  298. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.json +89 -0
  299. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +4 -0
  300. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.json +19 -0
  301. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +4 -0
  302. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.json +32 -0
  303. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +4 -0
  304. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.json +10 -0
  305. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  306. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +41 -22
  307. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  308. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.json +94 -48
  309. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +4 -0
  310. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.json +830 -0
  311. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  312. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.json +2 -2
  313. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  314. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.json +2 -2
  315. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +4 -0
  316. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.json +184 -0
  317. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  318. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.json +2 -2
  319. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  320. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.json +28 -2
  321. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  322. package/artifacts/contracts/utils/DSMath.sol/DSMath.json +2 -2
  323. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  324. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.json +2 -2
  325. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  326. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +35 -2
  327. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  328. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  329. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  330. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +2 -2
  331. package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
  332. package/artifacts/contracts/utils/MultiCall.sol/Multicall.json +2 -2
  333. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  334. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.json +2 -2
  335. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  336. package/artifacts/contracts/utils/NameService.sol/NameService.json +28 -2
  337. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  338. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  339. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.json +2 -2
  340. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  341. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.json +2 -2
  342. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  343. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.json +2 -2
  344. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  345. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.json +2 -2
  346. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  347. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.json +2 -2
  348. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  349. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.json +2 -2
  350. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  351. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.json +2 -2
  352. package/contracts/Interfaces.sol +57 -3
  353. package/contracts/fuseFaucet/Faucet.sol +258 -0
  354. package/contracts/fuseFaucet/FuseFaucet.sol +1 -2
  355. package/contracts/fuseFaucet/FuseFaucetV2.sol +256 -0
  356. package/contracts/governance/GReputation.sol +104 -16
  357. package/contracts/governance/GoodDollarStaking.sol +139 -53
  358. package/contracts/governance/GovernanceStaking.sol +2 -2
  359. package/contracts/identity/IdentityV2.sol +559 -0
  360. package/contracts/invite/InvitesFuseV2.sol +337 -0
  361. package/contracts/invite/InvitesV1.sol +6 -24
  362. package/contracts/invite/InvitesV2.sol +345 -0
  363. package/contracts/mocks/AaveMock.sol +1 -1
  364. package/contracts/mocks/DAIMock.sol +1 -1
  365. package/contracts/mocks/DecimalsMock.sol +1 -1
  366. package/contracts/mocks/FeesFormularMock.sol +21 -0
  367. package/contracts/mocks/GoodDollarStakingMock.sol +16 -0
  368. package/contracts/mocks/GoodFundManagerTest.sol +1 -1
  369. package/contracts/mocks/IdentityMock.sol +58 -0
  370. package/contracts/mocks/LendingPoolMock.sol +1 -1
  371. package/contracts/mocks/PayableMock.sol +3 -0
  372. package/contracts/mocks/SixteenDecimalsTokenMock.sol +1 -6
  373. package/contracts/mocks/TwentyDecimalsTokenMock.sol +1 -6
  374. package/contracts/mocks/UpgradableMocks.sol +5 -3
  375. package/contracts/mocks/UsdcMock.sol +1 -6
  376. package/contracts/mocks/cBATMock.sol +7 -12
  377. package/contracts/mocks/cDAILowWorthMock.sol +8 -12
  378. package/contracts/mocks/cDAIMock.sol +1 -1
  379. package/contracts/mocks/cDAINonMintableMock.sol +7 -12
  380. package/contracts/mocks/cDecimalsMock.sol +1 -1
  381. package/contracts/mocks/cSDTMock.sol +3 -3
  382. package/contracts/mocks/cUSDCMock.sol +5 -5
  383. package/contracts/reserve/DistributionHelper.sol +1 -1
  384. package/contracts/reserve/GoodReserveCDai.sol +1 -1
  385. package/contracts/token/ERC20PresetMinterPauserUpgradeable.sol +140 -0
  386. package/contracts/token/ERC677.sol +74 -0
  387. package/contracts/token/FeesFormula.sol +10 -0
  388. package/contracts/token/GoodDollar.sol +243 -0
  389. package/contracts/token/superfluid/ERC20Permit.sol +101 -0
  390. package/contracts/token/superfluid/ISuperGoodDollar.sol +84 -0
  391. package/contracts/token/superfluid/SuperGoodDollar.sol +401 -0
  392. package/contracts/token/superfluid/SuperToken.sol +714 -0
  393. package/contracts/token/superfluid/SuperfluidToken.sol +403 -0
  394. package/contracts/token/superfluid/UUPSProxiable.sol +55 -0
  395. package/contracts/token/superfluid/UUPSProxy.sol +153 -0
  396. package/contracts/ubi/UBIScheme.sol +88 -68
  397. package/contracts/utils/AdminWallet.sol +42 -11
  398. package/contracts/utils/AdminWalletFuse.sol +271 -0
  399. package/contracts/utils/BuyAndBridgeHelper.sol +108 -0
  400. package/contracts/utils/GoodDollarMintBurnWrapper.sol +19 -1
  401. package/contracts/utils/ProxyFactory1967.sol +1 -1
  402. package/hardhat.config.ts +29 -6
  403. package/package.json +11 -7
  404. package/releases/deploy-settings.json +58 -4
  405. package/releases/deployment.json +65 -231
  406. package/scripts/deployFullDAO.ts +39 -19
  407. package/scripts/gdx/gdxAirdropCalculation.ts +10 -11
  408. package/scripts/governance/airdropCalculationRecover.ts +43 -33
  409. package/scripts/governance/airdropCalculationSorted.ts +438 -0
  410. package/scripts/governance/goodCheckpointSorted.ts +377 -0
  411. package/scripts/multichain-deploy/0_proxyFactory-deploy.ts +100 -0
  412. package/scripts/multichain-deploy/{basicdao-deploy.ts → 1_basicdao-deploy.ts} +123 -93
  413. package/scripts/multichain-deploy/2_helpers-deploy.ts +151 -0
  414. package/scripts/multichain-deploy/{gdSavings-deploy.ts → 3_gdSavings-deploy.ts} +106 -76
  415. package/scripts/multichain-deploy/4_ubi-deploy.ts +147 -0
  416. package/scripts/multichain-deploy/5_gov-deploy.ts +147 -0
  417. package/scripts/multichain-deploy/fulldeploy.sh +26 -0
  418. package/scripts/multichain-deploy/helpers.ts +149 -111
  419. package/scripts/multichain-deploy/verifyEtherscan.ts +197 -0
  420. package/scripts/test/localOldDaoDeploy.ts +10 -3
  421. package/scripts/upgradeToV3/v3-fix.ts +120 -0
  422. package/scripts/upgradeToV3/v3-upgrade.ts +219 -0
  423. package/scripts/upgrades/celo-defi-ubi-deploy.ts +165 -0
  424. package/scripts/upgrades/identity-upgrade.ts +109 -0
  425. package/scripts/upgrades/transferDaoToGuardians.ts +80 -0
  426. package/test/faucet/Faucet.test.ts +157 -0
  427. package/test/{FuseFaucet.test.ts → faucet/FuseFaucet.test.ts} +26 -31
  428. package/test/governance/ClaimersDistribution.test.ts +58 -6
  429. package/test/governance/CompoundVotingMachine.castvote.test.ts +3 -3
  430. package/test/governance/CompoundVotingMachine.crossblockchain.ts +3 -2
  431. package/test/governance/CompoundVotingMachine.daoscheme.ts +8 -10
  432. package/test/governance/CompoundVotingMachine.delegate.test.ts +4 -5
  433. package/test/governance/CompoundVotingMachine.guardian.test.ts +5 -11
  434. package/test/governance/CompoundVotingMachine.propose.test.ts +3 -2
  435. package/test/governance/CompoundVotingMachine.state.test.ts +3 -2
  436. package/test/governance/GReputation.test.ts +78 -32
  437. package/test/governance/GReputation.v2merkle.test.ts +186 -0
  438. package/test/governance/GoodDollarStaking.gd.test.ts +83 -1
  439. package/test/governance/GoodDollarStaking.good.test.ts +2 -1
  440. package/test/governance/GovernanceStaking.test.ts +4 -4
  441. package/test/governance/Reputation.test.ts +2 -1
  442. package/test/governance/StakersDistribution.test.ts +26 -13
  443. package/test/helpers.ts +145 -52
  444. package/test/identity/IdentityV2.test.ts +539 -0
  445. package/test/{InvitesV1.test.ts → invite/InvitesV1.test.ts} +10 -5
  446. package/test/invite/InvitesV2.test.ts +328 -0
  447. package/test/reserve/DistributionHelper.test.ts +2 -1
  448. package/test/reserve/GoodMarketMaker.test.ts +20 -19
  449. package/test/reserve/GoodReserveCDai.cap.test.ts +8 -1
  450. package/test/reserve/GoodReserveCDai.distribution.test.ts +2 -1
  451. package/test/reserve/GoodReserveCDai.gdx.test.ts +2 -2
  452. package/test/reserve/GoodReserveCDai.pause.test.ts +2 -1
  453. package/test/reserve/GoodReserveCDai.test.ts +14 -38
  454. package/test/reserve/GoodReserveCDai.uniswap.test.ts +21 -19
  455. package/test/staking/CompoundStakingFactory.test.ts +8 -5
  456. package/test/staking/DifferentStakingTokens.test.ts +3 -2
  457. package/test/staking/DonationsStaking.test.ts +33 -24
  458. package/test/staking/FuseStaking.test.ts +9 -9
  459. package/test/staking/GoodAaveStakingFactory.test.ts +36 -31
  460. package/test/staking/SimpleDAIStaking.test.ts +13 -19
  461. package/test/staking/StakingRewards.test.ts +19 -16
  462. package/test/staking/StakingRewardsFixedAPY.test.ts +2 -1
  463. package/test/staking/SwapHelper.test.ts +20 -17
  464. package/test/staking/UsdcAaveStaking.test.ts +36 -33
  465. package/test/token/GoodDollar.test.ts +445 -0
  466. package/test/token/SuperGoodDollar.test.ts +422 -0
  467. package/test/ubi/UBIScheme.e2e.test.ts +6 -5
  468. package/test/ubi/UBIScheme.test.ts +37 -36
  469. package/test/ubi/UBISchemeCycle.test.ts +11 -8
  470. package/test/utils/AdminWallet.test.ts +34 -11
  471. package/test/utils/BuyAndBridgeHelper.test.ts +249 -0
  472. package/test/utils/DAOUpgradeableContract.test.ts +3 -2
  473. package/test/utils/GoodDollarMintBurnWrapper.test.ts +3 -2
  474. package/test/utils/NameService.test.ts +37 -21
  475. package/test/utils/ProtocolUpgrade.test.ts +1 -1
  476. package/test/utils/ProxyFactory.test.ts +12 -10
  477. package/truffle-config.js +18 -18
  478. package/types/AaveMock.ts +24 -15
  479. package/types/AccessControlEnumerableUpgradeable.ts +9 -0
  480. package/types/AccessControlUpgradeable.ts +9 -0
  481. package/types/AdminWallet.ts +149 -110
  482. package/types/AdminWalletFuse.ts +1268 -0
  483. package/types/BuyAndBridgeHelper.ts +279 -0
  484. package/types/CBATMock.ts +24 -15
  485. package/types/CDAILowWorthMock.ts +24 -15
  486. package/types/CDAIMock.ts +24 -15
  487. package/types/CDAINonMintableMock.ts +24 -15
  488. package/types/CDecimalsMock.ts +24 -15
  489. package/types/CSDTMock.ts +24 -15
  490. package/types/CUSDCMock.ts +24 -15
  491. package/types/ClaimersDistribution.ts +28 -0
  492. package/types/CompoundVotingMachine.ts +28 -0
  493. package/types/ContextUpgradeable.ts +77 -0
  494. package/types/DAIMock.ts +24 -15
  495. package/types/DAOUpgradeableContract.ts +28 -0
  496. package/types/DecimalsMock.ts +24 -15
  497. package/types/DistributionHelper.ts +28 -0
  498. package/types/DistributionHelperTest.ts +28 -0
  499. package/types/DistributionHelperTestHelper.ts +28 -0
  500. package/types/DonationsStaking.ts +28 -0
  501. package/types/EIP712Upgradeable.ts +77 -0
  502. package/types/ERC165Upgradeable.ts +13 -2
  503. package/types/ERC1967UpgradeUpgradeable.ts +9 -0
  504. package/types/ERC20BurnableUpgradeable.ts +24 -15
  505. package/types/ERC20PausableUpgradeable.ts +24 -15
  506. package/types/ERC20Permit.ts +186 -0
  507. package/types/ERC20PermitUpgradeable.ts +531 -0
  508. package/types/ERC20PresetMinterPauserUpgradeable.ts +129 -16
  509. package/types/ERC20Upgradeable.ts +24 -15
  510. package/types/ERC20WithTokenInfo.ts +339 -0
  511. package/types/ERC677.ts +131 -0
  512. package/types/ERC677Receiver.ts +115 -0
  513. package/types/EventsEmitter.ts +88 -0
  514. package/types/ExchangeHelper.ts +28 -0
  515. package/types/Faucet.ts +1107 -0
  516. package/types/FeesFormulaMock.ts +130 -0
  517. package/types/FuseFaucet.ts +9 -0
  518. package/types/FuseFaucetV2.ts +729 -0
  519. package/types/FuseStakingV3.ts +9 -0
  520. package/types/GReputation.ts +103 -4
  521. package/types/GoodAaveStaking.ts +24 -15
  522. package/types/GoodAaveStakingV2.ts +24 -15
  523. package/types/GoodCompoundStaking.ts +24 -15
  524. package/types/GoodCompoundStakingTest.ts +24 -15
  525. package/types/GoodCompoundStakingV2.ts +24 -15
  526. package/types/GoodDollar.ts +1733 -0
  527. package/types/GoodDollarMintBurnWrapper.ts +55 -0
  528. package/types/GoodDollarStaking.ts +92 -0
  529. package/types/GoodDollarStakingMock.ts +131 -0
  530. package/types/GoodFundManager.ts +28 -0
  531. package/types/GoodFundManagerTest.ts +28 -0
  532. package/types/GoodMarketMaker.ts +28 -0
  533. package/types/GoodReserveCDai.ts +43 -15
  534. package/types/GovernanceStaking.ts +43 -15
  535. package/types/IERC1271Upgradeable.ts +109 -0
  536. package/types/IERC1820Registry.ts +398 -0
  537. package/types/IERC1822ProxiableUpgradeable.ts +90 -0
  538. package/types/IERC20MetadataUpgradeable.ts +15 -15
  539. package/types/IERC20Permit.ts +175 -0
  540. package/types/IERC20PermitUpgradeable.ts +176 -0
  541. package/types/IERC20Upgradeable.ts +15 -15
  542. package/types/IERC777.ts +586 -0
  543. package/types/IERC777Recipient.ts +130 -0
  544. package/types/IERC777Sender.ts +130 -0
  545. package/types/IFeesFormula.ts +111 -0
  546. package/types/IGoodDollar.ts +304 -7
  547. package/types/IGoodDollarCustom.ts +618 -0
  548. package/types/IGovernanceStaking.ts +98 -0
  549. package/types/IIdentity.ts +106 -0
  550. package/types/IIdentityV2.ts +557 -0
  551. package/types/IStakingUpgrade.ts +110 -0
  552. package/types/ISuperAgreement.ts +151 -0
  553. package/types/ISuperApp.ts +410 -0
  554. package/types/ISuperGoodDollar.ts +3029 -0
  555. package/types/ISuperToken.ts +2326 -0
  556. package/types/ISuperTokenFactory.ts +415 -0
  557. package/types/ISuperfluid.ts +1565 -0
  558. package/types/ISuperfluidGovernance.ts +455 -0
  559. package/types/ISuperfluidToken.ts +951 -0
  560. package/types/IdentityMock.ts +493 -0
  561. package/types/IdentityV2.ts +1743 -0
  562. package/types/Initializable.ts +77 -0
  563. package/types/InvitesFuseV2.ts +806 -0
  564. package/types/InvitesV1.ts +9 -0
  565. package/types/InvitesV2.ts +1010 -0
  566. package/types/LendingPoolMock.ts +24 -15
  567. package/types/NameService.ts +28 -0
  568. package/types/OwnableUpgradeable.ts +9 -0
  569. package/types/PausableUpgradeable.ts +9 -0
  570. package/types/PayableMock.ts +92 -0
  571. package/types/ReentrancyGuardUpgradeable.ts +78 -0
  572. package/types/Reputation.ts +28 -0
  573. package/types/SelfApprove.ts +115 -0
  574. package/types/SimpleStaking.ts +24 -15
  575. package/types/SimpleStakingV2.ts +24 -15
  576. package/types/SixteenDecimalsTokenMock.ts +24 -15
  577. package/types/StakersDistribution.ts +28 -0
  578. package/types/SuperGoodDollar.ts +3662 -0
  579. package/types/SuperToken.ts +2434 -0
  580. package/types/SuperfluidToken.ts +951 -0
  581. package/types/TokenInfo.ts +109 -0
  582. package/types/TwentyDecimalsTokenMock.ts +24 -15
  583. package/types/UBIScheme.ts +47 -40
  584. package/types/USDCMock.ts +24 -15
  585. package/types/UUPSProxiable.ts +183 -0
  586. package/types/UUPSProxy.ts +105 -0
  587. package/types/UUPSUpgradeable.ts +28 -0
  588. package/types/UpgradableMock.ts +28 -0
  589. package/types/UpgradableMock2.ts +28 -0
  590. package/types/UpgradableMock3.ts +28 -0
  591. package/types/UpgradableMock4.ts +28 -0
  592. package/types/factories/AaveMock__factory.ts +17 -4
  593. package/types/factories/AaveStakingFactory__factory.ts +1 -1
  594. package/types/factories/AaveUSDMockOracle__factory.ts +1 -1
  595. package/types/factories/AccessControlEnumerableUpgradeable__factory.ts +13 -0
  596. package/types/factories/AccessControlUpgradeable__factory.ts +13 -0
  597. package/types/factories/AdminWalletFuse__factory.ts +881 -0
  598. package/types/factories/AdminWallet__factory.ts +93 -47
  599. package/types/factories/BancorFormula__factory.ts +1 -1
  600. package/types/factories/BaseShareFieldV2__factory.ts +1 -1
  601. package/types/factories/BaseShareField__factory.ts +1 -1
  602. package/types/factories/BatUSDMockOracle__factory.ts +1 -1
  603. package/types/factories/BuyAndBridgeHelper__factory.ts +237 -0
  604. package/types/factories/CBATMock__factory.ts +17 -4
  605. package/types/factories/CDAILowWorthMock__factory.ts +17 -4
  606. package/types/factories/CDAIMock__factory.ts +17 -4
  607. package/types/factories/CDAINonMintableMock__factory.ts +17 -4
  608. package/types/factories/CDecimalsMock__factory.ts +17 -4
  609. package/types/factories/CSDTMock__factory.ts +17 -4
  610. package/types/factories/CUSDCMock__factory.ts +17 -4
  611. package/types/factories/ClaimersDistribution__factory.ts +27 -1
  612. package/types/factories/CompUSDMockOracle__factory.ts +1 -1
  613. package/types/factories/CompoundStakingFactory__factory.ts +1 -1
  614. package/types/factories/CompoundVotingMachine__factory.ts +27 -1
  615. package/types/factories/ContextUpgradeable__factory.ts +39 -0
  616. package/types/factories/DAIMock__factory.ts +17 -4
  617. package/types/factories/DAOContract__factory.ts +1 -1
  618. package/types/factories/DAOUpgradeableContract__factory.ts +27 -1
  619. package/types/factories/DaiEthPriceMockOracle__factory.ts +1 -1
  620. package/types/factories/DecimalsMock__factory.ts +17 -4
  621. package/types/factories/DistributionBridgeMock__factory.ts +1 -1
  622. package/types/factories/DistributionHelperTestHelper__factory.ts +27 -1
  623. package/types/factories/DistributionHelperTest__factory.ts +27 -1
  624. package/types/factories/DistributionHelper__factory.ts +27 -1
  625. package/types/factories/DonationsStaking__factory.ts +27 -1
  626. package/types/factories/EIP712Upgradeable__factory.ts +39 -0
  627. package/types/factories/ERC165Upgradeable__factory.ts +13 -0
  628. package/types/factories/ERC1967Proxy__factory.ts +1 -1
  629. package/types/factories/ERC1967UpgradeUpgradeable__factory.ts +13 -0
  630. package/types/factories/ERC20BurnableUpgradeable__factory.ts +16 -3
  631. package/types/factories/ERC20PausableUpgradeable__factory.ts +16 -3
  632. package/types/factories/ERC20PermitUpgradeable__factory.ts +388 -0
  633. package/types/factories/ERC20Permit__factory.ts +111 -0
  634. package/types/factories/ERC20PresetMinterPauserUpgradeable__factory.ts +99 -5
  635. package/types/factories/ERC20Upgradeable__factory.ts +17 -4
  636. package/types/factories/ERC20WithTokenInfo__factory.ts +248 -0
  637. package/types/factories/ERC677Receiver__factory.ts +55 -0
  638. package/types/factories/ERC677__factory.ts +75 -0
  639. package/types/factories/EthUSDMockOracle__factory.ts +1 -1
  640. package/types/factories/EventsEmitter__factory.ts +84 -0
  641. package/types/factories/ExchangeHelper__factory.ts +27 -1
  642. package/types/factories/Faucet__factory.ts +781 -0
  643. package/types/factories/FeesFormulaMock__factory.ts +132 -0
  644. package/types/factories/FuseFaucetV2__factory.ts +528 -0
  645. package/types/factories/FuseFaucet__factory.ts +14 -1
  646. package/types/factories/FuseStakingV3__factory.ts +14 -1
  647. package/types/factories/GReputation__factory.ts +77 -2
  648. package/types/factories/GasPriceMockOracle__factory.ts +1 -1
  649. package/types/factories/GoodAaveStakingV2__factory.ts +17 -4
  650. package/types/factories/GoodAaveStaking__factory.ts +17 -4
  651. package/types/factories/GoodCompoundStakingTest__factory.ts +17 -4
  652. package/types/factories/GoodCompoundStakingV2__factory.ts +17 -4
  653. package/types/factories/GoodCompoundStaking__factory.ts +17 -4
  654. package/types/factories/GoodDollarMintBurnWrapper__factory.ts +34 -1
  655. package/types/factories/GoodDollarStakingMock__factory.ts +94 -1
  656. package/types/factories/GoodDollarStaking__factory.ts +70 -1
  657. package/types/factories/GoodDollar__factory.ts +1254 -0
  658. package/types/factories/GoodFundManagerTest__factory.ts +27 -1
  659. package/types/factories/GoodFundManager__factory.ts +27 -1
  660. package/types/factories/GoodMarketMaker__factory.ts +27 -1
  661. package/types/factories/GoodReserveCDai__factory.ts +30 -4
  662. package/types/factories/GovernanceStaking__factory.ts +30 -4
  663. package/types/factories/IERC1271Upgradeable__factory.ts +50 -0
  664. package/types/factories/IERC1820Registry__factory.ts +239 -0
  665. package/types/factories/IERC1822ProxiableUpgradeable__factory.ts +43 -0
  666. package/types/factories/IERC20MetadataUpgradeable__factory.ts +3 -3
  667. package/types/factories/IERC20PermitUpgradeable__factory.ts +105 -0
  668. package/types/factories/IERC20Permit__factory.ts +98 -0
  669. package/types/factories/IERC20Upgradeable__factory.ts +3 -3
  670. package/types/factories/IERC777Recipient__factory.ts +64 -0
  671. package/types/factories/IERC777Sender__factory.ts +61 -0
  672. package/types/factories/IERC777__factory.ts +414 -0
  673. package/types/factories/IFeesFormula__factory.ts +57 -0
  674. package/types/factories/IGoodDollarCustom__factory.ts +370 -0
  675. package/types/factories/IGoodDollar__factory.ts +184 -0
  676. package/types/factories/IGovernanceStaking__factory.ts +39 -0
  677. package/types/factories/IIdentityV2__factory.ts +312 -0
  678. package/types/factories/IIdentity__factory.ts +70 -0
  679. package/types/factories/IStakingUpgrade__factory.ts +50 -0
  680. package/types/factories/ISuperAgreement__factory.ts +78 -0
  681. package/types/factories/ISuperApp__factory.ts +272 -0
  682. package/types/factories/ISuperGoodDollar__factory.ts +2147 -0
  683. package/types/factories/ISuperTokenFactory__factory.ts +271 -0
  684. package/types/factories/ISuperToken__factory.ts +1682 -0
  685. package/types/factories/ISuperfluidGovernance__factory.ts +264 -0
  686. package/types/factories/ISuperfluidToken__factory.ts +697 -0
  687. package/types/factories/ISuperfluid__factory.ts +1143 -0
  688. package/types/factories/IdentityMock__factory.ts +327 -0
  689. package/types/factories/IdentityV2__factory.ts +1129 -0
  690. package/types/factories/IncentiveControllerMock__factory.ts +1 -1
  691. package/types/factories/Initializable__factory.ts +36 -0
  692. package/types/factories/InvitesFuseV2__factory.ts +553 -0
  693. package/types/factories/InvitesV1__factory.ts +14 -1
  694. package/types/factories/InvitesV2__factory.ts +683 -0
  695. package/types/factories/LendingPoolMock__factory.ts +17 -4
  696. package/types/factories/Multicall__factory.ts +1 -1
  697. package/types/factories/MultichainBridgeHelper__factory.ts +1 -1
  698. package/types/factories/MultichainRouterMock__factory.ts +1 -1
  699. package/types/factories/NameService__factory.ts +27 -1
  700. package/types/factories/OverMintTesterRegularStake__factory.ts +1 -1
  701. package/types/factories/OverMintTester__factory.ts +1 -1
  702. package/types/factories/OwnableUpgradeable__factory.ts +13 -0
  703. package/types/factories/PausableUpgradeable__factory.ts +13 -0
  704. package/types/factories/PayableMock__factory.ts +66 -0
  705. package/types/factories/ProtocolUpgradeFuseRecover__factory.ts +1 -1
  706. package/types/factories/ProtocolUpgradeFuse__factory.ts +1 -1
  707. package/types/factories/ProtocolUpgradeRecover__factory.ts +1 -1
  708. package/types/factories/ProtocolUpgrade__factory.ts +1 -1
  709. package/types/factories/ProxyFactory1967__factory.ts +1 -1
  710. package/types/factories/ReentrancyGuardUpgradeable__factory.ts +43 -0
  711. package/types/factories/ReputationTestHelper__factory.ts +1 -1
  712. package/types/factories/Reputation__factory.ts +27 -1
  713. package/types/factories/SelfApprove__factory.ts +46 -0
  714. package/types/factories/SimpleStakingV2__factory.ts +16 -3
  715. package/types/factories/SimpleStaking__factory.ts +16 -3
  716. package/types/factories/SixteenDecimalsTokenMock__factory.ts +17 -4
  717. package/types/factories/StakersDistribution__factory.ts +27 -1
  718. package/types/factories/StakingMockFixedAPY__factory.ts +1 -1
  719. package/types/factories/SuperGoodDollar__factory.ts +2680 -0
  720. package/types/factories/SuperToken__factory.ts +1809 -0
  721. package/types/factories/SuperfluidToken__factory.ts +697 -0
  722. package/types/factories/SwapHelperTest__factory.ts +1 -1
  723. package/types/factories/TokenInfo__factory.ts +62 -0
  724. package/types/factories/TwentyDecimalsTokenMock__factory.ts +17 -4
  725. package/types/factories/UBIScheme__factory.ts +40 -21
  726. package/types/factories/USDCMock__factory.ts +17 -4
  727. package/types/factories/UUPSProxiable__factory.ts +101 -0
  728. package/types/factories/UUPSProxy__factory.ts +80 -0
  729. package/types/factories/UUPSUpgradeable__factory.ts +26 -0
  730. package/types/factories/UniswapV2SwapHelper__factory.ts +1 -1
  731. package/types/factories/UpgradableMock2__factory.ts +27 -1
  732. package/types/factories/UpgradableMock3__factory.ts +27 -1
  733. package/types/factories/UpgradableMock4__factory.ts +27 -1
  734. package/types/factories/UpgradableMock__factory.ts +27 -1
  735. package/types/hardhat.d.ts +459 -0
  736. package/types/index.ts +98 -0
  737. package/yarn.lock +1251 -306
  738. package/scripts/multichain-deploy/nonubiDistribution-deploy.ts +0 -170
@@ -14,7 +14,7 @@ contract cDAINonMintableMock is DSMath, ERC20PresetMinterPauserUpgradeable {
14
14
 
15
15
  uint256 exchangeRate = uint256(100e28).div(99);
16
16
 
17
- constructor(ERC20PresetMinterPauserUpgradeable _dai) {
17
+ constructor(ERC20PresetMinterPauserUpgradeable _dai) initializer {
18
18
  __ERC20PresetMinterPauser_init("Compound DAI", "cDAI");
19
19
  dai = _dai;
20
20
  }
@@ -22,19 +22,15 @@ contract cDAINonMintableMock is DSMath, ERC20PresetMinterPauserUpgradeable {
22
22
  function mint(uint256 daiAmount) public returns (uint256) {
23
23
  dai.transferFrom(msg.sender, address(this), daiAmount);
24
24
  //mul by 1e10 to match to precision of 1e28 of the exchange rate
25
- _mint(
26
- msg.sender,
27
- rdiv(daiAmount * 1e10, exchangeRateStored()).div(1e19)
28
- ); //div to reduce precision from RAY 1e27 to 1e8 precision of cDAI
25
+ _mint(msg.sender, rdiv(daiAmount * 1e10, exchangeRateStored()).div(1e19)); //div to reduce precision from RAY 1e27 to 1e8 precision of cDAI
29
26
  return 1;
30
27
  }
31
28
 
32
29
  function redeem(uint256 cdaiAmount) public returns (uint256) {
33
- uint256 daiAmount =
34
- rmul(
35
- cdaiAmount * 1e10, //bring cdai 8 decimals to rdai precision
36
- exchangeRateStored().div(10)
37
- );
30
+ uint256 daiAmount = rmul(
31
+ cdaiAmount * 1e10, //bring cdai 8 decimals to rdai precision
32
+ exchangeRateStored().div(10)
33
+ );
38
34
  //div to reduce precision from 1e28 of exchange rate to 1e27 that DSMath works on
39
35
  // uint256 daiAmount = cdaiAmount.mul(100).div(99);
40
36
  _burn(msg.sender, cdaiAmount);
@@ -43,8 +39,7 @@ contract cDAINonMintableMock is DSMath, ERC20PresetMinterPauserUpgradeable {
43
39
  }
44
40
 
45
41
  function redeemUnderlying(uint256 daiAmount) public returns (uint256) {
46
- uint256 cdaiAmount =
47
- rdiv(daiAmount * 1e10, exchangeRateStored()).div(1e19);
42
+ uint256 cdaiAmount = rdiv(daiAmount * 1e10, exchangeRateStored()).div(1e19);
48
43
  _burn(msg.sender, cdaiAmount);
49
44
  dai.transfer(msg.sender, daiAmount);
50
45
  return 0;
@@ -15,7 +15,7 @@ contract cDecimalsMock is DSMath, ERC20PresetMinterPauserUpgradeable {
15
15
  uint256 exchangeRate = 20000000000000000; // initial exchange rate 0.02 from original cToken
16
16
  uint256 mantissa = 18;
17
17
 
18
- constructor(ERC20PresetMinterPauserUpgradeable _edt) {
18
+ constructor(ERC20PresetMinterPauserUpgradeable _edt) initializer {
19
19
  __ERC20PresetMinterPauser_init("Compound EDT", "cEDT");
20
20
  edt = _edt;
21
21
  mantissa = 18 + _edt.decimals() - 8;
@@ -14,7 +14,7 @@ contract cSDTMock is DSMath, ERC20PresetMinterPauserUpgradeable {
14
14
  uint256 exchangeRate = 2000000000000000000000000; // initial exchange rate 0.02 from original cToken
15
15
  uint256 mantissa = 26;
16
16
 
17
- constructor(ERC20PresetMinterPauserUpgradeable _edt) {
17
+ constructor(ERC20PresetMinterPauserUpgradeable _edt) initializer {
18
18
  __ERC20PresetMinterPauser_init("Compound SDT", "cSDT");
19
19
  edt = _edt;
20
20
  }
@@ -38,8 +38,8 @@ contract cSDTMock is DSMath, ERC20PresetMinterPauserUpgradeable {
38
38
  }
39
39
 
40
40
  function redeemUnderlying(uint256 edtAmount) public returns (uint256) {
41
- uint256 cEdtAmount =
42
- ((edtAmount / 1e8) * (10**mantissa)) / exchangeRateStored(); // based on https://compound.finance/docs#protocol-math
41
+ uint256 cEdtAmount = ((edtAmount / 1e8) * (10**mantissa)) /
42
+ exchangeRateStored(); // based on https://compound.finance/docs#protocol-math
43
43
  _burn(msg.sender, cEdtAmount);
44
44
  edt.transfer(msg.sender, edtAmount);
45
45
  return 0;
@@ -15,7 +15,7 @@ contract cUSDCMock is DSMath, ERC20PresetMinterPauserUpgradeable {
15
15
  uint256 exchangeRate = 200000000000000; // initial exchange rate 0.02 from original cToken
16
16
  uint256 mantissa = 16;
17
17
 
18
- constructor(ERC20PresetMinterPauserUpgradeable _usdc) {
18
+ constructor(ERC20PresetMinterPauserUpgradeable _usdc) initializer {
19
19
  __ERC20PresetMinterPauser_init("Compound USDC", "cUSDC");
20
20
  usdc = _usdc;
21
21
  }
@@ -31,8 +31,8 @@ contract cUSDCMock is DSMath, ERC20PresetMinterPauserUpgradeable {
31
31
  }
32
32
 
33
33
  function redeem(uint256 cUsdcAmount) public returns (uint256) {
34
- uint256 usdcAmount =
35
- ((cUsdcAmount / 1e2) * exchangeRateStored()) / 10**mantissa; // based on https://compound.finance/docs#protocol-math
34
+ uint256 usdcAmount = ((cUsdcAmount / 1e2) * exchangeRateStored()) /
35
+ 10**mantissa; // based on https://compound.finance/docs#protocol-math
36
36
 
37
37
  _burn(msg.sender, cUsdcAmount);
38
38
  usdc.transfer(msg.sender, usdcAmount);
@@ -40,8 +40,8 @@ contract cUSDCMock is DSMath, ERC20PresetMinterPauserUpgradeable {
40
40
  }
41
41
 
42
42
  function redeemUnderlying(uint256 usdcAmount) public returns (uint256) {
43
- uint256 cUsdcAmount =
44
- (usdcAmount * 1e2 * (10**mantissa)) / exchangeRateStored(); // based on https://compound.finance/docs#protocol-math
43
+ uint256 cUsdcAmount = (usdcAmount * 1e2 * (10**mantissa)) /
44
+ exchangeRateStored(); // based on https://compound.finance/docs#protocol-math
45
45
  _burn(msg.sender, cUsdcAmount);
46
46
  usdc.transfer(msg.sender, usdcAmount);
47
47
  return 0;
@@ -8,7 +8,7 @@ import "@openzeppelin/contracts/utils/math/Math.sol";
8
8
 
9
9
  import "../utils/DAOUpgradeableContract.sol";
10
10
 
11
- import "hardhat/console.sol";
11
+ // import "hardhat/console.sol";
12
12
 
13
13
  /***
14
14
  * @dev DistributionHelper receives funds and distributes them to recipients
@@ -13,7 +13,7 @@ import "../Interfaces.sol";
13
13
  import "./GoodMarketMaker.sol";
14
14
  import "./DistributionHelper.sol";
15
15
 
16
- import "hardhat/console.sol";
16
+ // import "hardhat/console.sol";
17
17
 
18
18
  interface ContributionCalc {
19
19
  function calculateContribution(
@@ -0,0 +1,140 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // we use a custom file and not openzeppelin directly since the DAOStack Controller expects `mint` to return bool
3
+ // we also add the erc20 permit
4
+
5
+ pragma solidity ^0.8.0;
6
+
7
+ import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-ERC20PermitUpgradeable.sol";
8
+ import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol";
9
+ import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PausableUpgradeable.sol";
10
+ import "@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol";
11
+ import "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol";
12
+ import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
13
+
14
+ /**
15
+ * @dev {ERC20} token, including:
16
+ *
17
+ * - ability for holders to burn (destroy) their tokens
18
+ * - a minter role that allows for token minting (creation)
19
+ * - a pauser role that allows to stop all token transfers
20
+ *
21
+ * This contract uses {AccessControl} to lock permissioned functions using the
22
+ * different roles - head to its documentation for details.
23
+ *
24
+ * The account that deploys the contract will be granted the minter and pauser
25
+ * roles, as well as the default admin role, which will let it grant both minter
26
+ * and pauser roles to other accounts.
27
+ */
28
+ contract ERC20PresetMinterPauserUpgradeable is
29
+ Initializable,
30
+ ContextUpgradeable,
31
+ AccessControlEnumerableUpgradeable,
32
+ ERC20PermitUpgradeable,
33
+ ERC20BurnableUpgradeable,
34
+ ERC20PausableUpgradeable
35
+ {
36
+ function initialize(string memory name, string memory symbol)
37
+ public
38
+ virtual
39
+ initializer
40
+ {
41
+ __ERC20PresetMinterPauser_init(name, symbol);
42
+ }
43
+
44
+ bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
45
+ bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");
46
+
47
+ /**
48
+ * @dev Grants `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE` and `PAUSER_ROLE` to the
49
+ * account that deploys the contract.
50
+ *
51
+ * See {ERC20-constructor}.
52
+ */
53
+ function __ERC20PresetMinterPauser_init(
54
+ string memory name,
55
+ string memory symbol
56
+ ) internal initializer {
57
+ __Context_init_unchained();
58
+ __ERC165_init_unchained();
59
+ __AccessControl_init_unchained();
60
+ __AccessControlEnumerable_init_unchained();
61
+ __ERC20_init_unchained(name, symbol);
62
+ __ERC20Burnable_init_unchained();
63
+ __Pausable_init_unchained();
64
+ __ERC20Pausable_init_unchained();
65
+ __ERC20PresetMinterPauser_init_unchained(name, symbol);
66
+ __ERC20Permit_init_unchained(name);
67
+ }
68
+
69
+ function __ERC20PresetMinterPauser_init_unchained(
70
+ string memory name,
71
+ string memory symbol
72
+ ) internal initializer {
73
+ _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());
74
+
75
+ _setupRole(MINTER_ROLE, _msgSender());
76
+ _setupRole(PAUSER_ROLE, _msgSender());
77
+ }
78
+
79
+ /**
80
+ * @dev Creates `amount` new tokens for `to`.
81
+ *
82
+ * See {ERC20-_mint}.
83
+ *
84
+ * Requirements:
85
+ *
86
+ * - the caller must have the `MINTER_ROLE`.
87
+ */
88
+ function mint(address to, uint256 amount) public virtual returns (bool) {
89
+ require(
90
+ hasRole(MINTER_ROLE, _msgSender()),
91
+ "ERC20PresetMinterPauser: must have minter role to mint"
92
+ );
93
+ _mint(to, amount);
94
+ return true;
95
+ }
96
+
97
+ /**
98
+ * @dev Pauses all token transfers.
99
+ *
100
+ * See {ERC20Pausable} and {Pausable-_pause}.
101
+ *
102
+ * Requirements:
103
+ *
104
+ * - the caller must have the `PAUSER_ROLE`.
105
+ */
106
+ function pause() public virtual {
107
+ require(
108
+ hasRole(PAUSER_ROLE, _msgSender()),
109
+ "ERC20PresetMinterPauser: must have pauser role to pause"
110
+ );
111
+ _pause();
112
+ }
113
+
114
+ /**
115
+ * @dev Unpauses all token transfers.
116
+ *
117
+ * See {ERC20Pausable} and {Pausable-_unpause}.
118
+ *
119
+ * Requirements:
120
+ *
121
+ * - the caller must have the `PAUSER_ROLE`.
122
+ */
123
+ function unpause() public virtual {
124
+ require(
125
+ hasRole(PAUSER_ROLE, _msgSender()),
126
+ "ERC20PresetMinterPauser: must have pauser role to unpause"
127
+ );
128
+ _unpause();
129
+ }
130
+
131
+ function _beforeTokenTransfer(
132
+ address from,
133
+ address to,
134
+ uint256 amount
135
+ ) internal virtual override(ERC20Upgradeable, ERC20PausableUpgradeable) {
136
+ super._beforeTokenTransfer(from, to, amount);
137
+ }
138
+
139
+ uint256[50] private __gap;
140
+ }
@@ -0,0 +1,74 @@
1
+ // SPDX-License-Identifier: MIT
2
+
3
+ pragma solidity >=0.8;
4
+
5
+ /* @title ERC677Receiver interface
6
+ */
7
+ interface ERC677Receiver {
8
+ function onTokenTransfer(
9
+ address _from,
10
+ uint256 _value,
11
+ bytes calldata _data
12
+ ) external returns (bool);
13
+ }
14
+
15
+ abstract contract ERC677 {
16
+ event Transfer(
17
+ address indexed from,
18
+ address indexed to,
19
+ uint256 value,
20
+ bytes data
21
+ );
22
+
23
+ function transfer(address to, uint256 value) public virtual returns (bool);
24
+
25
+ /**
26
+ * @dev transfer token to a contract address with additional data if the recipient is a contact.
27
+ * @param _to The address to transfer to.
28
+ * @param _value The amount to be transferred.
29
+ * @param _data The extra data to be passed to the receiving contract.
30
+ * @return true if transfer is successful
31
+ */
32
+ function _transferAndCall(
33
+ address _to,
34
+ uint256 _value,
35
+ bytes memory _data
36
+ ) internal returns (bool) {
37
+ bool res = transfer(_to, _value);
38
+ emit Transfer(msg.sender, _to, _value, _data);
39
+
40
+ if (isContract(_to)) {
41
+ require(contractFallback(_to, _value, _data), "Contract fallback failed");
42
+ }
43
+ return res;
44
+ }
45
+
46
+ /* @dev Contract fallback function. Is called if transferAndCall is called
47
+ * to a contract
48
+ */
49
+ function contractFallback(
50
+ address _to,
51
+ uint256 _value,
52
+ bytes memory _data
53
+ ) internal virtual returns (bool) {
54
+ ERC677Receiver receiver = ERC677Receiver(_to);
55
+ require(
56
+ receiver.onTokenTransfer(msg.sender, _value, _data),
57
+ "Contract Fallback failed"
58
+ );
59
+ return true;
60
+ }
61
+
62
+ /* @dev Function to check if given address is a contract
63
+ * @param _addr Address to check
64
+ * @return true if given address is a contract
65
+ */
66
+
67
+ function isContract(address _addr) internal view returns (bool) {
68
+ uint256 length;
69
+ assembly {
70
+ length := extcodesize(_addr)
71
+ }
72
+ return length > 0;
73
+ }
74
+ }
@@ -0,0 +1,10 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity >=0.8;
3
+
4
+ interface IFeesFormula {
5
+ function getTxFees(
6
+ uint256 value,
7
+ address sender,
8
+ address recipient
9
+ ) external view returns (uint256 fee, bool senderPays);
10
+ }
@@ -0,0 +1,243 @@
1
+ // SPDX-License-Identifier: MIT
2
+
3
+ pragma solidity >=0.8;
4
+ import "./ERC677.sol";
5
+ import "./FeesFormula.sol";
6
+ import "../Interfaces.sol";
7
+ import "./ERC20PresetMinterPauserUpgradeable.sol";
8
+ import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
9
+ import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
10
+
11
+ /**
12
+ * @title The GoodDollar V2 ERC677 token contract
13
+ */
14
+
15
+ contract GoodDollar is
16
+ UUPSUpgradeable,
17
+ ERC677,
18
+ ERC20PresetMinterPauserUpgradeable
19
+ {
20
+ address public feeRecipient;
21
+
22
+ IFeesFormula public formula;
23
+
24
+ IIdentity public identity;
25
+
26
+ uint256 public cap;
27
+
28
+ /**
29
+ * @dev constructor
30
+ * @param _name The name of the token
31
+ * @param _symbol The symbol of the token
32
+ * @param _cap the cap of the token. no cap if 0
33
+ * @param _formula the fee formula contract
34
+ * @param _identity the identity contract
35
+ * @param _feeRecipient the address that receives transaction fees
36
+ */
37
+ function initialize(
38
+ string memory _name,
39
+ string memory _symbol,
40
+ uint256 _cap,
41
+ IFeesFormula _formula,
42
+ IIdentity _identity,
43
+ address _feeRecipient,
44
+ address _owner
45
+ ) public initializer {
46
+ __ERC20PresetMinterPauser_init(_name, _symbol);
47
+ feeRecipient = _feeRecipient;
48
+ identity = _identity;
49
+ formula = _formula;
50
+ cap = _cap;
51
+ if (_owner != _msgSender()) {
52
+ transferOwnership(_owner);
53
+ renounceRole(MINTER_ROLE, _msgSender());
54
+ renounceRole(PAUSER_ROLE, _msgSender());
55
+ }
56
+ }
57
+
58
+ modifier onlyOwner() {
59
+ require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), "not owner");
60
+ _;
61
+ }
62
+
63
+ function _authorizeUpgrade(address newImplementation)
64
+ internal
65
+ override
66
+ onlyOwner
67
+ {}
68
+
69
+ function decimals() public view virtual override returns (uint8) {
70
+ return 2;
71
+ }
72
+
73
+ function setFormula(IFeesFormula _formula) external onlyOwner {
74
+ formula = _formula;
75
+ }
76
+
77
+ function setIdentity(IIdentityV2 _identity) external onlyOwner {
78
+ identity = _identity;
79
+ }
80
+
81
+ function transferOwnership(address _owner) public onlyOwner {
82
+ grantRole(DEFAULT_ADMIN_ROLE, _owner);
83
+ renounceRole(DEFAULT_ADMIN_ROLE, _msgSender());
84
+ }
85
+
86
+ function owner() external view returns (address) {
87
+ return getRoleMember(DEFAULT_ADMIN_ROLE, 0);
88
+ }
89
+
90
+ function isMinter(address _minter) external view returns (bool) {
91
+ return hasRole(MINTER_ROLE, _minter);
92
+ }
93
+
94
+ function addMinter(address _minter) external {
95
+ grantRole(MINTER_ROLE, _minter);
96
+ }
97
+
98
+ function renounceMinter() external {
99
+ renounceRole(MINTER_ROLE, _msgSender());
100
+ }
101
+
102
+ function addPauser(address _pauser) external {
103
+ grantRole(PAUSER_ROLE, _pauser);
104
+ }
105
+
106
+ function isPauser(address _pauser) external view returns (bool) {
107
+ return hasRole(PAUSER_ROLE, _pauser);
108
+ }
109
+
110
+ /**
111
+ * @dev Processes fees from given value and sends
112
+ * remainder to given address
113
+ * @param to the address to be sent to
114
+ * @param value the value to be processed and then
115
+ * transferred
116
+ * @return a boolean that indicates if the operation was successful
117
+ */
118
+ function transfer(address to, uint256 value)
119
+ public
120
+ override(ERC20Upgradeable, ERC677)
121
+ returns (bool)
122
+ {
123
+ uint256 bruttoValue = _processFees(msg.sender, to, value);
124
+ return ERC20Upgradeable.transfer(to, bruttoValue);
125
+ }
126
+
127
+ /**
128
+ * @dev Transfer tokens from one address to another
129
+ * @param from The address which you want to send tokens from
130
+ * @param to The address which you want to transfer to
131
+ * @param value the amount of tokens to be transferred
132
+ * @return a boolean that indicates if the operation was successful
133
+ */
134
+ function transferFrom(
135
+ address from,
136
+ address to,
137
+ uint256 value
138
+ ) public override returns (bool) {
139
+ uint256 bruttoValue = _processFees(from, to, value);
140
+ return super.transferFrom(from, to, bruttoValue);
141
+ }
142
+
143
+ /**
144
+ * @dev Processes transfer fees and calls ERC677Token transferAndCall function
145
+ * @param to address to transfer to
146
+ * @param value the amount to transfer
147
+ * @param data The data to pass to transferAndCall
148
+ * @return a bool indicating if transfer function succeeded
149
+ */
150
+ function transferAndCall(
151
+ address to,
152
+ uint256 value,
153
+ bytes calldata data
154
+ ) external returns (bool) {
155
+ uint256 bruttoValue = _processFees(msg.sender, to, value);
156
+ bool res = ERC20Upgradeable.transfer(to, bruttoValue);
157
+ emit Transfer(msg.sender, to, bruttoValue, data);
158
+
159
+ if (isContract(to)) {
160
+ require(
161
+ contractFallback(to, bruttoValue, data),
162
+ "Contract fallback failed"
163
+ );
164
+ }
165
+ return res;
166
+ }
167
+
168
+ /**
169
+ * @dev Minting function
170
+ * @param to the address that will receive the minted tokens
171
+ * @param value the amount of tokens to mint
172
+ */
173
+ function mint(address to, uint256 value) public override returns (bool) {
174
+ if (cap > 0) {
175
+ require(
176
+ totalSupply() + value <= cap,
177
+ "Cannot increase supply beyond cap"
178
+ );
179
+ }
180
+ return super.mint(to, value);
181
+ }
182
+
183
+ /**
184
+ * @dev Gets the current transaction fees
185
+ * @return fee senderPays that represents the current transaction fees and bool true if sender pays the fee or receiver
186
+ */
187
+ function getFees(uint256 value)
188
+ public
189
+ view
190
+ returns (uint256 fee, bool senderPays)
191
+ {
192
+ return formula.getTxFees(value, address(0), address(0));
193
+ }
194
+
195
+ /**
196
+ * @dev Gets the current transaction fees
197
+ * @return fee senderPays that represents the current transaction fees and bool true if sender pays the fee or receiver
198
+ */
199
+ function getFees(
200
+ uint256 value,
201
+ address sender,
202
+ address recipient
203
+ ) public view returns (uint256 fee, bool senderPays) {
204
+ return formula.getTxFees(value, sender, recipient);
205
+ }
206
+
207
+ /**
208
+ * @dev Sets the address that receives the transactional fees.
209
+ * can only be called by owner
210
+ * @param _feeRecipient The new address to receive transactional fees
211
+ */
212
+ function setFeeRecipient(address _feeRecipient) public onlyOwner {
213
+ feeRecipient = _feeRecipient;
214
+ }
215
+
216
+ /**
217
+ * @dev Sends transactional fees to feeRecipient address from given address
218
+ * @param account The account that sends the fees
219
+ * @param value The amount to subtract fees from
220
+ * @return an uint256 that represents the given value minus the transactional fees
221
+ */
222
+ function _processFees(
223
+ address account,
224
+ address recipient,
225
+ uint256 value
226
+ ) internal returns (uint256) {
227
+ (uint256 txFees, bool senderPays) = getFees(value, account, recipient);
228
+ if (txFees > 0 && !identity.isDAOContract(msg.sender)) {
229
+ require(
230
+ senderPays == false || value + txFees <= balanceOf(account),
231
+ "Not enough balance to pay TX fee"
232
+ );
233
+ if (account == msg.sender) {
234
+ super.transfer(feeRecipient, txFees);
235
+ } else {
236
+ super.transferFrom(account, feeRecipient, txFees);
237
+ }
238
+
239
+ return senderPays ? value : value - txFees;
240
+ }
241
+ return value;
242
+ }
243
+ }
@@ -0,0 +1,101 @@
1
+ // SPDX-License-Identifier: MIT
2
+
3
+ pragma solidity >=0.8;
4
+
5
+ import "@openzeppelin/contracts-upgradeable/utils/cryptography/draft-EIP712Upgradeable.sol";
6
+ import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol";
7
+
8
+ import "./SuperToken.sol";
9
+
10
+ interface SelfApprove {
11
+ function selfApproveFor(
12
+ address account,
13
+ address spender,
14
+ uint256 amount
15
+ ) external;
16
+ }
17
+
18
+ abstract contract ERC20Permit is IERC20PermitUpgradeable, EIP712Upgradeable {
19
+ mapping(address => uint256) private _nonces;
20
+
21
+ // solhint-disable-next-line var-name-mixedcase
22
+ bytes32 private _PERMIT_TYPEHASH;
23
+
24
+ /**
25
+ * @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `"1"`.
26
+ *
27
+ * It's a good idea to use the same `name` that is defined as the ERC20 token name.
28
+ */
29
+ function __ERC20Permit_init(string memory name) internal onlyInitializing {
30
+ __EIP712_init_unchained(name, "1");
31
+ __ERC20Permit_init_unchained(name);
32
+ }
33
+
34
+ function __ERC20Permit_init_unchained(string memory name)
35
+ internal
36
+ onlyInitializing
37
+ {
38
+ _PERMIT_TYPEHASH = keccak256(
39
+ "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
40
+ );
41
+ }
42
+
43
+ /**
44
+ * @dev See {IERC20Permit-permit}.
45
+ */
46
+ function permit(
47
+ address owner,
48
+ address spender,
49
+ uint256 value,
50
+ uint256 deadline,
51
+ uint8 v,
52
+ bytes32 r,
53
+ bytes32 s
54
+ ) public virtual {
55
+ require(block.timestamp <= deadline, "ERC20Permit: expired deadline");
56
+
57
+ bytes32 structHash = keccak256(
58
+ abi.encode(
59
+ _PERMIT_TYPEHASH,
60
+ owner,
61
+ spender,
62
+ value,
63
+ _useNonce(owner),
64
+ deadline
65
+ )
66
+ );
67
+
68
+ bytes32 hash = _hashTypedDataV4(structHash);
69
+
70
+ address signer = ECDSAUpgradeable.recover(hash, v, r, s);
71
+ require(signer == owner, "ERC20Permit: invalid signature");
72
+
73
+ SelfApprove(address(this)).selfApproveFor(owner, spender, value);
74
+ }
75
+
76
+ /**
77
+ * @dev See {IERC20Permit-nonces}.
78
+ */
79
+ function nonces(address owner) public view virtual returns (uint256) {
80
+ return _nonces[owner];
81
+ }
82
+
83
+ /**
84
+ * @dev See {IERC20Permit-DOMAIN_SEPARATOR}.
85
+ */
86
+ // solhint-disable-next-line func-name-mixedcase
87
+ function DOMAIN_SEPARATOR() external view returns (bytes32) {
88
+ return _domainSeparatorV4();
89
+ }
90
+
91
+ /**
92
+ * @dev "Consume a nonce": return the current value and increment.
93
+ *
94
+ * _Available since v4.1._
95
+ */
96
+
97
+ function _useNonce(address owner) internal virtual returns (uint256 current) {
98
+ current = _nonces[owner];
99
+ _nonces[owner]++;
100
+ }
101
+ }