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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (441) hide show
  1. package/artifacts/abis/BulkWhitelist.min.json +1 -0
  2. package/artifacts/abis/CompoundVotingMachine.min.json +1 -1
  3. package/artifacts/abis/DistributionHelper.min.json +1 -1
  4. package/artifacts/abis/DistributionHelperTest.min.json +1 -1
  5. package/artifacts/abis/DistributionHelperTestHelper.min.json +1 -1
  6. package/artifacts/abis/EternalStorage.min.json +1 -0
  7. package/artifacts/abis/FuseOldBridgeKill.min.json +1 -0
  8. package/artifacts/abis/FuseStakingV3.min.json +1 -1
  9. package/artifacts/abis/GoodFundManager.min.json +1 -1
  10. package/artifacts/abis/GoodFundManagerTest.min.json +1 -1
  11. package/artifacts/abis/GoodMarketMaker.min.json +1 -1
  12. package/artifacts/abis/GoodReserveCDai.min.json +1 -1
  13. package/artifacts/abis/IQuoterV2.min.json +1 -1
  14. package/artifacts/abis/ISwapRouter.min.json +1 -1
  15. package/artifacts/abis/IUpgradeabilityOwnerStorage.min.json +1 -0
  16. package/artifacts/abis/Initializable.min.json +1 -0
  17. package/artifacts/abis/InvitesV2.min.json +1 -1
  18. package/artifacts/abis/LastauthReduction.min.json +1 -0
  19. package/artifacts/abis/OneTimeReward.min.json +1 -0
  20. package/artifacts/abis/Ownable.min.json +1 -0
  21. package/artifacts/abis/ReserveRestore.min.json +1 -0
  22. package/artifacts/abis/Upgradeable.min.json +1 -0
  23. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  24. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  25. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  26. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  27. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  28. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  32. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  33. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  34. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  35. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  36. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  37. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  38. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  39. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  40. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +1 -1
  41. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  42. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  43. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  44. package/artifacts/contracts/Interfaces.sol/IQuoterV2.dbg.json +4 -0
  45. package/artifacts/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/IQuoterV2.json +1 -1
  46. package/artifacts/contracts/Interfaces.sol/ISwapRouter.dbg.json +4 -0
  47. package/artifacts/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/ISwapRouter.json +1 -1
  48. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  49. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  50. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  51. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  52. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  53. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  54. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  55. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  56. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
  57. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.json +2 -2
  58. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  59. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.json +2 -2
  60. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
  61. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.json +2 -2
  62. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  63. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +2 -2
  64. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  65. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +20 -2
  66. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  67. package/artifacts/contracts/governance/GReputation.sol/GReputation.json +2 -2
  68. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  69. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +2 -2
  70. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +1 -1
  71. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +1 -1
  72. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  73. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  74. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.json +2 -2
  75. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  76. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  77. package/artifacts/contracts/governance/Reputation.sol/Reputation.json +2 -2
  78. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  79. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +2 -2
  80. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +1 -1
  81. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +2 -2
  82. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
  83. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.json +2 -2
  84. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  85. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.json +2 -2
  86. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
  87. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.json +15 -2
  88. package/artifacts/contracts/invite/OneTimeReward.sol/OneTimeReward.dbg.json +4 -0
  89. package/artifacts/contracts/invite/OneTimeReward.sol/OneTimeReward.json +291 -0
  90. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  91. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  92. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  93. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  94. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  95. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
  96. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  97. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
  98. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.json +2 -2
  99. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
  100. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.json +21 -2
  101. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
  102. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +21 -2
  103. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  104. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +1 -1
  105. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  106. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  107. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +2 -2
  108. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  109. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.json +2 -2
  110. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  111. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +21 -2
  112. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +1 -1
  113. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.json +2 -2
  114. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  115. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  116. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  117. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  118. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.json +2 -2
  119. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  120. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  121. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +2 -2
  122. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  123. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
  124. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +1 -1
  125. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  126. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  127. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  128. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.json +2 -2
  129. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  130. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  131. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +2 -2
  132. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  133. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +2 -2
  134. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  135. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +2 -2
  136. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  137. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +2 -2
  138. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  139. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  140. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  141. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  142. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  143. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  144. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  145. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  146. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  147. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +21 -2
  148. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  149. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +2 -2
  150. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  151. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +6 -6
  152. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  153. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  154. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +3 -3
  155. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  156. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.json +2 -2
  157. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  158. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.json +2 -2
  159. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  160. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +2 -2
  161. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  162. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +7 -2
  163. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  164. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  165. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  166. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +21 -2
  167. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  168. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  169. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  170. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.json +2 -2
  171. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  172. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +2 -2
  173. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  174. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +2 -2
  175. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  176. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +2 -2
  177. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  178. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +2 -2
  179. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  180. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +2 -2
  181. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  182. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +2 -2
  183. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  184. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  185. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +1 -1
  186. package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +1 -1
  187. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +1 -1
  188. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +1 -1
  189. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.json +2 -2
  190. package/artifacts/contracts/token/IFeesFormula.sol/IFeesFormula.dbg.json +1 -1
  191. package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.dbg.json +1 -1
  192. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +1 -1
  193. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +1 -1
  194. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +1 -1
  195. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +1 -1
  196. package/artifacts/contracts/token/superfluid/ISuperToken.sol/ISuperToken.dbg.json +1 -1
  197. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +1 -1
  198. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +2 -2
  199. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +1 -1
  200. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +1 -1
  201. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +1 -1
  202. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +1 -1
  203. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +1 -1
  204. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +1 -1
  205. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  206. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +2 -2
  207. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.dbg.json +1 -1
  208. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.json +2 -2
  209. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  210. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.json +2 -2
  211. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
  212. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.json +2 -2
  213. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  214. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  215. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.json +2 -2
  216. package/artifacts/contracts/utils/BulkWhitelist.sol/BulkWhitelist.dbg.json +4 -0
  217. package/artifacts/contracts/utils/BulkWhitelist.sol/BulkWhitelist.json +67 -0
  218. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +1 -1
  219. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.json +2 -2
  220. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.dbg.json +1 -1
  221. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.json +2 -2
  222. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.dbg.json +1 -1
  223. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.json +2 -2
  224. package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.dbg.json +1 -1
  225. package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.json +2 -2
  226. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  227. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.json +2 -2
  228. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  229. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.json +2 -2
  230. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  231. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  232. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/EternalStorage.dbg.json +4 -0
  233. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/EternalStorage.json +10 -0
  234. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill.dbg.json +4 -0
  235. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill.json +31 -0
  236. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage.dbg.json +4 -0
  237. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage.json +24 -0
  238. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Initializable.dbg.json +4 -0
  239. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Initializable.json +24 -0
  240. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Ownable.dbg.json +4 -0
  241. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Ownable.json +56 -0
  242. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Upgradeable.dbg.json +4 -0
  243. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Upgradeable.json +10 -0
  244. package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.dbg.json +1 -1
  245. package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.json +2 -2
  246. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  247. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +2 -2
  248. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  249. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  250. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  251. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +2 -2
  252. package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.dbg.json +1 -1
  253. package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.json +2 -2
  254. package/artifacts/contracts/utils/LastauthReduction.sol/LastauthReduction.dbg.json +4 -0
  255. package/artifacts/contracts/utils/LastauthReduction.sol/LastauthReduction.json +81 -0
  256. package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
  257. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  258. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.json +2 -2
  259. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  260. package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.dbg.json +1 -1
  261. package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.json +2 -2
  262. package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.dbg.json +1 -1
  263. package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.json +2 -2
  264. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  265. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  266. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.json +2 -2
  267. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  268. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.json +2 -2
  269. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  270. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.json +2 -2
  271. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  272. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.json +2 -2
  273. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  274. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  275. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  276. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.json +2 -2
  277. package/artifacts/contracts/utils/ReserveRestore.sol/ReserveRestore.dbg.json +4 -0
  278. package/artifacts/contracts/utils/ReserveRestore.sol/ReserveRestore.json +91 -0
  279. package/contracts/Interfaces.sol +122 -0
  280. package/contracts/governance/CompoundVotingMachine.sol +26 -11
  281. package/contracts/governance/StakersDistribution.sol +13 -13
  282. package/contracts/invite/InvitesV2.sol +60 -43
  283. package/contracts/invite/OneTimeReward.sol +87 -0
  284. package/contracts/reserve/DistributionHelper.sol +29 -10
  285. package/contracts/reserve/ExchangeHelper.sol +16 -7
  286. package/contracts/reserve/GoodMarketMaker.sol +43 -53
  287. package/contracts/reserve/GoodReserveCDai.sol +44 -16
  288. package/contracts/staking/FuseStakingV3.sol +4 -2
  289. package/contracts/staking/GoodFundManager.sol +44 -4
  290. package/contracts/utils/BulkWhitelist.sol +51 -0
  291. package/contracts/utils/BuyGDClone.sol +0 -122
  292. package/contracts/utils/FuseOldBridgeKill.sol +123 -0
  293. package/contracts/utils/LastauthReduction.sol +92 -0
  294. package/contracts/utils/ReserveRestore.sol +157 -0
  295. package/dist/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +2 -2
  296. package/dist/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +2 -2
  297. package/dist/test-sdk/deploySuperGoodDollar.js +1 -1
  298. package/package.json +19 -20
  299. package/releases/deployment.json +612 -599
  300. package/scripts/analytics/activeStakers.ts +25 -0
  301. package/scripts/analytics/activeUsersCount.ts +80 -26
  302. package/scripts/analytics/activeWalletsStats.ts +155 -22
  303. package/scripts/analytics/checkBridgeBalances.ts +442 -0
  304. package/scripts/deployFullDAO.ts +6 -4
  305. package/scripts/fv.ts +148 -35
  306. package/scripts/multichain-deploy/helpers.ts +10 -8
  307. package/scripts/proposals/identityAuthPeriod.ts +229 -0
  308. package/scripts/proposals/reserveRestore.ts +429 -0
  309. package/scripts/test/localOldDaoDeploy.ts +2 -1
  310. package/scripts/utils.ts +28 -16
  311. package/test/governance/CompoundVotingMachine.daoscheme.ts +3 -0
  312. package/test/governance/CompoundVotingMachine.guardian.test.ts +76 -21
  313. package/test/governance/CompoundVotingMachine.state.test.ts +31 -28
  314. package/test/governance/StakersDistribution.test.ts +79 -5
  315. package/test/helpers.ts +9 -0
  316. package/test/invite/InvitesV2.test.ts +165 -271
  317. package/test/reserve/DistributionHelper.test.ts +10 -10
  318. package/test/reserve/GoodMarketMaker.test.ts +75 -26
  319. package/test/reserve/GoodReserveCDai.test.ts +2 -1
  320. package/test/staking/FuseStaking.test.ts +23 -54
  321. package/test/staking/StakingRewards.test.ts +106 -29
  322. package/test/utils/ProtocolUpgrade.test.ts +1 -0
  323. package/tsconfig.json +1 -1
  324. package/types/@openzeppelin/contracts/access/Ownable.ts +175 -0
  325. package/types/@openzeppelin/contracts/access/index.ts +1 -0
  326. package/types/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/IQuoterV2.ts +1 -1
  327. package/types/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/ISwapRouter.ts +1 -1
  328. package/types/contracts/Interfaces.sol/index.ts +2 -0
  329. package/types/contracts/governance/CompoundVotingMachine.ts +44 -3
  330. package/types/contracts/invite/InvitesV2.ts +32 -0
  331. package/types/contracts/invite/OneTimeReward.ts +521 -0
  332. package/types/contracts/invite/index.ts +1 -0
  333. package/types/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.ts +35 -0
  334. package/types/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.ts +35 -0
  335. package/types/contracts/mocks/GoodFundManagerTest.ts +35 -0
  336. package/types/contracts/reserve/DistributionHelper.ts +35 -0
  337. package/types/contracts/reserve/GoodMarketMaker.ts +3 -3
  338. package/types/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.ts +5 -5
  339. package/types/contracts/staking/FuseStakingV3.sol/FuseStakingV3.ts +7 -2
  340. package/types/contracts/staking/GoodFundManager.ts +35 -0
  341. package/types/contracts/utils/BulkWhitelist.ts +153 -0
  342. package/types/contracts/utils/BuyGDClone.sol/index.ts +0 -2
  343. package/types/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill.ts +108 -0
  344. package/types/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage.ts +89 -0
  345. package/types/contracts/utils/FuseOldBridgeKill.sol/Initializable.ts +87 -0
  346. package/types/contracts/utils/FuseOldBridgeKill.sol/Ownable.ts +148 -0
  347. package/types/contracts/utils/FuseOldBridgeKill.sol/index.ts +7 -0
  348. package/types/contracts/utils/LastauthReduction.ts +168 -0
  349. package/types/contracts/utils/ReserveRestore.ts +201 -0
  350. package/types/contracts/utils/index.ts +5 -0
  351. package/types/factories/@openzeppelin/contracts/access/Ownable__factory.ts +78 -0
  352. package/types/factories/@openzeppelin/contracts/access/index.ts +1 -0
  353. package/types/factories/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/IQuoterV2__factory.ts +1 -1
  354. package/types/factories/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/ISwapRouter__factory.ts +1 -1
  355. package/types/factories/contracts/Interfaces.sol/index.ts +2 -0
  356. package/types/factories/contracts/fuseFaucet/Faucet__factory.ts +1 -1
  357. package/types/factories/contracts/fuseFaucet/FuseFaucetV2__factory.ts +1 -1
  358. package/types/factories/contracts/fuseFaucet/FuseFaucet__factory.ts +1 -1
  359. package/types/factories/contracts/governance/ClaimersDistribution__factory.ts +1 -1
  360. package/types/factories/contracts/governance/CompoundVotingMachine__factory.ts +19 -1
  361. package/types/factories/contracts/governance/GReputation__factory.ts +1 -1
  362. package/types/factories/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking__factory.ts +1 -1
  363. package/types/factories/contracts/governance/GovernanceStaking__factory.ts +1 -1
  364. package/types/factories/contracts/governance/Reputation__factory.ts +1 -1
  365. package/types/factories/contracts/governance/StakersDistribution__factory.ts +1 -1
  366. package/types/factories/contracts/identity/IdentityV2__factory.ts +1 -1
  367. package/types/factories/contracts/invite/InvitesFuseV2__factory.ts +1 -1
  368. package/types/factories/contracts/invite/InvitesV1__factory.ts +1 -1
  369. package/types/factories/contracts/invite/InvitesV2__factory.ts +14 -1
  370. package/types/factories/contracts/invite/OneTimeReward__factory.ts +361 -0
  371. package/types/factories/contracts/invite/index.ts +1 -0
  372. package/types/factories/contracts/mocks/DistributionBridgeMock__factory.ts +1 -1
  373. package/types/factories/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper__factory.ts +20 -1
  374. package/types/factories/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest__factory.ts +20 -1
  375. package/types/factories/contracts/mocks/GoodCompoundStakingTest__factory.ts +1 -1
  376. package/types/factories/contracts/mocks/GoodDollarStakingMock__factory.ts +1 -1
  377. package/types/factories/contracts/mocks/GoodFundManagerTest__factory.ts +20 -1
  378. package/types/factories/contracts/mocks/IdentityMock__factory.ts +1 -1
  379. package/types/factories/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock__factory.ts +1 -1
  380. package/types/factories/contracts/mocks/OverMintTester.sol/OverMintTester__factory.ts +1 -1
  381. package/types/factories/contracts/mocks/OverMintTesterRegularStake__factory.ts +1 -1
  382. package/types/factories/contracts/mocks/SwapHelperTest__factory.ts +1 -1
  383. package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock2__factory.ts +1 -1
  384. package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock3__factory.ts +1 -1
  385. package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock4__factory.ts +1 -1
  386. package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock__factory.ts +1 -1
  387. package/types/factories/contracts/reserve/DistributionHelper__factory.ts +20 -1
  388. package/types/factories/contracts/reserve/ExchangeHelper__factory.ts +1 -1
  389. package/types/factories/contracts/reserve/GoodMarketMaker__factory.ts +5 -5
  390. package/types/factories/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai__factory.ts +2 -2
  391. package/types/factories/contracts/staking/BaseShareFieldV2__factory.ts +1 -1
  392. package/types/factories/contracts/staking/BaseShareField__factory.ts +1 -1
  393. package/types/factories/contracts/staking/DonationsStaking__factory.ts +1 -1
  394. package/types/factories/contracts/staking/FuseStakingV3.sol/FuseStakingV3__factory.ts +6 -1
  395. package/types/factories/contracts/staking/GoodFundManager__factory.ts +20 -1
  396. package/types/factories/contracts/staking/UniswapV2SwapHelper__factory.ts +1 -1
  397. package/types/factories/contracts/staking/aave/AaveStakingFactory__factory.ts +1 -1
  398. package/types/factories/contracts/staking/aave/GoodAaveStakingV2__factory.ts +1 -1
  399. package/types/factories/contracts/staking/aave/GoodAaveStaking__factory.ts +1 -1
  400. package/types/factories/contracts/staking/compound/CompoundStakingFactory__factory.ts +1 -1
  401. package/types/factories/contracts/staking/compound/GoodCompoundStakingV2__factory.ts +1 -1
  402. package/types/factories/contracts/staking/compound/GoodCompoundStaking__factory.ts +1 -1
  403. package/types/factories/contracts/token/GoodDollar__factory.ts +1 -1
  404. package/types/factories/contracts/token/superfluid/SuperGoodDollar__factory.ts +1 -1
  405. package/types/factories/contracts/ubi/UBISchemeV2__factory.ts +1 -1
  406. package/types/factories/contracts/ubi/UBIScheme__factory.ts +1 -1
  407. package/types/factories/contracts/utils/AdminWalletFuse__factory.ts +1 -1
  408. package/types/factories/contracts/utils/AdminWallet__factory.ts +1 -1
  409. package/types/factories/contracts/utils/BulkWhitelist__factory.ts +123 -0
  410. package/types/factories/contracts/utils/BuyAndBridgeHelper__factory.ts +1 -1
  411. package/types/factories/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory__factory.ts +1 -1
  412. package/types/factories/contracts/utils/BuyGDClone.sol/BuyGDClone__factory.ts +1 -1
  413. package/types/factories/contracts/utils/BuyGDClone.sol/DonateGDClone__factory.ts +1 -1
  414. package/types/factories/contracts/utils/BuyGDClone.sol/index.ts +0 -2
  415. package/types/factories/contracts/utils/DAOContract__factory.ts +1 -1
  416. package/types/factories/contracts/utils/DAOUpgradeableContract__factory.ts +1 -1
  417. package/types/factories/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill__factory.ts +82 -0
  418. package/types/factories/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage__factory.ts +43 -0
  419. package/types/factories/contracts/utils/FuseOldBridgeKill.sol/Initializable__factory.ts +75 -0
  420. package/types/factories/contracts/utils/FuseOldBridgeKill.sol/Ownable__factory.ts +105 -0
  421. package/types/factories/contracts/utils/FuseOldBridgeKill.sol/index.ts +7 -0
  422. package/types/factories/contracts/utils/GDFaucet__factory.ts +1 -1
  423. package/types/factories/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper__factory.ts +1 -1
  424. package/types/factories/contracts/utils/IdentityFix__factory.ts +1 -1
  425. package/types/factories/contracts/utils/LastauthReduction__factory.ts +134 -0
  426. package/types/factories/contracts/utils/MultichainBridgeHelper__factory.ts +1 -1
  427. package/types/factories/contracts/utils/OneTimePaymentsV2__factory.ts +1 -1
  428. package/types/factories/contracts/utils/OneTimePayments__factory.ts +1 -1
  429. package/types/factories/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade__factory.ts +1 -1
  430. package/types/factories/contracts/utils/ProtocolUpgradeFuseRecover__factory.ts +1 -1
  431. package/types/factories/contracts/utils/ProtocolUpgradeFuse__factory.ts +1 -1
  432. package/types/factories/contracts/utils/ProtocolUpgradeRecover__factory.ts +1 -1
  433. package/types/factories/contracts/utils/ReputationTestHelper__factory.ts +1 -1
  434. package/types/factories/contracts/utils/ReserveRestore__factory.ts +144 -0
  435. package/types/factories/contracts/utils/index.ts +4 -0
  436. package/types/hardhat.d.ts +97 -16
  437. package/types/index.ts +18 -4
  438. package/artifacts/contracts/utils/BuyGDClone.sol/IQuoterV2.dbg.json +0 -4
  439. package/artifacts/contracts/utils/BuyGDClone.sol/ISwapRouter.dbg.json +0 -4
  440. package/contracts/utils/.DS_Store +0 -0
  441. package/yarn.lock +0 -23715
