@gooddollar/goodprotocol 2.0.32 → 2.0.34-beta.0

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 (566) hide show
  1. package/artifacts/abis/BuyFromReserveHelper.min.json +1 -0
  2. package/artifacts/abis/Faucet.min.json +1 -1
  3. package/artifacts/abis/GoodDollar2.min.json +1 -0
  4. package/artifacts/abis/ISuperToken.min.json +1 -1
  5. package/artifacts/abis/IdentityV3.min.json +1 -0
  6. package/artifacts/abis/SuperGoodDollar.min.json +1 -1
  7. package/artifacts/abis/SuperToken.min.json +1 -1
  8. package/artifacts/abis/SuperfluidFaucet.min.json +1 -1
  9. package/artifacts/abis/UBISchemeV2.min.json +1 -1
  10. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  11. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  12. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  13. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  14. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  15. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  16. package/artifacts/contracts/IQuoter.sol/IQuoterV2.dbg.json +4 -0
  17. package/artifacts/contracts/IQuoter.sol/IQuoterV2.json +211 -0
  18. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  19. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  20. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  21. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  23. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  27. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  28. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  32. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  33. package/artifacts/contracts/Interfaces.sol/IQuoterV2.dbg.json +1 -1
  34. package/artifacts/contracts/Interfaces.sol/ISwapRouter.dbg.json +1 -1
  35. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  36. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  37. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  38. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  39. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  40. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  41. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  42. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  43. package/artifacts/contracts/MentoInterfaces.sol/IBancorExchangeProvider.dbg.json +1 -1
  44. package/artifacts/contracts/MentoInterfaces.sol/IBroker.dbg.json +1 -1
  45. package/artifacts/contracts/MentoInterfaces.sol/IGoodDollarExchangeProvider.dbg.json +1 -1
  46. package/artifacts/contracts/MentoInterfaces.sol/IGoodDollarExpansionController.dbg.json +1 -1
  47. package/artifacts/contracts/MentoInterfaces.sol/IMentoReserve.dbg.json +1 -1
  48. package/artifacts/contracts/MentoInterfaces.sol/ITradingLimits.dbg.json +1 -1
  49. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
  50. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.json +57 -2
  51. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  52. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.json +2 -2
  53. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
  54. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.json +2 -2
  55. package/artifacts/contracts/fuseFaucet/SuperfluidFacuet.sol/SuperfluidFaucet.dbg.json +1 -1
  56. package/artifacts/contracts/fuseFaucet/SuperfluidFacuet.sol/SuperfluidFaucet.json +46 -28
  57. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  58. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +2 -2
  59. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  60. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +2 -2
  61. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  62. package/artifacts/contracts/governance/GReputation.sol/GReputation.json +2 -2
  63. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  64. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +2 -2
  65. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +1 -1
  66. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +1 -1
  67. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  68. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  69. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.json +2 -2
  70. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  71. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  72. package/artifacts/contracts/governance/Reputation.sol/Reputation.json +2 -2
  73. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  74. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +2 -2
  75. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +1 -1
  76. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +2 -2
  77. package/artifacts/contracts/identity/IdentityV3.sol/IdentityV3.dbg.json +4 -0
  78. package/artifacts/contracts/identity/IdentityV3.sol/IdentityV3.json +1089 -0
  79. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
  80. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.json +2 -2
  81. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  82. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.json +2 -2
  83. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
  84. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.json +2 -2
  85. package/artifacts/contracts/invite/OneTimeReward.sol/OneTimeReward.dbg.json +1 -1
  86. package/artifacts/contracts/invite/OneTimeReward.sol/OneTimeReward.json +2 -2
  87. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  88. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.json +2 -2
  89. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  90. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.json +2 -2
  91. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  92. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.json +2 -2
  93. package/artifacts/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTest.dbg.json +1 -1
  94. package/artifacts/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTest.json +2 -2
  95. package/artifacts/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTestHelper.dbg.json +1 -1
  96. package/artifacts/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTestHelper.json +2 -2
  97. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  98. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.json +2 -2
  99. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  100. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.json +2 -2
  101. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
  102. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.json +2 -2
  103. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  104. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.json +2 -2
  105. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
  106. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.json +2 -2
  107. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
  108. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.json +2 -2
  109. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
  110. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +2 -2
  111. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  112. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.json +2 -2
  113. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +1 -1
  114. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.json +2 -2
  115. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  116. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.json +2 -2
  117. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  118. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +2 -2
  119. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  120. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.json +2 -2
  121. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  122. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +2 -2
  123. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +1 -1
  124. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.json +2 -2
  125. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  126. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.json +2 -2
  127. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  128. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.json +2 -2
  129. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  130. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  131. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.json +2 -2
  132. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  133. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  134. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +2 -2
  135. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  136. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
  137. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +1 -1
  138. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.json +2 -2
  139. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  140. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.json +2 -2
  141. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  142. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.json +2 -2
  143. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  144. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.json +2 -2
  145. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  146. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.json +2 -2
  147. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  148. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +2 -2
  149. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  150. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +2 -2
  151. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  152. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +2 -2
  153. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  154. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +2 -2
  155. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  156. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.json +2 -2
  157. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  158. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.json +2 -2
  159. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  160. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.json +2 -2
  161. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  162. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.json +2 -2
  163. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  164. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.json +2 -2
  165. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  166. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.json +2 -2
  167. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  168. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.json +2 -2
  169. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  170. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.json +2 -2
  171. package/artifacts/contracts/reserve/CeloDistributionHelper.sol/CeloDistributionHelper.dbg.json +1 -1
  172. package/artifacts/contracts/reserve/CeloDistributionHelper.sol/CeloDistributionHelper.json +2 -2
  173. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  174. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +2 -2
  175. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  176. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +2 -2
  177. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  178. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +2 -2
  179. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  180. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  181. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +2 -2
  182. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  183. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.json +2 -2
  184. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  185. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.json +2 -2
  186. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  187. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +2 -2
  188. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  189. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +2 -2
  190. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  191. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  192. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  193. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +2 -2
  194. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  195. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  196. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  197. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.json +2 -2
  198. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  199. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +2 -2
  200. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  201. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +2 -2
  202. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  203. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +2 -2
  204. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  205. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +2 -2
  206. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  207. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +2 -2
  208. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  209. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +2 -2
  210. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  211. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.json +2 -2
  212. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  213. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +1 -1
  214. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.json +2 -2
  215. package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +1 -1
  216. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +1 -1
  217. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +1 -1
  218. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.json +2 -2
  219. package/artifacts/contracts/token/GoodDollar2.sol/GoodDollar2.dbg.json +4 -0
  220. package/artifacts/contracts/token/GoodDollar2.sol/GoodDollar2.json +1206 -0
  221. package/artifacts/contracts/token/IFeesFormula.sol/IFeesFormula.dbg.json +1 -1
  222. package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.dbg.json +1 -1
  223. package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.json +2 -2
  224. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +1 -1
  225. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +1 -1
  226. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +1 -1
  227. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +1 -1
  228. package/artifacts/contracts/token/superfluid/ISuperToken.sol/ISuperToken.dbg.json +1 -1
  229. package/artifacts/contracts/token/superfluid/ISuperToken.sol/ISuperToken.json +0 -52
  230. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +1 -1
  231. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +2 -74
  232. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +1 -1
  233. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.json +2 -54
  234. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +1 -1
  235. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +1 -1
  236. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +1 -1
  237. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +1 -1
  238. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.json +2 -2
  239. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +1 -1
  240. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.json +2 -2
  241. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  242. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +2 -2
  243. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.dbg.json +1 -1
  244. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.json +2 -7
  245. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  246. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.json +2 -2
  247. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
  248. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.json +2 -2
  249. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  250. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.json +2 -2
  251. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  252. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.json +2 -2
  253. package/artifacts/contracts/utils/BulkWhitelist.sol/BulkWhitelist.dbg.json +1 -1
  254. package/artifacts/contracts/utils/BulkWhitelist.sol/BulkWhitelist.json +2 -2
  255. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +1 -1
  256. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.json +2 -2
  257. package/artifacts/contracts/utils/BuyFromReserveHelper.sol/BuyFromReserveHelper.dbg.json +4 -0
  258. package/artifacts/contracts/utils/BuyFromReserveHelper.sol/BuyFromReserveHelper.json +476 -0
  259. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.dbg.json +1 -1
  260. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.json +2 -2
  261. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.dbg.json +1 -1
  262. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.json +2 -2
  263. package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.dbg.json +1 -1
  264. package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.json +2 -2
  265. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  266. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.json +2 -2
  267. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  268. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.json +2 -2
  269. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  270. package/artifacts/contracts/utils/DSMath.sol/DSMath.json +2 -2
  271. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  272. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.json +2 -2
  273. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/EternalStorage.dbg.json +1 -1
  274. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/EternalStorage.json +2 -2
  275. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill.dbg.json +1 -1
  276. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill.json +2 -2
  277. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage.dbg.json +1 -1
  278. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Initializable.dbg.json +1 -1
  279. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Initializable.json +2 -2
  280. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Ownable.dbg.json +1 -1
  281. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Ownable.json +2 -2
  282. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Upgradeable.dbg.json +1 -1
  283. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Upgradeable.json +2 -2
  284. package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.dbg.json +1 -1
  285. package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.json +2 -2
  286. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  287. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +2 -2
  288. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  289. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  290. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  291. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +2 -2
  292. package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.dbg.json +1 -1
  293. package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.json +2 -2
  294. package/artifacts/contracts/utils/LastauthReduction.sol/LastauthReduction.dbg.json +1 -1
  295. package/artifacts/contracts/utils/LastauthReduction.sol/LastauthReduction.json +2 -2
  296. package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
  297. package/artifacts/contracts/utils/MultiCall.sol/Multicall.json +2 -2
  298. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  299. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.json +2 -2
  300. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  301. package/artifacts/contracts/utils/NameService.sol/NameService.json +2 -2
  302. package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.dbg.json +1 -1
  303. package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.json +2 -2
  304. package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.dbg.json +1 -1
  305. package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.json +2 -2
  306. package/artifacts/contracts/utils/ProtoclUpgradeV4Mento.sol/MentoExchange.dbg.json +1 -1
  307. package/artifacts/contracts/utils/ProtoclUpgradeV4Mento.sol/ProtocolUpgradeV4Mento.dbg.json +1 -1
  308. package/artifacts/contracts/utils/ProtoclUpgradeV4Mento.sol/ProtocolUpgradeV4Mento.json +2 -2
  309. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  310. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  311. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.json +2 -2
  312. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  313. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.json +2 -2
  314. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  315. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.json +2 -2
  316. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  317. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.json +2 -2
  318. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  319. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.json +2 -2
  320. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  321. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.json +2 -2
  322. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  323. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.json +2 -2
  324. package/artifacts/contracts/utils/ReserveRestore.sol/ReserveRestore.dbg.json +1 -1
  325. package/artifacts/contracts/utils/ReserveRestore.sol/ReserveRestore.json +2 -2
  326. package/contracts/IQuoter.sol +108 -0
  327. package/contracts/fuseFaucet/Faucet.sol +49 -37
  328. package/contracts/fuseFaucet/SuperfluidFacuet.sol +29 -8
  329. package/contracts/identity/IdentityV3.sol +534 -0
  330. package/contracts/token/ERC20PresetMinterPauserUpgradeable.sol +8 -9
  331. package/contracts/token/GoodDollar.sol +1 -1
  332. package/contracts/token/GoodDollar2.sol +13 -0
  333. package/contracts/token/superfluid/ISuperToken.sol +0 -19
  334. package/contracts/token/superfluid/SuperGoodDollar.sol +2 -21
  335. package/contracts/token/superfluid/SuperToken.sol +2 -2
  336. package/contracts/token/superfluid/SuperfluidToken.sol +66 -67
  337. package/contracts/ubi/UBISchemeV2.sol +12 -18
  338. package/contracts/utils/BuyFromReserveHelper.sol +129 -0
  339. package/dist/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +2 -2
  340. package/dist/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +177 -256
  341. package/dist/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.json +2 -2
  342. package/dist/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.json +2 -2
  343. package/dist/test-sdk/deploySuperGoodDollar.d.ts +1 -1
  344. package/dist/test-sdk/deploySuperGoodDollar.js +4 -8
  345. package/dist/test-sdk/index.js +1 -5
  346. package/hardhat.config.ts +37 -30
  347. package/package.json +3 -2
  348. package/releases/deploy-settings.json +5 -1
  349. package/releases/deployment.json +27 -1
  350. package/releases/olddao.json +1 -1
  351. package/scripts/analytics/activeGDStakers.ts +188 -0
  352. package/scripts/fv.ts +19 -1
  353. package/scripts/multichain-deploy/0_proxyFactory-deploy.ts +28 -5
  354. package/scripts/multichain-deploy/1_basicdao-deploy.ts +111 -73
  355. package/scripts/multichain-deploy/2_helpers-deploy.ts +13 -8
  356. package/scripts/multichain-deploy/4_ubi-deploy.ts +17 -19
  357. package/scripts/multichain-deploy/5_gov-deploy.ts +58 -26
  358. package/scripts/multichain-deploy/flattened/Avatar.sol +913 -0
  359. package/scripts/multichain-deploy/flattened/Controller.sol +1891 -0
  360. package/scripts/multichain-deploy/flattened/FeeFormula.sol +1290 -0
  361. package/scripts/multichain-deploy/fulldeploy.sh +17 -17
  362. package/scripts/multichain-deploy/helpers.ts +203 -70
  363. package/scripts/multichain-deploy/verify.ts +41 -0
  364. package/test/governance/ClaimersDistribution.test.ts +1 -1
  365. package/test/helpers.ts +59 -46
  366. package/test/identity/IdentityV2.test.ts +4 -1
  367. package/test/identity/IdentityV3.test.ts +449 -0
  368. package/test/invite/InvitesV2.test.ts +1 -1
  369. package/test/token/GoodDollar.test.ts +1 -1
  370. package/test/token/SuperGoodDollar.nohost.test.ts +383 -0
  371. package/test/token/SuperGoodDollar.test.ts +2 -10
  372. package/test/ubi/UBIScheme.e2e.test.ts +5 -5
  373. package/test/ubi/UBISchemeCycle.test.ts +69 -22
  374. package/test/ubi/UBISchemeV2.test.ts +636 -0
  375. package/test/utils/AdminWallet.test.ts +1 -1
  376. package/test/utils/ProxyFactory.test.ts +4 -1
  377. package/types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.ts +108 -0
  378. package/types/@openzeppelin/contracts/proxy/ERC1967/index.ts +1 -0
  379. package/types/contracts/IQuoter.sol/IQuoterV2.ts +297 -0
  380. package/types/contracts/IQuoter.sol/index.ts +4 -0
  381. package/types/contracts/Interfaces.sol/AToken.ts +81 -0
  382. package/types/contracts/Interfaces.sol/IAaveIncentivesControllerV3.ts +156 -0
  383. package/types/contracts/Interfaces.sol/ILendingPoolV3.ts +254 -0
  384. package/types/contracts/fuseFaucet/Faucet.ts +109 -11
  385. package/types/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/EthDistributor.ts +648 -0
  386. package/types/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/EthDistributorUpgradeable.ts +843 -0
  387. package/types/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/index.ts +4 -0
  388. package/types/contracts/fuseFaucet/SuperfluidFacuet.sol/SuperfluidFaucet.ts +79 -41
  389. package/types/contracts/identity/IdentityV3.ts +1899 -0
  390. package/types/contracts/identity/index.ts +1 -0
  391. package/types/contracts/index.ts +2 -0
  392. package/types/contracts/mocks/CeloDistributionHelperTest.sol/DistributionHelperTestHelper.ts +1252 -0
  393. package/types/contracts/reserve/GoodReserveADai.ts +2212 -0
  394. package/types/contracts/staking/aave/GoodAave3StakingV2.sol/GoodAaveStakingV2.ts +1808 -0
  395. package/types/contracts/staking/aave/GoodAave3StakingV2.sol/index.ts +4 -0
  396. package/types/contracts/token/GoodDollar18.ts +1871 -0
  397. package/types/contracts/token/GoodDollar2.ts +1871 -0
  398. package/types/contracts/token/index.ts +1 -0
  399. package/types/contracts/token/superfluid/ISuperToken.ts +0 -84
  400. package/types/contracts/token/superfluid/SuperGoodDollar.ts +12 -126
  401. package/types/contracts/token/superfluid/SuperToken.ts +0 -84
  402. package/types/contracts/ubi/UBISchemeV2.ts +3 -14
  403. package/types/contracts/utils/BuyFromReserveHelper.ts +699 -0
  404. package/types/contracts/utils/BuyGDClone.sol/IQuoterV2.ts +184 -0
  405. package/types/contracts/utils/BuyGDClone.sol/ISwapRouter.ts +306 -0
  406. package/types/contracts/utils/FuseOldBridgeKill.sol/BasicAMBErc677ToErc677.ts +108 -0
  407. package/types/contracts/utils/ProtocolUpgradeV4Mento.sol/MentoExchange.ts +81 -0
  408. package/types/contracts/utils/ProtocolUpgradeV4Mento.sol/ProtocolUpgradeV4Mento.ts +161 -0
  409. package/types/contracts/utils/ProtocolUpgradeV4Mento.sol/index.ts +5 -0
  410. package/types/contracts/utils/ReserveRestore.sol/MentoExchange.ts +81 -0
  411. package/types/contracts/utils/ReserveRestore.sol/ReserveRestore.ts +112 -0
  412. package/types/contracts/utils/ReserveRestore.sol/index.ts +5 -0
  413. package/types/contracts/utils/index.ts +1 -0
  414. package/types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy__factory.ts +146 -0
  415. package/types/factories/@openzeppelin/contracts/proxy/ERC1967/index.ts +1 -0
  416. package/types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts +1 -1
  417. package/types/factories/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable__factory.ts +1 -1
  418. package/types/factories/@openzeppelin/contracts-upgradeable/token/ERC20/presets/ERC20PresetMinterPauserUpgradeable__factory.ts +1 -1
  419. package/types/factories/@superfluid-finance/ethereum-contracts/contracts/libs/EventsEmitter__factory.ts +1 -1
  420. package/types/factories/@superfluid-finance/ethereum-contracts/contracts/superfluid/ConstantInflowNFT__factory.ts +1 -1
  421. package/types/factories/@superfluid-finance/ethereum-contracts/contracts/superfluid/ConstantOutflowNFT__factory.ts +1 -1
  422. package/types/factories/contracts/IQuoter.sol/IQuoterV2__factory.ts +226 -0
  423. package/types/factories/contracts/IQuoter.sol/index.ts +4 -0
  424. package/types/factories/contracts/Interfaces.sol/AToken__factory.ts +36 -0
  425. package/types/factories/contracts/Interfaces.sol/IAaveIncentivesControllerV3__factory.ts +88 -0
  426. package/types/factories/contracts/Interfaces.sol/ILendingPoolV3__factory.ts +186 -0
  427. package/types/factories/contracts/fuseFaucet/Faucet__factory.ts +56 -1
  428. package/types/factories/contracts/fuseFaucet/FuseFaucetV2__factory.ts +1 -1
  429. package/types/factories/contracts/fuseFaucet/FuseFaucet__factory.ts +1 -1
  430. package/types/factories/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/EthDistributorUpgradeable__factory.ts +572 -0
  431. package/types/factories/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/EthDistributor__factory.ts +482 -0
  432. package/types/factories/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/index.ts +4 -0
  433. package/types/factories/contracts/fuseFaucet/SuperfluidFacuet.sol/SuperfluidFaucet__factory.ts +45 -27
  434. package/types/factories/contracts/governance/ClaimersDistribution__factory.ts +1 -1
  435. package/types/factories/contracts/governance/CompoundVotingMachine__factory.ts +1 -1
  436. package/types/factories/contracts/governance/GReputation__factory.ts +1 -1
  437. package/types/factories/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking__factory.ts +1 -1
  438. package/types/factories/contracts/governance/GovernanceStaking__factory.ts +1 -1
  439. package/types/factories/contracts/governance/Reputation__factory.ts +1 -1
  440. package/types/factories/contracts/governance/StakersDistribution__factory.ts +1 -1
  441. package/types/factories/contracts/identity/IdentityV2__factory.ts +1 -1
  442. package/types/factories/contracts/identity/IdentityV3__factory.ts +1140 -0
  443. package/types/factories/contracts/identity/index.ts +1 -0
  444. package/types/factories/contracts/index.ts +1 -0
  445. package/types/factories/contracts/invite/InvitesFuseV2__factory.ts +1 -1
  446. package/types/factories/contracts/invite/InvitesV1__factory.ts +1 -1
  447. package/types/factories/contracts/invite/InvitesV2__factory.ts +1 -1
  448. package/types/factories/contracts/invite/OneTimeReward__factory.ts +1 -1
  449. package/types/factories/contracts/mocks/AaveMock__factory.ts +1 -1
  450. package/types/factories/contracts/mocks/AaveUSDMockOracle__factory.ts +1 -1
  451. package/types/factories/contracts/mocks/BatUSDMockOracle__factory.ts +1 -1
  452. package/types/factories/contracts/mocks/CBATMock__factory.ts +1 -1
  453. package/types/factories/contracts/mocks/CDAILowWorthMock__factory.ts +1 -1
  454. package/types/factories/contracts/mocks/CDAIMock__factory.ts +1 -1
  455. package/types/factories/contracts/mocks/CDAINonMintableMock__factory.ts +1 -1
  456. package/types/factories/contracts/mocks/CDecimalsMock__factory.ts +1 -1
  457. package/types/factories/contracts/mocks/CSDTMock__factory.ts +1 -1
  458. package/types/factories/contracts/mocks/CUSDCMock__factory.ts +1 -1
  459. package/types/factories/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTestHelper__factory.ts +1 -1
  460. package/types/factories/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTest__factory.ts +1 -1
  461. package/types/factories/contracts/mocks/CeloDistributionHelperTest.sol/DistributionHelperTestHelper__factory.ts +929 -0
  462. package/types/factories/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle__factory.ts +1 -1
  463. package/types/factories/contracts/mocks/DAIMock__factory.ts +1 -1
  464. package/types/factories/contracts/mocks/DaiEthPriceMockOracle__factory.ts +1 -1
  465. package/types/factories/contracts/mocks/DecimalsMock__factory.ts +1 -1
  466. package/types/factories/contracts/mocks/DistributionBridgeMock__factory.ts +1 -1
  467. package/types/factories/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper__factory.ts +1 -1
  468. package/types/factories/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest__factory.ts +1 -1
  469. package/types/factories/contracts/mocks/EthUSDMockOracle__factory.ts +1 -1
  470. package/types/factories/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock__factory.ts +1 -1
  471. package/types/factories/contracts/mocks/GasPriceMockOracle__factory.ts +1 -1
  472. package/types/factories/contracts/mocks/GoodCompoundStakingTest__factory.ts +1 -1
  473. package/types/factories/contracts/mocks/GoodDollarStakingMock__factory.ts +1 -1
  474. package/types/factories/contracts/mocks/GoodFundManagerTest__factory.ts +1 -1
  475. package/types/factories/contracts/mocks/IdentityMock__factory.ts +1 -1
  476. package/types/factories/contracts/mocks/IncentiveControllerMock__factory.ts +1 -1
  477. package/types/factories/contracts/mocks/LendingPoolMock__factory.ts +1 -1
  478. package/types/factories/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock__factory.ts +1 -1
  479. package/types/factories/contracts/mocks/OverMintTester.sol/OverMintTester__factory.ts +1 -1
  480. package/types/factories/contracts/mocks/OverMintTesterRegularStake__factory.ts +1 -1
  481. package/types/factories/contracts/mocks/PayableMock__factory.ts +1 -1
  482. package/types/factories/contracts/mocks/SixteenDecimalsTokenMock__factory.ts +1 -1
  483. package/types/factories/contracts/mocks/StakingMockFixedAPY__factory.ts +1 -1
  484. package/types/factories/contracts/mocks/SwapHelperTest__factory.ts +1 -1
  485. package/types/factories/contracts/mocks/TwentyDecimalsTokenMock__factory.ts +1 -1
  486. package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock2__factory.ts +1 -1
  487. package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock3__factory.ts +1 -1
  488. package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock4__factory.ts +1 -1
  489. package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock__factory.ts +1 -1
  490. package/types/factories/contracts/mocks/UsdcMock.sol/USDCMock__factory.ts +1 -1
  491. package/types/factories/contracts/reserve/CeloDistributionHelper__factory.ts +1 -1
  492. package/types/factories/contracts/reserve/DistributionHelper__factory.ts +1 -1
  493. package/types/factories/contracts/reserve/ExchangeHelper__factory.ts +1 -1
  494. package/types/factories/contracts/reserve/GoodMarketMaker__factory.ts +1 -1
  495. package/types/factories/contracts/reserve/GoodReserveADai__factory.ts +1502 -0
  496. package/types/factories/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai__factory.ts +1 -1
  497. package/types/factories/contracts/staking/BaseShareFieldV2__factory.ts +1 -1
  498. package/types/factories/contracts/staking/BaseShareField__factory.ts +1 -1
  499. package/types/factories/contracts/staking/DonationsStaking__factory.ts +1 -1
  500. package/types/factories/contracts/staking/FuseStakingV3.sol/FuseStakingV3__factory.ts +1 -1
  501. package/types/factories/contracts/staking/GoodFundManager__factory.ts +1 -1
  502. package/types/factories/contracts/staking/UniswapV2SwapHelper__factory.ts +1 -1
  503. package/types/factories/contracts/staking/aave/AaveStakingFactory__factory.ts +1 -1
  504. package/types/factories/contracts/staking/aave/GoodAave3StakingV2.sol/GoodAaveStakingV2__factory.ts +1240 -0
  505. package/types/factories/contracts/staking/aave/GoodAave3StakingV2.sol/index.ts +4 -0
  506. package/types/factories/contracts/staking/aave/GoodAaveStakingV2__factory.ts +1 -1
  507. package/types/factories/contracts/staking/aave/GoodAaveStaking__factory.ts +1 -1
  508. package/types/factories/contracts/staking/compound/CompoundStakingFactory__factory.ts +1 -1
  509. package/types/factories/contracts/staking/compound/GoodCompoundStakingV2__factory.ts +1 -1
  510. package/types/factories/contracts/staking/compound/GoodCompoundStaking__factory.ts +1 -1
  511. package/types/factories/contracts/token/ERC20PresetMinterPauserUpgradeable__factory.ts +1 -1
  512. package/types/factories/contracts/token/GoodDollar18__factory.ts +1257 -0
  513. package/types/factories/contracts/token/GoodDollar2__factory.ts +1257 -0
  514. package/types/factories/contracts/token/GoodDollar__factory.ts +1 -1
  515. package/types/factories/contracts/token/MultichainFeeFormula__factory.ts +1 -1
  516. package/types/factories/contracts/token/index.ts +1 -0
  517. package/types/factories/contracts/token/superfluid/ISuperToken__factory.ts +0 -52
  518. package/types/factories/contracts/token/superfluid/SuperGoodDollar__factory.ts +1 -73
  519. package/types/factories/contracts/token/superfluid/SuperToken__factory.ts +1 -53
  520. package/types/factories/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy__factory.ts +1 -1
  521. package/types/factories/contracts/ubi/UBISchemeV2__factory.ts +1 -6
  522. package/types/factories/contracts/ubi/UBIScheme__factory.ts +1 -1
  523. package/types/factories/contracts/utils/AdminWalletFuse__factory.ts +1 -1
  524. package/types/factories/contracts/utils/AdminWallet__factory.ts +1 -1
  525. package/types/factories/contracts/utils/BancorFormula__factory.ts +1 -1
  526. package/types/factories/contracts/utils/BulkWhitelist__factory.ts +1 -1
  527. package/types/factories/contracts/utils/BuyAndBridgeHelper__factory.ts +1 -1
  528. package/types/factories/contracts/utils/BuyFromReserveHelper__factory.ts +566 -0
  529. package/types/factories/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory__factory.ts +1 -1
  530. package/types/factories/contracts/utils/BuyGDClone.sol/BuyGDClone__factory.ts +1 -1
  531. package/types/factories/contracts/utils/BuyGDClone.sol/DonateGDClone__factory.ts +1 -1
  532. package/types/factories/contracts/utils/BuyGDClone.sol/IQuoterV2__factory.ts +126 -0
  533. package/types/factories/contracts/utils/BuyGDClone.sol/ISwapRouter__factory.ts +220 -0
  534. package/types/factories/contracts/utils/DAOContract__factory.ts +1 -1
  535. package/types/factories/contracts/utils/DAOUpgradeableContract__factory.ts +1 -1
  536. package/types/factories/contracts/utils/FuseOldBridgeKill.sol/BasicAMBErc677ToErc677__factory.ts +86 -0
  537. package/types/factories/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill__factory.ts +1 -1
  538. package/types/factories/contracts/utils/FuseOldBridgeKill.sol/Initializable__factory.ts +1 -1
  539. package/types/factories/contracts/utils/FuseOldBridgeKill.sol/Ownable__factory.ts +1 -1
  540. package/types/factories/contracts/utils/GDFaucet__factory.ts +1 -1
  541. package/types/factories/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper__factory.ts +1 -1
  542. package/types/factories/contracts/utils/IdentityFix__factory.ts +1 -1
  543. package/types/factories/contracts/utils/LastauthReduction__factory.ts +1 -1
  544. package/types/factories/contracts/utils/MultiCall.sol/Multicall__factory.ts +1 -1
  545. package/types/factories/contracts/utils/MultichainBridgeHelper__factory.ts +1 -1
  546. package/types/factories/contracts/utils/NameService__factory.ts +1 -1
  547. package/types/factories/contracts/utils/OneTimePaymentsV2__factory.ts +1 -1
  548. package/types/factories/contracts/utils/OneTimePayments__factory.ts +1 -1
  549. package/types/factories/contracts/utils/ProtoclUpgradeV4Mento.sol/ProtocolUpgradeV4Mento__factory.ts +1 -1
  550. package/types/factories/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade__factory.ts +1 -1
  551. package/types/factories/contracts/utils/ProtocolUpgradeFuseRecover__factory.ts +1 -1
  552. package/types/factories/contracts/utils/ProtocolUpgradeFuse__factory.ts +1 -1
  553. package/types/factories/contracts/utils/ProtocolUpgradeRecover__factory.ts +1 -1
  554. package/types/factories/contracts/utils/ProtocolUpgradeV4Mento.sol/MentoExchange__factory.ts +39 -0
  555. package/types/factories/contracts/utils/ProtocolUpgradeV4Mento.sol/ProtocolUpgradeV4Mento__factory.ts +152 -0
  556. package/types/factories/contracts/utils/ProtocolUpgradeV4Mento.sol/index.ts +5 -0
  557. package/types/factories/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy__factory.ts +1 -1
  558. package/types/factories/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967__factory.ts +1 -1
  559. package/types/factories/contracts/utils/ReputationTestHelper__factory.ts +1 -1
  560. package/types/factories/contracts/utils/ReserveRestore.sol/MentoExchange__factory.ts +39 -0
  561. package/types/factories/contracts/utils/ReserveRestore.sol/ReserveRestore__factory.ts +95 -0
  562. package/types/factories/contracts/utils/ReserveRestore.sol/index.ts +5 -0
  563. package/types/factories/contracts/utils/ReserveRestore__factory.ts +1 -1
  564. package/types/factories/contracts/utils/index.ts +1 -0
  565. package/types/hardhat.d.ts +45 -0
  566. package/types/index.ts +8 -2
@@ -0,0 +1,383 @@
1
+ import { ethers } from "hardhat";
2
+ import { assert, expect } from "chai";
3
+ import { loadFixture } from "@nomicfoundation/hardhat-network-helpers";
4
+ import TransferAndCallMockABI from "@gooddollar/goodcontracts/build/contracts/TransferAndCallMock.json";
5
+ import { createDAO, deploySuperGoodDollar } from "../helpers";
6
+ import { ISuperGoodDollar } from "../../types";
7
+
8
+ let sfHost,
9
+ founder,
10
+ alice,
11
+ bob,
12
+ eve,
13
+ newHost,
14
+ identityMock,
15
+ receiverMock,
16
+ sgd: ISuperGoodDollar, // stands for "SuperGoodDollar"
17
+ feesFormula10PctMock;
18
+
19
+ const alotOfDollars = ethers.utils.parseEther("100000");
20
+ const tenDollars = ethers.utils.parseEther("10");
21
+ const oneDollar = ethers.utils.parseEther("1");
22
+ const tenDollarsPerDay = "124378109452730"; // flowrate per second
23
+
24
+ const initialState = async () => {};
25
+
26
+ before(async function () {
27
+ //get accounts from hardhat
28
+ [founder, alice, bob, eve, newHost] = await ethers.getSigners();
29
+
30
+ await createDAO();
31
+
32
+ const sfContracts = {
33
+ host: ethers.constants.AddressZero
34
+ };
35
+ sfHost = sfContracts.host;
36
+
37
+ // GoodDollar specific init
38
+ const FeesFormulaMockFactory = await ethers.getContractFactory(
39
+ "FeesFormulaMock",
40
+ founder
41
+ );
42
+
43
+ const feesFormula0PctMock = await FeesFormulaMockFactory.deploy(0);
44
+
45
+ feesFormula10PctMock = await FeesFormulaMockFactory.deploy(100000);
46
+
47
+ // the zero address is a placeholder for the dao contract
48
+ const IdentityMockFactory = await ethers.getContractFactory(
49
+ "IdentityMock",
50
+ founder
51
+ );
52
+ identityMock = await IdentityMockFactory.deploy(
53
+ "0x0000000000000000000000000000000000000000"
54
+ );
55
+
56
+ receiverMock = await new ethers.ContractFactory(
57
+ TransferAndCallMockABI.abi,
58
+ TransferAndCallMockABI.bytecode,
59
+ founder
60
+ ).deploy();
61
+
62
+ console.log("deploying test supergooddollar...");
63
+ sgd = (await deploySuperGoodDollar(sfContracts, [
64
+ "SuperGoodDollar",
65
+ "SGD",
66
+ 0, // cap
67
+ feesFormula0PctMock.address,
68
+ identityMock.address,
69
+ receiverMock.address,
70
+ founder.address
71
+ ])) as ISuperGoodDollar;
72
+
73
+ await sgd.mint(founder.address, alotOfDollars);
74
+ });
75
+
76
+ describe("SuperGoodDollar No Host", async function () {
77
+ it("check superfluid host", async () => {
78
+ expect(await sgd.getHost()).equal(sfHost);
79
+ });
80
+
81
+ it("check ERC20 metadata", async function () {
82
+ await loadFixture(initialState);
83
+ const symbol = await sgd.symbol();
84
+ const name = await sgd.name();
85
+ assert.equal(symbol, "SGD", "symbol mismatch");
86
+ assert.equal(name, "SuperGoodDollar", "name mismatch");
87
+ });
88
+
89
+ it("mint to alice", async function () {
90
+ await loadFixture(initialState);
91
+ await sgd.mint(alice.address, alotOfDollars);
92
+ const balAfter = await sgd.balanceOf(alice.address);
93
+
94
+ assert.equal(
95
+ balAfter.toString(),
96
+ alotOfDollars.toString(),
97
+ "wrong balance after mint"
98
+ );
99
+ });
100
+
101
+ it("do ERC20 transfer", async function () {
102
+ await loadFixture(initialState);
103
+ await sgd.mint(alice.address, tenDollars);
104
+ await sgd.connect(alice).transfer(bob.address, tenDollars);
105
+ const balAfter = await sgd.balanceOf(bob.address);
106
+
107
+ assert.equal(
108
+ balAfter.toString(),
109
+ tenDollars.toString(),
110
+ "wrong balance after transfer"
111
+ );
112
+ });
113
+
114
+ it("do ERC20 transferFrom", async function () {
115
+ await loadFixture(initialState);
116
+ await sgd.approve(alice.address, tenDollars);
117
+ await sgd
118
+ .connect(alice)
119
+ .transferFrom(founder.address, bob.address, tenDollars);
120
+ assert.equal(
121
+ (await sgd.balanceOf(bob.address)).toString(),
122
+ tenDollars.toString(),
123
+ "wrong balance after transferFrom"
124
+ );
125
+ });
126
+
127
+ it("pauseable", async function () {
128
+ await loadFixture(initialState);
129
+ await sgd.connect(founder).pause();
130
+
131
+ await expect(sgd.transfer(bob.address, tenDollars)).revertedWithCustomError(
132
+ sgd,
133
+ "SUPER_GOODDOLLAR_PAUSED"
134
+ );
135
+
136
+ await sgd.connect(founder).unpause();
137
+
138
+ await sgd.transfer(bob.address, tenDollars);
139
+ });
140
+
141
+ it("non-zero fees are applied", async function () {
142
+ await loadFixture(initialState);
143
+
144
+ await sgd.connect(founder).mint(alice.address, tenDollars);
145
+ await sgd.setFormula(feesFormula10PctMock.address);
146
+
147
+ await expect(
148
+ sgd.connect(alice).transfer(bob.address, tenDollars)
149
+ ).revertedWith(/Not enough balance to pay TX fee/);
150
+
151
+ // mint the extra amount needed for 10% fees
152
+ await sgd.mint(alice.address, oneDollar);
153
+ await sgd.connect(alice).transfer(bob.address, tenDollars);
154
+
155
+ // since the sender pays the fee, alice should have spent 11$ and bob received 10$
156
+ assert.equal(
157
+ (await sgd.balanceOf(alice.address)).toString(),
158
+ "0",
159
+ "alice: wrong balance after transfer"
160
+ );
161
+ assert.equal(
162
+ (await sgd.balanceOf(bob.address)).toString(),
163
+ tenDollars.toString(),
164
+ "bob: wrong balance after transfer"
165
+ );
166
+ });
167
+
168
+ it("non-zero fees are applied for transferFrom (verify override of _transferForm)", async function () {
169
+ await loadFixture(initialState);
170
+
171
+ await sgd.connect(founder).mint(alice.address, tenDollars);
172
+ await sgd.setFormula(feesFormula10PctMock.address);
173
+
174
+ await sgd.connect(alice).approve(founder.address, tenDollars.mul(2));
175
+
176
+ await expect(
177
+ sgd.connect(founder).transferFrom(alice.address, bob.address, tenDollars)
178
+ ).revertedWith(/Not enough balance to pay TX fee/);
179
+
180
+ // mint the extra amount needed for 10% fees
181
+ await sgd.connect(founder).mint(alice.address, oneDollar);
182
+ assert.equal(
183
+ (await sgd.balanceOf(alice.address)).toString(),
184
+ tenDollars.add(oneDollar).toString(),
185
+ "alice: wrong balance after mint"
186
+ );
187
+
188
+ await sgd
189
+ .connect(founder)
190
+ .transferFrom(alice.address, bob.address, tenDollars);
191
+
192
+ // since the sender pays the fee, alice should have spent 11$ and bob received 10$
193
+ assert.equal(
194
+ (await sgd.balanceOf(alice.address)).toString(),
195
+ "0",
196
+ "alice: wrong balance after transfer"
197
+ );
198
+ assert.equal(
199
+ (await sgd.balanceOf(bob.address)).toString(),
200
+ tenDollars.toString(),
201
+ "bob: wrong balance after transfer"
202
+ );
203
+ });
204
+
205
+ it("should not be able to initialize again", async () => {
206
+ await loadFixture(initialState);
207
+ await expect(
208
+ sgd["initialize(string,string,uint256,address,address,address,address)"](
209
+ "x",
210
+ "y",
211
+ 1,
212
+ ethers.constants.AddressZero,
213
+ ethers.constants.AddressZero,
214
+ ethers.constants.AddressZero,
215
+ ethers.constants.AddressZero
216
+ )
217
+ ).revertedWith(/Initializable: contract is already initialized/);
218
+
219
+ await expect(
220
+ sgd["initialize(address,uint8,string,string)"](
221
+ ethers.constants.AddressZero,
222
+ 2,
223
+ "GD",
224
+ "GD"
225
+ )
226
+ ).revertedWith(/Initializable: contract is not initializing/);
227
+ });
228
+
229
+ it("update the GoodDollar logic", async function () {
230
+ await loadFixture(initialState);
231
+ const sgdProxiable = await ethers.getContractAt(
232
+ "contracts/token/superfluid/UUPSProxiable.sol:UUPSProxiable",
233
+ sgd.address,
234
+ founder.signer
235
+ );
236
+
237
+ const auxCodeAddrBefore = await sgdProxiable.getCodeAddress();
238
+
239
+ const newLogic = await (
240
+ await ethers.getContractFactory("SuperGoodDollar", founder)
241
+ ).deploy(newHost.address);
242
+
243
+ await expect(
244
+ sgdProxiable.connect(eve).updateCode(newLogic.address)
245
+ ).revertedWith(/not owner/);
246
+
247
+ await sgdProxiable.connect(founder).updateCode(newLogic.address);
248
+
249
+ const auxCodeAddrAfter = await sgdProxiable.getCodeAddress();
250
+
251
+ assert.notEqual(
252
+ auxCodeAddrBefore,
253
+ auxCodeAddrAfter,
254
+ "code address unchanged"
255
+ );
256
+
257
+ expect(await sgd.getHost()).equal(newHost.address);
258
+ await expect(
259
+ sgd["initialize(string,string,uint256,address,address,address,address)"](
260
+ "x",
261
+ "y",
262
+ 1,
263
+ ethers.constants.AddressZero,
264
+ ethers.constants.AddressZero,
265
+ ethers.constants.AddressZero,
266
+ ethers.constants.AddressZero
267
+ )
268
+ ).revertedWith(/Initializable: contract is already initialized/);
269
+ });
270
+
271
+ describe("ERC20Permit", () => {
272
+ const name = "SuperGoodDollar";
273
+ const version = "1";
274
+
275
+ const Permit = [
276
+ { name: "owner", type: "address" },
277
+ { name: "spender", type: "address" },
278
+ { name: "value", type: "uint256" },
279
+ { name: "nonce", type: "uint256" },
280
+ { name: "deadline", type: "uint256" }
281
+ ];
282
+
283
+ it("initial nonce is 0", async function () {
284
+ expect(await sgd.nonces(alice.address)).to.equal(0);
285
+ });
286
+
287
+ it("domain separator", async function () {
288
+ const hashedDomain = await ethers.utils._TypedDataEncoder.hashDomain({
289
+ name,
290
+ version,
291
+ chainId: 4447,
292
+ verifyingContract: sgd.address
293
+ });
294
+ expect(await sgd.DOMAIN_SEPARATOR()).to.equal(hashedDomain);
295
+ });
296
+
297
+ describe("permit", function () {
298
+ const wallet = ethers.Wallet.createRandom();
299
+
300
+ const chainId = 4447;
301
+ const owner = wallet.address;
302
+ const value = 42;
303
+ const nonce = 0;
304
+ const maxDeadline = ethers.constants.MaxUint256;
305
+
306
+ const buildData = (
307
+ chainId,
308
+ verifyingContract,
309
+ deadline = maxDeadline
310
+ ) => ({
311
+ primaryType: "Permit",
312
+ types: { Permit },
313
+ domain: { name, version, chainId, verifyingContract },
314
+ message: { owner, spender: bob.address, value, nonce, deadline }
315
+ });
316
+
317
+ it("accepts owner signature", async function () {
318
+ const data = buildData(chainId, sgd.address);
319
+ const signature = await wallet._signTypedData(
320
+ data.domain,
321
+ data.types,
322
+ data.message
323
+ );
324
+ const { v, r, s } = ethers.utils.splitSignature(signature);
325
+
326
+ await sgd.permit(owner, bob.address, value, maxDeadline, v, r, s);
327
+
328
+ expect(await sgd.nonces(owner)).to.equal(1);
329
+ expect(await sgd.allowance(owner, bob.address)).to.equal(value);
330
+ });
331
+
332
+ it("rejects reused signature", async function () {
333
+ await loadFixture(initialState);
334
+
335
+ const data = buildData(chainId, sgd.address);
336
+ const signature = await wallet._signTypedData(
337
+ data.domain,
338
+ data.types,
339
+ data.message
340
+ );
341
+ const { v, r, s } = ethers.utils.splitSignature(signature);
342
+
343
+ await sgd.permit(owner, bob.address, value, maxDeadline, v, r, s);
344
+
345
+ await expect(
346
+ sgd.permit(owner, bob.address, value, maxDeadline, v, r, s)
347
+ ).revertedWith(/ERC20Permit: invalid signature/);
348
+ });
349
+
350
+ it("rejects other signature", async function () {
351
+ const otherWallet = ethers.Wallet.createRandom();
352
+ const data = buildData(chainId, sgd.address);
353
+ const signature = await otherWallet._signTypedData(
354
+ data.domain,
355
+ data.types,
356
+ data.message
357
+ );
358
+ const { v, r, s } = ethers.utils.splitSignature(signature);
359
+
360
+ await expect(
361
+ sgd.permit(owner, bob.address, value, maxDeadline, v, r, s)
362
+ ).revertedWith(/ERC20Permit: invalid signature/);
363
+ });
364
+
365
+ it("rejects expired permit", async function () {
366
+ const block = await ethers.provider.getBlock("latest");
367
+ const deadline = ethers.BigNumber.from(block.timestamp.toFixed(0));
368
+
369
+ const data = buildData(chainId, sgd.address, deadline);
370
+ const signature = await wallet._signTypedData(
371
+ data.domain,
372
+ data.types,
373
+ data.message
374
+ );
375
+ const { v, r, s } = ethers.utils.splitSignature(signature);
376
+
377
+ await expect(
378
+ sgd.permit(owner, bob.address, value, deadline, v, r, s)
379
+ ).revertedWith(/ERC20Permit: expired deadline/);
380
+ });
381
+ });
382
+ });
383
+ });
@@ -249,17 +249,13 @@ describe("SuperGoodDollar", async function () {
249
249
  it("should not be able to initialize again", async () => {
250
250
  await loadFixture(initialState);
251
251
  await expect(
252
- sgd[
253
- "initialize(string,string,uint256,address,address,address,address,address,address)"
254
- ](
252
+ sgd["initialize(string,string,uint256,address,address,address,address)"](
255
253
  "x",
256
254
  "y",
257
255
  1,
258
256
  ethers.constants.AddressZero,
259
257
  ethers.constants.AddressZero,
260
258
  ethers.constants.AddressZero,
261
- ethers.constants.AddressZero,
262
- ethers.constants.AddressZero,
263
259
  ethers.constants.AddressZero
264
260
  )
265
261
  ).revertedWith(/Initializable: contract is already initialized/);
@@ -304,17 +300,13 @@ describe("SuperGoodDollar", async function () {
304
300
 
305
301
  expect(await sgd.getHost()).equal(newHost.address);
306
302
  await expect(
307
- sgd[
308
- "initialize(string,string,uint256,address,address,address,address,address,address)"
309
- ](
303
+ sgd["initialize(string,string,uint256,address,address,address,address)"](
310
304
  "x",
311
305
  "y",
312
306
  1,
313
307
  ethers.constants.AddressZero,
314
308
  ethers.constants.AddressZero,
315
309
  ethers.constants.AddressZero,
316
- ethers.constants.AddressZero,
317
- ethers.constants.AddressZero,
318
310
  ethers.constants.AddressZero
319
311
  )
320
312
  ).revertedWith(/Initializable: contract is already initialized/);
@@ -235,7 +235,7 @@ describe("UBIScheme - network e2e tests", () => {
235
235
  );
236
236
  });
237
237
 
238
- it("should not be able to fish an active user", async () => {
238
+ it.skip("should not be able to fish an active user", async () => {
239
239
  let error = await ubi
240
240
  .connect(fisherman)
241
241
  .fish(claimer.address)
@@ -244,7 +244,7 @@ describe("UBIScheme - network e2e tests", () => {
244
244
  expect(error.message).to.have.string("can't fish");
245
245
  });
246
246
 
247
- it("should be able to fish inactive user", async () => {
247
+ it.skip("should be able to fish inactive user", async () => {
248
248
  await increaseTime(MAX_INACTIVE_DAYS * 86700);
249
249
  let balance1 = await goodDollar.balanceOf(fisherman.address);
250
250
  await ubi.connect(fisherman).fish(claimer.address);
@@ -257,7 +257,7 @@ describe("UBIScheme - network e2e tests", () => {
257
257
  );
258
258
  });
259
259
 
260
- it("should not be able to fish the same user twice", async () => {
260
+ it.skip("should not be able to fish the same user twice", async () => {
261
261
  let error = await ubi
262
262
  .connect(fisherman)
263
263
  .fish(claimer.address)
@@ -265,7 +265,7 @@ describe("UBIScheme - network e2e tests", () => {
265
265
  expect(error.message).to.have.string("can't fish");
266
266
  });
267
267
 
268
- it("should recieves a claim reward when call claim after being fished", async () => {
268
+ it.skip("should recieves a claim reward when call claim after being fished", async () => {
269
269
  let activeUsersCountBefore = await ubi.activeUsersCount();
270
270
  let claimerBalanceBefore = await goodDollar.balanceOf(claimer.address);
271
271
  await ubi.connect(claimer).claim();
@@ -279,7 +279,7 @@ describe("UBIScheme - network e2e tests", () => {
279
279
  ).to.be.equal(1000);
280
280
  });
281
281
 
282
- it("should be able to fish by calling fishMulti", async () => {
282
+ it.skip("should be able to fish by calling fishMulti", async () => {
283
283
  await increaseTime(MAX_INACTIVE_DAYS * 86700);
284
284
  let amount = 1e8;
285
285
  await dai["mint(address,uint256)"](
@@ -13,10 +13,19 @@ const ONE_DAY = 86400;
13
13
  describe("UBIScheme cycle", () => {
14
14
  let goodDollar, firstClaimPool;
15
15
  let reputation;
16
- let root, acct, claimer1, claimer2, claimer3, signers, nameService, genericCall, ubiScheme: UBIScheme;
16
+ let root,
17
+ acct,
18
+ claimer1,
19
+ claimer2,
20
+ claimer3,
21
+ signers,
22
+ nameService,
23
+ genericCall,
24
+ ubiScheme: UBIScheme;
17
25
 
18
26
  before(async () => {
19
- [root, acct, claimer1, claimer2, claimer3, ...signers] = await ethers.getSigners();
27
+ [root, acct, claimer1, claimer2, claimer3, ...signers] =
28
+ await ethers.getSigners();
20
29
 
21
30
  const deployedDAO = await loadFixture(createDAO);
22
31
  let {
@@ -55,7 +64,9 @@ describe("UBIScheme cycle", () => {
55
64
 
56
65
  it("should be able to change cycleLength if avatar", async () => {
57
66
  // initializing the ubi
58
- let encodedCall = ubiScheme.interface.encodeFunctionData("setCycleLength", [8]);
67
+ let encodedCall = ubiScheme.interface.encodeFunctionData("setCycleLength", [
68
+ 8
69
+ ]);
59
70
  await genericCall(ubiScheme.address, encodedCall);
60
71
  expect(await ubiScheme.cycleLength()).to.be.equal(8);
61
72
  });
@@ -70,7 +81,10 @@ describe("UBIScheme cycle", () => {
70
81
 
71
82
  it("should set ubischeme", async () => {
72
83
  // initializing the ubi
73
- let encodedCall = firstClaimPool.interface.encodeFunctionData("setUBIScheme", [ubiScheme.address]);
84
+ let encodedCall = firstClaimPool.interface.encodeFunctionData(
85
+ "setUBIScheme",
86
+ [ubiScheme.address]
87
+ );
74
88
 
75
89
  await genericCall(firstClaimPool.address, encodedCall);
76
90
  // await firstClaimPool.start();
@@ -78,13 +92,21 @@ describe("UBIScheme cycle", () => {
78
92
 
79
93
  it("should calculate cycle on first day", async () => {
80
94
  await increaseTime(2 * ONE_DAY); //make sure
95
+
96
+ let balance = await goodDollar.balanceOf(ubiScheme.address);
81
97
  let transaction = await (await ubiScheme.connect(claimer1).claim()).wait();
82
- await ubiScheme.connect(claimer2).claim();
83
98
  let cycleLength = await ubiScheme.cycleLength();
84
99
  let currentCycle = await ubiScheme.currentCycleLength();
85
- let balance = await goodDollar.balanceOf(ubiScheme.address);
100
+ let dailyAmount = await ubiScheme.dailyUbi();
86
101
  expect(currentCycle.toNumber()).to.be.gt(0);
87
- const cycleEvent = transaction.events.find(e => e.event === "UBICycleCalculated");
102
+ const cycleEvent = transaction.events.find(
103
+ e => e.event === "UBICycleCalculated"
104
+ );
105
+ console.log({
106
+ dailyAmount: dailyAmount.toString(),
107
+ event: cycleEvent.args
108
+ });
109
+
88
110
  expect(cycleEvent.args.day.toNumber()).to.be.a("number");
89
111
  expect(cycleEvent.args.pool).to.be.equal(balance);
90
112
  expect(cycleEvent.args.cycleLength).to.be.equal(cycleLength);
@@ -92,35 +114,53 @@ describe("UBIScheme cycle", () => {
92
114
  });
93
115
 
94
116
  it("should have calculated dailyCyclePool and dailyUbi correctly", async () => {
117
+ await ubiScheme.connect(claimer2).claim();
95
118
  increaseTime(ONE_DAY);
96
119
  let transaction = await ubiScheme.connect(claimer2).claim();
97
- expect(await goodDollar.balanceOf(claimer2.address).then(_ => _.toNumber())).to.be.equal(
98
- 1000 + (await ubiScheme.dailyUbi().then(_ => _.toNumber()))
99
- ); //first day 10G$ (1000 wei), second claim 125000 wei daily pool divided by 2 active users = 625000
100
- expect(await ubiScheme.dailyCyclePool().then(_ => _.toNumber())).to.be.equal(125000);
101
- expect(await ubiScheme.currentDayInCycle().then(_ => _.toNumber())).to.be.equal(1); //1 day passed
120
+ expect(
121
+ await goodDollar.balanceOf(claimer2.address).then(_ => _.toNumber())
122
+ ).to.be.equal(125 + (await ubiScheme.dailyUbi().then(_ => _.toNumber()))); //first day 125 , second claim 125000 wei daily pool divided by 1000 active users = 125
123
+ expect(
124
+ await ubiScheme.dailyCyclePool().then(_ => _.toNumber())
125
+ ).to.be.equal(125000);
126
+ expect(
127
+ await ubiScheme.currentDayInCycle().then(_ => _.toNumber())
128
+ ).to.be.equal(1); //1 day passed
102
129
  });
103
130
 
104
131
  it("should calculate next cycle even if day passed without claims(setDay)", async () => {
105
132
  increaseTime(ONE_DAY * 9);
106
- expect(await ubiScheme.currentDayInCycle().then(_ => _.toNumber())).to.be.equal(10); //10 days passed total
133
+ expect(
134
+ await ubiScheme.currentDayInCycle().then(_ => _.toNumber())
135
+ ).to.be.equal(10); //10 days passed total
107
136
 
108
137
  let transaction = await (await ubiScheme.connect(claimer1).claim()).wait(); //claims in new ubi cycle
109
138
  let dailyClaimAmount = (await ubiScheme.dailyCyclePool()).div(1000); //initialy we have by default min 1000 active users
110
139
 
111
- expect(await goodDollar.balanceOf(claimer1.address)).to.be.equal(dailyClaimAmount.add(1000)); //intial 10 from first claim pool + daily
112
- const cycleEvent = transaction.events.find(e => e.event === "UBICycleCalculated");
140
+ expect(await goodDollar.balanceOf(claimer1.address)).to.be.equal(
141
+ dailyClaimAmount.add(125)
142
+ ); //intial 10 from first claim pool + daily
143
+ const cycleEvent = transaction.events.find(
144
+ e => e.event === "UBICycleCalculated"
145
+ );
113
146
 
114
147
  expect(cycleEvent).to.be.not.empty;
115
148
 
116
- expect(await ubiScheme.currentDayInCycle().then(_ => _.toNumber())).to.be.equal(0); //new cycle started
117
- //intial balance on cycle start 1000000 - 125(one user that claimed) = 999875, divide by cycle length (8) = 124984
118
- expect(cycleEvent.args.dailyUBIPool).to.be.equal(124984);
149
+ expect(
150
+ await ubiScheme.currentDayInCycle().then(_ => _.toNumber())
151
+ ).to.be.equal(0); //new cycle started
152
+ //intial balance on cycle start 1000000 - 375(3 user that claimed in previous tests) = 99625, divide by cycle length (8) = 124953
153
+ expect(cycleEvent.args.dailyUBIPool).to.be.equal(
154
+ (BigInt(1000000) - BigInt(375)) / BigInt(8)
155
+ );
119
156
  });
120
157
 
121
158
  it("should calculate cycle early if we can increase current daily pool", async () => {
122
159
  //increase ubi pool balance
123
- let encoded = goodDollar.interface.encodeFunctionData("mint", [ubiScheme.address, 400000]);
160
+ let encoded = goodDollar.interface.encodeFunctionData("mint", [
161
+ ubiScheme.address,
162
+ 400000
163
+ ]);
124
164
  await genericCall(goodDollar.address, encoded);
125
165
  let balance = await goodDollar.balanceOf(ubiScheme.address);
126
166
 
@@ -133,7 +173,9 @@ describe("UBIScheme cycle", () => {
133
173
  const estimated = await ubiScheme.estimateNextDailyUBI();
134
174
  await increaseTime(ONE_DAY); //make sure
135
175
  let transaction = await (await ubiScheme.connect(claimer1).claim()).wait();
136
- const cycleEvent = transaction.events.find(e => e.event === "UBICycleCalculated");
176
+ const cycleEvent = transaction.events.find(
177
+ e => e.event === "UBICycleCalculated"
178
+ );
137
179
  const dailyUBI = await ubiScheme.dailyUbi();
138
180
  expect(dailyUBI).to.eq(estimated); //the estimated before actual calculation should be correct, ie equal to actual dailyUBI calculated after first claim.
139
181
  expect(cycleEvent).to.be.not.empty;
@@ -145,7 +187,10 @@ describe("UBIScheme cycle", () => {
145
187
 
146
188
  it("should not calculate cycle early if not possible to increase daily ubi pool", async () => {
147
189
  //increase ubi pool balance
148
- let encoded = goodDollar.interface.encodeFunctionData("mint", [ubiScheme.address, 100]);
190
+ let encoded = goodDollar.interface.encodeFunctionData("mint", [
191
+ ubiScheme.address,
192
+ 100
193
+ ]);
149
194
  await genericCall(goodDollar.address, encoded);
150
195
  let balance = await goodDollar.balanceOf(ubiScheme.address);
151
196
  const curCycleLen = await ubiScheme.cycleLength();
@@ -155,7 +200,9 @@ describe("UBIScheme cycle", () => {
155
200
 
156
201
  await increaseTime(ONE_DAY); //make sure
157
202
  let transaction = await (await ubiScheme.connect(claimer1).claim()).wait();
158
- const cycleEvent = transaction.events.find(e => e.event === "UBICycleCalculated");
203
+ const cycleEvent = transaction.events.find(
204
+ e => e.event === "UBICycleCalculated"
205
+ );
159
206
  expect(cycleEvent).to.be.undefined;
160
207
  });
161
208
  });