@@ -52,6 +52,7 @@ contract StakersDistribution is
52
52
  ) external {
53
53
  _onlyAvatar();
54
54
  monthlyReputationDistribution = newMonthlyReputationDistribution;
55
+ _updateRewards();
55
56
  }
56
57
 
57
58
  /**
@@ -174,9 +175,10 @@ contract StakersDistribution is
174
175
  _claimReputation(_staker, _stakingContracts);
175
176
  }
176
177
 
177
- function _claimReputation(address _staker, address[] memory _stakingContracts)
178
- internal
179
- {
178
+ function _claimReputation(
179
+ address _staker,
180
+ address[] memory _stakingContracts
181
+ ) internal {
180
182
  uint256 totalRep;
181
183
  GoodFundManager gfm = GoodFundManager(
182
184
  nameService.getAddress("FUND_MANAGER")
@@ -206,11 +208,10 @@ contract StakersDistribution is
206
208
  * @param _user the user to check rewards for
207
209
  * @return reputation rewards pending for user
208
210
  */
209
- function getUserPendingRewards(address[] memory _contracts, address _user)
210
- public
211
- view
212
- returns (uint256)
213
- {
211
+ function getUserPendingRewards(
212
+ address[] memory _contracts,
213
+ address _user
214
+ ) public view returns (uint256) {
214
215
  uint256 pending;
215
216
  for (uint256 i = 0; i < _contracts.length; i++) {
216
217
  (
@@ -239,11 +240,10 @@ contract StakersDistribution is
239
240
  * @param _user account to get rewards status for
240
241
  * @return (minted, pending) in GDAO 18 decimals
241
242
  */
242
- function getUserMintedAndPending(address[] memory _contracts, address _user)
243
- public
244
- view
245
- returns (uint256, uint256)
246
- {
243
+ function getUserMintedAndPending(
244
+ address[] memory _contracts,
245
+ address _user
246
+ ) public view returns (uint256, uint256) {
247
247
  uint256 pending = getUserPendingRewards(_contracts, _user);
248
248
  uint256 minted;
249
249
  for (uint256 i = 0; i < _contracts.length; i++) {
@@ -57,6 +57,8 @@ contract InvitesV2 is DAOUpgradeableContract {
57
57
 
58
58
  bool public levelExpirationEnabled;
59
59
 
60
+ bytes32 private campaignCode;
61
+
60
62
  event InviteeJoined(address indexed inviter, address indexed invitee);
61
63
  event InviterBounty(
62
64
  address indexed inviter,
@@ -125,8 +127,9 @@ contract InvitesV2 is DAOUpgradeableContract {
125
127
  address inviter = codeToUser[_inviterCode];
126
128
  //allow user to set inviter if doesnt have one
127
129
  require(
128
- user.inviteCode == 0x0 ||
129
- (user.invitedBy == address(0) && inviter != address(0)),
130
+ !user.bountyPaid &&
131
+ (user.inviteCode == 0x0 ||
132
+ (user.invitedBy == address(0) && inviter != address(0))),
130
133
  "user already joined"
131
134
  );
132
135
  if (user.inviteCode == 0x0) {
@@ -138,10 +141,15 @@ contract InvitesV2 is DAOUpgradeableContract {
138
141
  if (inviter != address(0)) {
139
142
  require(inviter != msg.sender, "self invite");
140
143
  user.invitedBy = inviter;
141
- users[inviter].invitees.push(msg.sender);
142
- users[inviter].pending.push(msg.sender);
143
144
  stats.totalInvited += 1;
144
- user.bountyAtJoin = levels[users[inviter].level].bounty;
145
+ /** support special campaign code without inviter */
146
+ if (inviter == address(this)) {
147
+ user.bountyAtJoin = levels[0].bounty;
148
+ } else {
149
+ users[inviter].invitees.push(msg.sender);
150
+ users[inviter].pending.push(msg.sender);
151
+ user.bountyAtJoin = levels[users[inviter].level].bounty;
152
+ }
145
153
  }
146
154
 
147
155
  if (canCollectBountyFor(msg.sender)) {
@@ -165,19 +173,15 @@ contract InvitesV2 is DAOUpgradeableContract {
165
173
 
166
174
  function canCollectBountyFor(address _invitee) public view returns (bool) {
167
175
  address invitedBy = users[_invitee].invitedBy;
168
- uint256 daysToComplete = levels[users[invitedBy].level].daysToComplete;
169
- bool isLevelExpired = levelExpirationEnabled == true &&
170
- daysToComplete > 0 &&
171
- daysToComplete <
172
- (users[_invitee].joinedAt - users[invitedBy].levelStarted) / 1 days;
173
176
 
174
177
  return
175
- invitedBy != address(0) &&
178
+ users[_invitee].bountyAtJoin > 0 &&
176
179
  !users[_invitee].bountyPaid &&
177
180
  getIdentity().isWhitelisted(_invitee) &&
178
- getIdentity().isWhitelisted(invitedBy) &&
179
- _whitelistedOnChainOrDefault(_invitee) == _chainId() &&
180
- isLevelExpired == false;
181
+ (invitedBy == address(0) ||
182
+ invitedBy == address(this) ||
183
+ getIdentity().isWhitelisted(invitedBy)) &&
184
+ _whitelistedOnChainOrDefault(_invitee) == _chainId();
181
185
  }
182
186
 
183
187
  function getInvitees(
@@ -237,44 +241,51 @@ contract InvitesV2 is DAOUpgradeableContract {
237
241
  bool isSingleBounty
238
242
  ) internal returns (uint256 bounty) {
239
243
  address invitedBy = users[_invitee].invitedBy;
240
- uint256 joinedAt = users[_invitee].joinedAt;
241
- Level memory level = levels[users[invitedBy].level];
242
244
  uint256 bountyToPay = users[_invitee].bountyAtJoin;
245
+ bool earnedLevel = false;
243
246
 
244
- //hardcoded for users invited before the bountyAtJoin change
245
- if (bountyToPay == 0) {
246
- uint precision = 10 ** goodDollar.decimals();
247
- bountyToPay = joinedAt > 1687878272 ? 1000 * precision : 500 * precision;
248
- }
247
+ if (invitedBy != address(this) && invitedBy != address(0)) {
248
+ uint256 joinedAt = users[_invitee].joinedAt;
249
+ Level memory level = levels[users[invitedBy].level];
250
+
251
+ //hardcoded for users invited before the bountyAtJoin change
252
+ if (bountyToPay == 0) {
253
+ uint precision = 10 ** goodDollar.decimals();
254
+ bountyToPay = joinedAt > 1687878272
255
+ ? 1000 * precision
256
+ : 500 * precision;
257
+ }
258
+
259
+ // if inviter level is now higher than when invitee joined or the base level has changed
260
+ // we give level bounty if it is higher otherwise the original bounty at the time the user registered
261
+
262
+ bountyToPay = level.bounty > bountyToPay ? level.bounty : bountyToPay;
249
263
 
250
- // if inviter level is now higher than when invitee joined or the base level has changed
251
- // we give level bounty if it is higher otherwise the original bounty at the time the user registered
264
+ bool isLevelExpired = level.daysToComplete > 0 &&
265
+ joinedAt > users[invitedBy].levelStarted && //prevent overflow in subtraction
266
+ level.daysToComplete <
267
+ (joinedAt - users[invitedBy].levelStarted) / 1 days; //how long after level started did invitee join
252
268
 
253
- bountyToPay = level.bounty > bountyToPay ? level.bounty : bountyToPay;
269
+ users[invitedBy].totalApprovedInvites += 1;
270
+ users[invitedBy].totalEarned += bountyToPay;
254
271
 
255
- bool isLevelExpired = level.daysToComplete > 0 &&
256
- joinedAt > users[invitedBy].levelStarted && //prevent overflow in subtraction
257
- level.daysToComplete <
258
- (joinedAt - users[invitedBy].levelStarted) / 1 days; //how long after level started did invitee join
272
+ if (
273
+ level.toNext > 0 &&
274
+ users[invitedBy].totalApprovedInvites >= level.toNext &&
275
+ isLevelExpired == false
276
+ ) {
277
+ users[invitedBy].level += 1;
278
+ users[invitedBy].levelStarted = block.timestamp;
279
+ earnedLevel = true;
280
+ }
281
+
282
+ if (isSingleBounty) goodDollar.transfer(invitedBy, bountyToPay);
283
+ }
259
284
 
260
285
  users[_invitee].bountyPaid = true;
261
- users[invitedBy].totalApprovedInvites += 1;
262
- users[invitedBy].totalEarned += bountyToPay;
263
286
  stats.totalApprovedInvites += 1;
264
287
  stats.totalBountiesPaid += bountyToPay;
265
288
 
266
- bool earnedLevel = false;
267
- if (
268
- level.toNext > 0 &&
269
- users[invitedBy].totalApprovedInvites >= level.toNext &&
270
- isLevelExpired == false
271
- ) {
272
- users[invitedBy].level += 1;
273
- users[invitedBy].levelStarted = block.timestamp;
274
- earnedLevel = true;
275
- }
276
-
277
- if (isSingleBounty) goodDollar.transfer(invitedBy, bountyToPay);
278
289
  goodDollar.transfer(_invitee, bountyToPay / 2); //pay invitee half the bounty
279
290
  emit InviterBounty(
280
291
  invitedBy,
@@ -322,6 +333,11 @@ contract InvitesV2 is DAOUpgradeableContract {
322
333
  active = _active;
323
334
  }
324
335
 
336
+ function setCampaignCode(bytes32 _code) public ownerOrAvatar {
337
+ campaignCode = _code;
338
+ codeToUser[campaignCode] = address(this);
339
+ }
340
+
325
341
  function end() public ownerOrAvatar isActive {
326
342
  uint256 gdBalance = goodDollar.balanceOf(address(this));
327
343
  goodDollar.transfer(msg.sender, gdBalance);
@@ -346,8 +362,9 @@ contract InvitesV2 is DAOUpgradeableContract {
346
362
  * 2 uses uups upgradeable - not compatible upgrade for v1
347
363
  * 2.1 prevent multichain claims
348
364
  * 2.2 record bounty at join time
365
+ * 2.3 support campaignCode
349
366
  */
350
367
  function version() public pure returns (string memory) {
351
- return "2.2";
368
+ return "2.3";
352
369
  }
353
370
  }
@@ -0,0 +1,87 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.0;
3
+
4
+ import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
5
+ import "@openzeppelin/contracts/access/Ownable.sol";
6
+
7
+ import "../Interfaces.sol";
8
+ import "../utils/NameService.sol";
9
+ import "../utils/DAOUpgradeableContract.sol";
10
+
11
+ contract OneTimeReward is Ownable, DAOContract {
12
+ bool public isActive;
13
+ uint public rewardAmount;
14
+ mapping(address => bool) public claimed;
15
+
16
+ event RewardClaimed(address indexed user, uint amount);
17
+
18
+ constructor(uint256 _rewardAmount, INameService _nameService) {
19
+ rewardAmount = _rewardAmount;
20
+ isActive = true;
21
+ setDAO(_nameService);
22
+ }
23
+
24
+ function getIdentity() public view returns (IIdentityV2) {
25
+ return IIdentityV2(nameService.getAddress("IDENTITY"));
26
+ }
27
+
28
+ function updateSettings(
29
+ bool _isActive,
30
+ uint _rewardAmount
31
+ ) external onlyOwner {
32
+ isActive = _isActive;
33
+ rewardAmount = _rewardAmount;
34
+ }
35
+
36
+ function checkActiveAndBalance() public view returns (bool) {
37
+ if (!isActive) {
38
+ return false;
39
+ }
40
+
41
+ if (nativeToken().balanceOf(address(this)) < rewardAmount) {
42
+ return false;
43
+ }
44
+
45
+ return true;
46
+ }
47
+
48
+ function checkCanClaimReward(address _user) public view returns (bool) {
49
+ address whitelistedRoot = getIdentity().getWhitelistedRoot(_user);
50
+ return canClaimReward(whitelistedRoot);
51
+ }
52
+
53
+ function canClaimReward(
54
+ address whitelistedRoot
55
+ ) internal view returns (bool) {
56
+ if (checkActiveAndBalance() == false) {
57
+ return false;
58
+ }
59
+
60
+ if (whitelistedRoot == address(0)) {
61
+ return false;
62
+ }
63
+
64
+ if (claimed[whitelistedRoot]) {
65
+ return false;
66
+ }
67
+
68
+ return true;
69
+ }
70
+
71
+ function claimReward(address _user) public {
72
+ address whitelistedRoot = getIdentity().getWhitelistedRoot(_user);
73
+ require(canClaimReward(whitelistedRoot), "User cannot claim reward");
74
+ claimed[whitelistedRoot] = true;
75
+
76
+ nativeToken().transfer(_user, rewardAmount);
77
+
78
+ emit RewardClaimed(_user, rewardAmount);
79
+ }
80
+
81
+ function withdrawAll(address _token) external onlyOwner {
82
+ uint balance = IERC20(_token).balanceOf(address(this));
83
+ require(balance > 0, "No tokens to withdraw");
84
+
85
+ IERC20(_token).transfer(msg.sender, balance);
86
+ }
87
+ }
@@ -44,7 +44,7 @@ contract DistributionHelper is
44
44
  0x467719aD09025FcC6cF6F8311755809d45a5E5f3;
45
45
 
46
46
  enum TransferType {
47
- FuseBridge,
47
+ DEPRECATED_FuseBridge,
48
48
  LayerZeroBridge,
49
49
  AxelarBridge,
50
50
  Contract
@@ -182,10 +182,11 @@ contract DistributionHelper is
182
182
  if (toDistribute == 0) return;
183
183
 
184
184
  if (address(this).balance < feeSettings.minBalanceForFees) {
185
- uint256 gdToSellfForFee = (toDistribute *
185
+ uint256 gdToSellForFee = (toDistribute *
186
186
  feeSettings.percentageToSellForFee) / 100;
187
- toDistribute -= gdToSellfForFee;
188
- buyNativeWithGD(gdToSellfForFee);
187
+ gdToSellForFee = calcGDToSell(gdToSellForFee);
188
+ toDistribute -= gdToSellForFee;
189
+ buyNativeWithGD(gdToSellForFee);
189
190
  }
190
191
 
191
192
  uint256 totalDistributed;
@@ -234,12 +235,8 @@ contract DistributionHelper is
234
235
  DistributionRecipient storage _recipient,
235
236
  uint256 _amount
236
237
  ) internal {
237
- if (_recipient.transferType == TransferType.FuseBridge) {
238
- nativeToken().transferAndCall(
239
- fuseBridge,
240
- _amount,
241
- abi.encodePacked(_recipient.addr)
242
- );
238
+ if (_recipient.transferType == TransferType.DEPRECATED_FuseBridge) {
239
+ revert("DEPRECATED");
243
240
  } else if (_recipient.transferType == TransferType.LayerZeroBridge) {
244
241
  nativeToken().approve(address(mpbBridge), _amount);
245
242
  (uint256 lzFee, ) = ILayerZeroFeeEstimator(address(mpbBridge))
@@ -276,6 +273,28 @@ contract DistributionHelper is
276
273
  }
277
274
  }
278
275
 
276
+ function calcGDToSell(
277
+ uint256 maxAmountToSell
278
+ ) public view returns (uint256 gdToSell) {
279
+ uint24[] memory fees = new uint24[](1);
280
+ fees[0] = 500;
281
+
282
+ uint256 ethToBuy = feeSettings.minBalanceForFees * 3;
283
+ (uint256 ethValueInUSDC, ) = STATIC_ORACLE
284
+ .quoteSpecificFeeTiersWithTimePeriod(
285
+ uint128(ethToBuy),
286
+ WETH_TOKEN,
287
+ USDC_TOKEN,
288
+ fees,
289
+ 60 //last 1 minute
290
+ );
291
+
292
+ uint256 gdPriceInDai = GoodReserveCDai(nameService.getAddress("RESERVE"))
293
+ .currentPriceDAI();
294
+ gdToSell = (ethValueInUSDC * 1e12 * 100) / gdPriceInDai; //* 1e12 to increase usdc to 18 decimals, mul by 100 so result is in 2 G$ 2 decimals
295
+ gdToSell = gdToSell > maxAmountToSell ? maxAmountToSell : gdToSell;
296
+ }
297
+
279
298
  function buyNativeWithGD(uint256 amountToSell) internal {
280
299
  address[] memory path = new address[](2);
281
300
  path[0] = nameService.getAddress("DAI");
@@ -5,6 +5,8 @@ import "../utils/DAOUpgradeableContract.sol";
5
5
  import "../utils/NameService.sol";
6
6
  import "./GoodReserveCDai.sol";
7
7
 
8
+ // import "hardhat/console.sol";
9
+
8
10
  contract ExchangeHelper is DAOUpgradeableContract {
9
11
  uint256 private _status;
10
12
 
@@ -78,6 +80,14 @@ contract ExchangeHelper is DAOUpgradeableContract {
78
80
  cDaiAddress = nameService.getAddress("CDAI");
79
81
  // Approve transfer to cDAI contract
80
82
  ERC20(daiAddress).approve(cDaiAddress, type(uint256).max);
83
+ address reserve = nameService.getAddress("RESERVE");
84
+ if (reserve != address(0)) {
85
+ ERC20(nameService.getAddress("GOODDOLLAR")).approve(
86
+ reserve,
87
+ type(uint256).max
88
+ );
89
+ ERC20(cDaiAddress).approve(reserve, type(uint256).max);
90
+ }
81
91
  ERC20(daiAddress).approve(
82
92
  nameService.getAddress("UNISWAP_ROUTER"),
83
93
  type(uint256).max
@@ -121,11 +131,9 @@ contract ExchangeHelper is DAOUpgradeableContract {
121
131
  require(
122
132
  ERC20(_buyPath[0]).transferFrom(
123
133
  msg.sender,
124
- address(_buyPath[0]) == cDaiAddress
125
- ? address(reserve)
126
- : address(this),
134
+ address(this),
127
135
  _tokenAmount
128
- ) == true,
136
+ ),
129
137
  "transferFrom failed, make sure you approved input token transfer"
130
138
  );
131
139
  }
@@ -191,8 +199,9 @@ contract ExchangeHelper is DAOUpgradeableContract {
191
199
  GoodReserveCDai reserve = GoodReserveCDai(
192
200
  nameService.getAddress("RESERVE")
193
201
  );
194
- IGoodDollar(nameService.getAddress("GOODDOLLAR")).burnFrom(
202
+ ERC20(nameService.getAddress("GOODDOLLAR")).transferFrom(
195
203
  msg.sender,
204
+ address(this),
196
205
  _gdAmount
197
206
  );
198
207
 
@@ -290,7 +299,6 @@ contract ExchangeHelper is DAOUpgradeableContract {
290
299
  require(cDaiResult == 0, "Minting cDai failed");
291
300
 
292
301
  uint256 cDaiInput = cDai.balanceOf(address(this)) - currCDaiBalance;
293
- cDai.transfer(address(reserve), cDaiInput);
294
302
  return reserve.buy(cDaiInput, _minReturn, _targetAddress);
295
303
  }
296
304
 
@@ -333,8 +341,9 @@ contract ExchangeHelper is DAOUpgradeableContract {
333
341
  );
334
342
  return swap;
335
343
  } else {
336
- if (isBuy)
344
+ if (isBuy) {
337
345
  ERC20(_inputPath[0]).approve(address(uniswapContract), _tokenAmount);
346
+ }
338
347
  swap = uniswapContract.swapExactTokensForTokens(
339
348
  _tokenAmount,
340
349
  isBuy ? _minDAIAmount : _minTokenReturn,
@@ -8,6 +8,8 @@ import "../DAOStackInterfaces.sol";
8
8
  import "../Interfaces.sol";
9
9
  import "../utils/DAOUpgradeableContract.sol";
10
10
 
11
+ // import "hardhat/console.sol";
12
+
11
13
  /**
12
14
  @title Dynamic reserve ratio market maker
13
15
  */
@@ -187,11 +189,10 @@ contract GoodMarketMaker is DAOUpgradeableContract, DSMath {
187
189
  * @param _tokenAmount The amount of reserve token buying with
188
190
  * @return Number of GD that should be given in exchange as calculated by the bonding curve
189
191
  */
190
- function buyReturn(ERC20 _token, uint256 _tokenAmount)
191
- public
192
- view
193
- returns (uint256)
194
- {
192
+ function buyReturn(
193
+ ERC20 _token,
194
+ uint256 _tokenAmount
195
+ ) public view returns (uint256) {
195
196
  ReserveToken memory rtoken = reserveTokens[address(_token)];
196
197
  return
197
198
  getBancor().calculatePurchaseReturn(
@@ -208,11 +209,10 @@ contract GoodMarketMaker is DAOUpgradeableContract, DSMath {
208
209
  * @param _gdAmount The amount of GD that are sold
209
210
  * @return Number of tokens that should be given in exchange as calculated by the bonding curve
210
211
  */
211
- function sellReturn(ERC20 _token, uint256 _gdAmount)
212
- public
213
- view
214
- returns (uint256)
215
- {
212
+ function sellReturn(
213
+ ERC20 _token,
214
+ uint256 _gdAmount
215
+ ) public view returns (uint256) {
216
216
  ReserveToken memory rtoken = reserveTokens[address(_token)];
217
217
  return
218
218
  getBancor().calculateSaleReturn(
@@ -264,7 +264,8 @@ contract GoodMarketMaker is DAOUpgradeableContract, DSMath {
264
264
  rtoken.gdSupply += _gdAmount;
265
265
  rtoken.reserveRatio = uint32(
266
266
  ((rtoken.reserveSupply * 1e27) /
267
- (rtoken.gdSupply * priceBeforeGdSupplyChange)) / 10**reserveDecimalsDiff
267
+ (rtoken.gdSupply * priceBeforeGdSupplyChange)) /
268
+ 10 ** reserveDecimalsDiff
268
269
  ); // Divide it decimal diff to bring it proper decimal
269
270
  }
270
271
 
@@ -317,55 +318,46 @@ contract GoodMarketMaker is DAOUpgradeableContract, DSMath {
317
318
  * @param _token The desired reserve token to have
318
319
  * @return price of GD
319
320
  */
320
- function currentPrice(ERC20 _token) public view returns (uint256) {
321
+ function currentPrice(ERC20 _token) public view returns (uint256 price) {
321
322
  ReserveToken memory rtoken = reserveTokens[address(_token)];
322
- return
323
- getBancor().calculateSaleReturn(
324
- rtoken.gdSupply,
325
- rtoken.reserveSupply,
326
- rtoken.reserveRatio,
327
- (10**decimals)
328
- );
323
+ price =
324
+ (rtoken.reserveSupply * 1e8) /
325
+ (rtoken.gdSupply * rtoken.reserveRatio); // gd precision 1e2 + reserveRatio precision 1e6 = multiply by 1e8 not to lose precision
329
326
  }
330
327
 
331
- //TODO: need real calculation and tests
332
328
  /**
333
329
  * @dev Calculates how much G$ to mint based on added token supply (from interest)
334
330
  * and on current reserve ratio, in order to keep G$ price the same at the bonding curve
335
- * formula to calculate the gd to mint: gd to mint =
336
- * addreservebalance * (gdsupply / (reservebalance * reserveratio))
331
+ * formula to calculate the gd to mint: amountToMint = reserveInterest * tokenSupply / reserveBalance
337
332
  * @param _token the reserve token
338
333
  * @param _addTokenSupply amount of token added to supply
339
- * @return how much to mint in order to keep price in bonding curve the same
334
+ * @return toMint how much to mint in order to keep price in bonding curve the same
340
335
  */
341
- function calculateMintInterest(ERC20 _token, uint256 _addTokenSupply)
342
- public
343
- view
344
- returns (uint256)
345
- {
346
- uint256 decimalsDiff = uint256(27) - decimals;
347
- //resulting amount is in RAY precision
348
- //we divide by decimalsdiff to get precision in GD (2 decimals)
349
- return
350
- ((_addTokenSupply * 1e27) / currentPrice(_token)) / (10**decimalsDiff);
336
+ function calculateMintInterest(
337
+ ERC20 _token,
338
+ uint256 _addTokenSupply
339
+ ) public view returns (uint256 toMint) {
340
+ ReserveToken memory rtoken = reserveTokens[address(_token)];
341
+
342
+ toMint = (_addTokenSupply * rtoken.gdSupply) / rtoken.reserveSupply;
351
343
  }
352
344
 
353
345
  /**
354
346
  * @dev Updates bonding curve based on _addTokenSupply and new minted amount
355
347
  * @param _token The reserve token
356
348
  * @param _addTokenSupply Amount of token added to supply
357
- * @return How much to mint in order to keep price in bonding curve the same
349
+ * @return toMint How much to mint in order to keep price in bonding curve the same
358
350
  */
359
- function mintInterest(ERC20 _token, uint256 _addTokenSupply)
360
- public
361
- returns (uint256)
362
- {
351
+ function mintInterest(
352
+ ERC20 _token,
353
+ uint256 _addTokenSupply
354
+ ) public returns (uint256 toMint) {
363
355
  _onlyReserveOrAvatar();
364
356
  _onlyActiveToken(_token);
365
357
  if (_addTokenSupply == 0) {
366
358
  return 0;
367
359
  }
368
- uint256 toMint = calculateMintInterest(_token, _addTokenSupply);
360
+ toMint = calculateMintInterest(_token, _addTokenSupply);
369
361
  ReserveToken storage reserveToken = reserveTokens[address(_token)];
370
362
  reserveToken.gdSupply += toMint;
371
363
  reserveToken.reserveSupply += _addTokenSupply;
@@ -376,24 +368,22 @@ contract GoodMarketMaker is DAOUpgradeableContract, DSMath {
376
368
  /**
377
369
  * @dev Calculate how much G$ to mint based on expansion change (new reserve
378
370
  * ratio), in order to keep G$ price the same at the bonding curve. the
379
- * formula to calculate the gd to mint: gd to mint =
380
- * (reservebalance / (newreserveratio * currentprice)) - gdsupply
371
+ * formula to calculate the gd to mint:
372
+ * amountToMint = (tokenSupply * reserveRatio - tokenSupply * newRatio) / newRatio
381
373
  * @param _token The reserve token
382
- * @return How much to mint in order to keep price in bonding curve the same
374
+ * @return toMint How much to mint in order to keep price in bonding curve the same
383
375
  */
384
- function calculateMintExpansion(ERC20 _token) public view returns (uint256) {
376
+ function calculateMintExpansion(
377
+ ERC20 _token
378
+ ) public view returns (uint256 toMint) {
385
379
  ReserveToken memory reserveToken = reserveTokens[address(_token)];
386
380
  uint32 newReserveRatio = calculateNewReserveRatio(_token); // new reserve ratio
387
- uint256 reserveDecimalsDiff = uint256(27) - _token.decimals(); // //result is in RAY precision
388
- uint256 denom = (uint256(newReserveRatio) *
389
- 1e21 *
390
- currentPrice(_token) *
391
- (10**reserveDecimalsDiff)) / 1e27; // (newreserveratio * currentprice) in RAY precision
392
- uint256 gdDecimalsDiff = uint256(27) - decimals;
393
- uint256 toMint = ((reserveToken.reserveSupply *
394
- (10**reserveDecimalsDiff) *
395
- 1e27) / denom) / (10**gdDecimalsDiff); // reservebalance in RAY precision // return to gd precision
396
- return toMint - reserveToken.gdSupply;
381
+ toMint =
382
+ (reserveToken.gdSupply *
383
+ reserveToken.reserveRatio -
384
+ reserveToken.gdSupply *
385
+ newReserveRatio) /
386
+ newReserveRatio;
397
387
  }
398
388
 
399
389
  /**