@gooddollar/goodprotocol 2.0.13 → 2.0.14-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 (489) hide show
  1. package/artifacts/abis/DistributionBridgeMock.min.json +1 -1
  2. package/artifacts/abis/DistributionHelper.min.json +1 -1
  3. package/artifacts/abis/DistributionHelperTest.min.json +1 -1
  4. package/artifacts/abis/DistributionHelperTestHelper.min.json +1 -1
  5. package/artifacts/abis/GasPriceMockOracle.min.json +1 -1
  6. package/artifacts/abis/GoodCompoundStakingTest.min.json +1 -1
  7. package/artifacts/abis/GoodReserveCDai.min.json +1 -1
  8. package/artifacts/abis/IFeesFormula.min.json +1 -1
  9. package/artifacts/abis/ISuperGoodDollar.min.json +1 -1
  10. package/artifacts/abis/ISuperToken.min.json +1 -0
  11. package/artifacts/abis/MultichainFeeFormula.min.json +1 -0
  12. package/artifacts/abis/SuperGoodDollar.min.json +1 -1
  13. package/artifacts/abis/SuperToken.min.json +1 -1
  14. package/artifacts/abis/UBIScheme.min.json +1 -1
  15. package/artifacts/abis/UBISchemeV2.min.json +1 -1
  16. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  17. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  18. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  19. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  20. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  21. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  23. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  27. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  28. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  32. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  33. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +1 -1
  34. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  35. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  36. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  37. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  38. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  39. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  40. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  41. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  42. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  43. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  44. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  45. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
  46. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.json +2 -2
  47. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  48. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.json +2 -2
  49. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
  50. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.json +2 -2
  51. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  52. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +2 -2
  53. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  54. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +2 -2
  55. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  56. package/artifacts/contracts/governance/GReputation.sol/GReputation.json +2 -2
  57. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  58. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +2 -2
  59. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +1 -1
  60. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +1 -1
  61. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  62. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  63. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.json +2 -2
  64. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  65. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  66. package/artifacts/contracts/governance/Reputation.sol/Reputation.json +2 -2
  67. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  68. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +2 -2
  69. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +1 -1
  70. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +2 -2
  71. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
  72. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.json +2 -2
  73. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  74. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.json +2 -2
  75. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
  76. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.json +2 -2
  77. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  78. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.json +2 -2
  79. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  80. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.json +2 -2
  81. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  82. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.json +2 -2
  83. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  84. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.json +2 -2
  85. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  86. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.json +2 -2
  87. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
  88. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.json +2 -2
  89. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  90. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.json +2 -2
  91. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
  92. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.json +122 -17
  93. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
  94. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.json +242 -17
  95. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
  96. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +256 -18
  97. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  98. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.json +2 -2
  99. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +1 -1
  100. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.json +2 -2
  101. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  102. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.json +15 -2
  103. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  104. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +6 -6
  105. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  106. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.json +2 -2
  107. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  108. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +2 -2
  109. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +1 -1
  110. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.json +2 -2
  111. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  112. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.json +2 -2
  113. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  114. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.json +2 -2
  115. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  116. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  117. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.json +2 -2
  118. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  119. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  120. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +2 -2
  121. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  122. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
  123. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +1 -1
  124. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.json +2 -2
  125. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  126. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.json +2 -2
  127. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  128. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.json +2 -2
  129. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  130. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.json +2 -2
  131. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  132. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.json +2 -2
  133. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  134. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +2 -2
  135. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  136. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +2 -2
  137. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  138. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +2 -2
  139. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  140. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +2 -2
  141. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  142. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.json +2 -2
  143. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  144. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.json +2 -2
  145. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  146. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.json +2 -2
  147. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  148. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.json +2 -2
  149. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  150. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.json +2 -2
  151. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  152. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.json +2 -2
  153. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  154. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.json +2 -2
  155. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  156. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.json +2 -2
  157. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  158. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +242 -17
  159. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  160. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +2 -2
  161. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  162. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +2 -2
  163. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  164. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  165. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +45 -19
  166. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  167. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.json +2 -2
  168. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  169. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.json +2 -2
  170. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  171. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +2 -2
  172. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  173. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +2 -2
  174. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  175. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  176. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  177. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +2 -2
  178. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  179. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  180. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  181. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.json +2 -2
  182. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  183. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +2 -2
  184. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  185. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +2 -2
  186. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  187. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +2 -2
  188. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  189. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +2 -2
  190. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  191. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +2 -2
  192. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  193. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +2 -2
  194. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  195. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.json +2 -2
  196. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  197. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +1 -1
  198. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.json +2 -2
  199. package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +1 -1
  200. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +1 -1
  201. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +1 -1
  202. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.json +2 -2
  203. package/artifacts/contracts/token/IFeesFormula.sol/IFeesFormula.dbg.json +4 -0
  204. package/artifacts/contracts/token/{FeesFormula.sol → IFeesFormula.sol}/IFeesFormula.json +1 -1
  205. package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.dbg.json +4 -0
  206. package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.json +58 -0
  207. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +1 -1
  208. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +1 -1
  209. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +1 -1
  210. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +1 -1
  211. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.json +159 -5
  212. package/artifacts/contracts/token/superfluid/ISuperToken.sol/ISuperToken.dbg.json +4 -0
  213. package/artifacts/contracts/token/superfluid/ISuperToken.sol/ISuperToken.json +1609 -0
  214. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +1 -1
  215. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +233 -190
  216. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +1 -1
  217. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.json +198 -193
  218. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +1 -1
  219. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +1 -1
  220. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +1 -1
  221. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +1 -1
  222. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.json +2 -2
  223. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +1 -1
  224. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.json +2 -2
  225. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  226. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +20 -2
  227. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.dbg.json +1 -1
  228. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.json +20 -2
  229. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  230. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.json +2 -2
  231. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
  232. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.json +2 -2
  233. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  234. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.json +2 -2
  235. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  236. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.json +2 -2
  237. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +1 -1
  238. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.json +2 -2
  239. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.dbg.json +1 -1
  240. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.json +2 -2
  241. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.dbg.json +1 -1
  242. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.json +2 -2
  243. package/artifacts/contracts/utils/BuyGDClone.sol/ISwapRouter.dbg.json +1 -1
  244. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  245. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.json +2 -2
  246. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  247. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.json +2 -2
  248. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  249. package/artifacts/contracts/utils/DSMath.sol/DSMath.json +2 -2
  250. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  251. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.json +2 -2
  252. package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.dbg.json +1 -1
  253. package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.json +2 -2
  254. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  255. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +2 -2
  256. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  257. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  258. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  259. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +2 -2
  260. package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.dbg.json +1 -1
  261. package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.json +2 -2
  262. package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
  263. package/artifacts/contracts/utils/MultiCall.sol/Multicall.json +2 -2
  264. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  265. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.json +2 -2
  266. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  267. package/artifacts/contracts/utils/NameService.sol/NameService.json +2 -2
  268. package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.dbg.json +1 -1
  269. package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.json +2 -2
  270. package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.dbg.json +1 -1
  271. package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.json +2 -2
  272. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  273. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  274. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.json +2 -2
  275. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  276. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.json +2 -2
  277. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  278. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.json +2 -2
  279. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  280. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.json +2 -2
  281. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  282. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.json +2 -2
  283. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  284. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.json +2 -2
  285. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  286. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.json +2 -2
  287. package/contracts/invite/InvitesFuseV2.sol +3 -2
  288. package/contracts/mocks/DistributionBridgeMock.sol +42 -15
  289. package/contracts/mocks/DistributionHelperTest.sol +6 -2
  290. package/contracts/mocks/FeesFormularMock.sol +14 -14
  291. package/contracts/mocks/GasPriceMockOracle.sol +7 -1
  292. package/contracts/reserve/DistributionHelper.sol +147 -23
  293. package/contracts/reserve/GoodReserveCDai.sol +39 -47
  294. package/contracts/staking/GoodFundManager.sol +18 -37
  295. package/contracts/token/GoodDollar.sol +11 -16
  296. package/contracts/token/MultichainFeeFormula.sol +34 -0
  297. package/contracts/token/superfluid/ConstantFlowNFTs.sol +3 -0
  298. package/contracts/token/superfluid/ISuperGoodDollar.sol +4 -5
  299. package/contracts/token/superfluid/ISuperToken.sol +464 -0
  300. package/contracts/token/superfluid/SuperGoodDollar.sol +408 -376
  301. package/contracts/token/superfluid/SuperToken.sol +144 -144
  302. package/contracts/ubi/UBIScheme.sol +9 -5
  303. package/contracts/ubi/UBISchemeV2.sol +6 -0
  304. package/contracts/utils/AdminWallet.sol +2 -1
  305. package/contracts/utils/AdminWalletFuse.sol +2 -1
  306. package/contracts/utils/BuyAndBridgeHelper.sol +13 -13
  307. package/contracts/utils/MultiCall.sol +8 -10
  308. package/dist/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +2 -2
  309. package/dist/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +233 -190
  310. package/dist/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.json +2 -2
  311. package/dist/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.json +2 -2
  312. package/hardhat.config.ts +46 -15
  313. package/package.json +7 -7
  314. package/releases/deploy-settings.json +3 -1
  315. package/releases/deployment.json +6 -2
  316. package/scripts/analytics/faucetStats.ts +19 -15
  317. package/scripts/fv.ts +305 -0
  318. package/scripts/multichain-deploy/1_basicdao-deploy.ts +18 -9
  319. package/scripts/multichain-deploy/helpers.ts +204 -64
  320. package/scripts/proposals/gip-15.ts +427 -0
  321. package/scripts/upgrades/multichain-formula-upgrade.ts +140 -0
  322. package/scripts/upgrades/restoreFunds.ts +91 -0
  323. package/scripts/upgrades/superfluid-nft-celo-gas-token.ts +159 -0
  324. package/scripts/utils.ts +15 -0
  325. package/test/helpers.ts +73 -10
  326. package/test/reserve/DistributionHelper.test.ts +183 -218
  327. package/test/reserve/GoodReserveCDai.distribution.test.ts +21 -144
  328. package/test/reserve/GoodReserveCDai.test.ts +98 -302
  329. package/test/staking/StakingRewards.test.ts +324 -936
  330. package/test/token/CeloGasToken.test.ts +108 -0
  331. package/test/token/SuperGoodDollar.test.ts +15 -6
  332. package/test/utils/AdminWallet.test.ts +97 -38
  333. package/test/utils/BuyAndBridgeHelper.test.ts +9 -33
  334. package/truffle-config.js +24 -6
  335. package/types/ConstantInflowNFT.ts +969 -0
  336. package/types/ConstantOutflowNFT.ts +1031 -0
  337. package/types/DistributionBridgeMock.ts +203 -70
  338. package/types/DistributionHelper.ts +325 -30
  339. package/types/DistributionHelperTest.ts +325 -30
  340. package/types/DistributionHelperTestHelper.ts +355 -35
  341. package/types/FlowNFTBase.ts +887 -0
  342. package/types/GasPriceMockOracle.ts +29 -0
  343. package/types/GoodReserveCDai.ts +79 -20
  344. package/types/IConstantFlowAgreementV1.ts +1391 -0
  345. package/types/IConstantInflowNFT.ts +772 -0
  346. package/types/IConstantOutflowNFT.ts +834 -0
  347. package/types/IERC721.ts +487 -0
  348. package/types/IERC721Metadata.ts +538 -0
  349. package/types/IFlowNFTBase.ts +711 -0
  350. package/types/IInstantDistributionAgreementV1.ts +1183 -0
  351. package/types/ILayerZeroFeeEstimator.ts +136 -0
  352. package/types/IMessagePassingBridge.ts +774 -0
  353. package/types/ISETH.ts +2668 -0
  354. package/types/ISETHCustom.ts +161 -0
  355. package/types/ISuperGoodDollar.ts +277 -25
  356. package/types/ISuperToken.ts +202 -346
  357. package/types/ISuperfluid.ts +7 -2
  358. package/types/ISuperfluidGovernance.ts +40 -5
  359. package/types/MultichainFeeFormula.ts +130 -0
  360. package/types/SuperGoodDollar.ts +383 -349
  361. package/types/SuperToken.ts +319 -344
  362. package/types/UBIScheme.ts +36 -0
  363. package/types/UBISchemeV2.ts +36 -0
  364. package/types/factories/AaveMock__factory.ts +1 -1
  365. package/types/factories/AaveStakingFactory__factory.ts +1 -1
  366. package/types/factories/AaveUSDMockOracle__factory.ts +1 -1
  367. package/types/factories/AdminWalletFuse__factory.ts +1 -1
  368. package/types/factories/AdminWallet__factory.ts +1 -1
  369. package/types/factories/BancorFormula__factory.ts +1 -1
  370. package/types/factories/BaseShareFieldV2__factory.ts +1 -1
  371. package/types/factories/BaseShareField__factory.ts +1 -1
  372. package/types/factories/BatUSDMockOracle__factory.ts +1 -1
  373. package/types/factories/BuyAndBridgeHelper__factory.ts +1 -1
  374. package/types/factories/BuyGDCloneFactory__factory.ts +1 -1
  375. package/types/factories/BuyGDClone__factory.ts +1 -1
  376. package/types/factories/CBATMock__factory.ts +1 -1
  377. package/types/factories/CDAILowWorthMock__factory.ts +1 -1
  378. package/types/factories/CDAIMock__factory.ts +1 -1
  379. package/types/factories/CDAINonMintableMock__factory.ts +1 -1
  380. package/types/factories/CDecimalsMock__factory.ts +1 -1
  381. package/types/factories/CSDTMock__factory.ts +1 -1
  382. package/types/factories/CUSDCMock__factory.ts +1 -1
  383. package/types/factories/ClaimersDistribution__factory.ts +1 -1
  384. package/types/factories/CompUSDMockOracle__factory.ts +1 -1
  385. package/types/factories/CompoundStakingFactory__factory.ts +1 -1
  386. package/types/factories/CompoundVotingMachine__factory.ts +1 -1
  387. package/types/factories/ConstantInflowNFT__factory.ts +758 -0
  388. package/types/factories/ConstantOutflowNFT__factory.ts +817 -0
  389. package/types/factories/DAIMock__factory.ts +1 -1
  390. package/types/factories/DAOContract__factory.ts +1 -1
  391. package/types/factories/DAOUpgradeableContract__factory.ts +1 -1
  392. package/types/factories/DaiEthPriceMockOracle__factory.ts +1 -1
  393. package/types/factories/DecimalsMock__factory.ts +1 -1
  394. package/types/factories/DistributionBridgeMock__factory.ts +121 -16
  395. package/types/factories/DistributionHelperTestHelper__factory.ts +255 -17
  396. package/types/factories/DistributionHelperTest__factory.ts +241 -16
  397. package/types/factories/DistributionHelper__factory.ts +241 -16
  398. package/types/factories/DonationsStaking__factory.ts +1 -1
  399. package/types/factories/ERC1967Proxy__factory.ts +1 -1
  400. package/types/factories/ERC20PresetMinterPauserUpgradeable__factory.ts +1 -1
  401. package/types/factories/ERC20Upgradeable__factory.ts +1 -1
  402. package/types/factories/EthUSDMockOracle__factory.ts +1 -1
  403. package/types/factories/EventsEmitter__factory.ts +1 -1
  404. package/types/factories/ExchangeHelper__factory.ts +1 -1
  405. package/types/factories/Faucet__factory.ts +1 -1
  406. package/types/factories/FeesFormulaMock__factory.ts +1 -1
  407. package/types/factories/FlowNFTBase__factory.ts +642 -0
  408. package/types/factories/FuseFaucetV2__factory.ts +1 -1
  409. package/types/factories/FuseFaucet__factory.ts +1 -1
  410. package/types/factories/FuseStakingV3__factory.ts +1 -1
  411. package/types/factories/GDFaucet__factory.ts +1 -1
  412. package/types/factories/GReputation__factory.ts +1 -1
  413. package/types/factories/GasPriceMockOracle__factory.ts +14 -1
  414. package/types/factories/GoodAaveStakingV2__factory.ts +1 -1
  415. package/types/factories/GoodAaveStaking__factory.ts +1 -1
  416. package/types/factories/GoodCompoundStakingTest__factory.ts +1 -1
  417. package/types/factories/GoodCompoundStakingV2__factory.ts +1 -1
  418. package/types/factories/GoodCompoundStaking__factory.ts +1 -1
  419. package/types/factories/GoodDollarMintBurnWrapper__factory.ts +1 -1
  420. package/types/factories/GoodDollarStakingMock__factory.ts +1 -1
  421. package/types/factories/GoodDollarStaking__factory.ts +1 -1
  422. package/types/factories/GoodDollar__factory.ts +1 -1
  423. package/types/factories/GoodFundManagerTest__factory.ts +1 -1
  424. package/types/factories/GoodFundManager__factory.ts +1 -1
  425. package/types/factories/GoodMarketMaker__factory.ts +1 -1
  426. package/types/factories/GoodReserveCDai__factory.ts +44 -18
  427. package/types/factories/GovernanceStaking__factory.ts +1 -1
  428. package/types/factories/IConstantFlowAgreementV1__factory.ts +1064 -0
  429. package/types/factories/IConstantInflowNFT__factory.ts +551 -0
  430. package/types/factories/IConstantOutflowNFT__factory.ts +614 -0
  431. package/types/factories/IERC721Metadata__factory.ts +356 -0
  432. package/types/factories/IERC721__factory.ts +308 -0
  433. package/types/factories/IFlowNFTBase__factory.ts +512 -0
  434. package/types/factories/IInstantDistributionAgreementV1__factory.ts +1015 -0
  435. package/types/factories/ILayerZeroFeeEstimator__factory.ts +79 -0
  436. package/types/factories/IMessagePassingBridge__factory.ts +446 -0
  437. package/types/factories/ISETHCustom__factory.ts +56 -0
  438. package/types/factories/ISETH__factory.ts +1866 -0
  439. package/types/factories/ISuperGoodDollar__factory.ts +159 -5
  440. package/types/factories/ISuperTokenFactory__factory.ts +5 -0
  441. package/types/factories/ISuperToken__factory.ts +130 -191
  442. package/types/factories/ISuperfluidGovernance__factory.ts +23 -5
  443. package/types/factories/ISuperfluid__factory.ts +10 -0
  444. package/types/factories/IdentityFix__factory.ts +1 -1
  445. package/types/factories/IdentityMock__factory.ts +1 -1
  446. package/types/factories/IdentityV2__factory.ts +1 -1
  447. package/types/factories/IncentiveControllerMock__factory.ts +1 -1
  448. package/types/factories/InvitesFuseV2__factory.ts +1 -1
  449. package/types/factories/InvitesV1__factory.ts +1 -1
  450. package/types/factories/InvitesV2__factory.ts +1 -1
  451. package/types/factories/LendingPoolMock__factory.ts +1 -1
  452. package/types/factories/Multicall__factory.ts +1 -1
  453. package/types/factories/MultichainBridgeHelper__factory.ts +1 -1
  454. package/types/factories/MultichainFeeFormula__factory.ts +113 -0
  455. package/types/factories/MultichainRouterMock__factory.ts +1 -1
  456. package/types/factories/NameService__factory.ts +1 -1
  457. package/types/factories/OneTimePaymentsV2__factory.ts +1 -1
  458. package/types/factories/OneTimePayments__factory.ts +1 -1
  459. package/types/factories/OverMintTesterRegularStake__factory.ts +1 -1
  460. package/types/factories/OverMintTester__factory.ts +1 -1
  461. package/types/factories/PayableMock__factory.ts +1 -1
  462. package/types/factories/ProtocolUpgradeFuseRecover__factory.ts +1 -1
  463. package/types/factories/ProtocolUpgradeFuse__factory.ts +1 -1
  464. package/types/factories/ProtocolUpgradeRecover__factory.ts +1 -1
  465. package/types/factories/ProtocolUpgrade__factory.ts +1 -1
  466. package/types/factories/ProxyFactory1967__factory.ts +1 -1
  467. package/types/factories/ReputationTestHelper__factory.ts +1 -1
  468. package/types/factories/Reputation__factory.ts +1 -1
  469. package/types/factories/SixteenDecimalsTokenMock__factory.ts +1 -1
  470. package/types/factories/StakersDistribution__factory.ts +1 -1
  471. package/types/factories/StakingMockFixedAPY__factory.ts +1 -1
  472. package/types/factories/SuperGoodDollar__factory.ts +230 -187
  473. package/types/factories/SuperToken__factory.ts +197 -192
  474. package/types/factories/SwapHelperTest__factory.ts +1 -1
  475. package/types/factories/TwentyDecimalsTokenMock__factory.ts +1 -1
  476. package/types/factories/UBISchemeV2__factory.ts +19 -1
  477. package/types/factories/UBIScheme__factory.ts +19 -1
  478. package/types/factories/USDCMock__factory.ts +1 -1
  479. package/types/factories/UUPSProxy__factory.ts +1 -1
  480. package/types/factories/UniswapV2SwapHelper__factory.ts +1 -1
  481. package/types/factories/UpgradableMock2__factory.ts +1 -1
  482. package/types/factories/UpgradableMock3__factory.ts +1 -1
  483. package/types/factories/UpgradableMock4__factory.ts +1 -1
  484. package/types/factories/UpgradableMock__factory.ts +1 -1
  485. package/types/hardhat.d.ts +166 -4
  486. package/types/index.ts +34 -4
  487. package/yarn.lock +1288 -719
  488. package/artifacts/contracts/token/FeesFormula.sol/IFeesFormula.dbg.json +0 -4
  489. /package/contracts/token/{FeesFormula.sol → IFeesFormula.sol} +0 -0
@@ -1,16 +1,11 @@
1
- import { ethers, waffle, upgrades } from "hardhat";
2
- import { loadFixture } from "@nomicfoundation/hardhat-network-helpers";
1
+ import { ethers, upgrades, artifacts } from "hardhat";
2
+ import { loadFixture, setCode } from "@nomicfoundation/hardhat-network-helpers";
3
3
  import { expect } from "chai";
4
- import {
5
- GoodReserveCDai,
6
- DistributionHelperTestHelper,
7
- DistributionBridgeMock,
8
- IGoodDollar
9
- } from "../../types";
4
+ import { GoodReserveCDai, DistributionHelperTestHelper, DistributionBridgeMock, IGoodDollar } from "../../types";
10
5
  import { createDAO, increaseTime } from "../helpers";
11
- import { Contract } from "ethers";
12
6
  import { FormatTypes } from "@ethersproject/abi";
13
- import { recoverAddress } from "ethers/lib/utils";
7
+ import * as waffle from "ethereum-waffle";
8
+ import { BaseContract } from "ethers";
14
9
 
15
10
  const BN = ethers.BigNumber;
16
11
  export const NULL_ADDRESS = ethers.constants.AddressZero;
@@ -18,18 +13,10 @@ export const BLOCK_INTERVAL = 1;
18
13
 
19
14
  describe("DistributionHelper", () => {
20
15
  let goodReserve: GoodReserveCDai;
21
- let goodDollar: IGoodDollar,
22
- genericCall,
23
- avatar,
24
- founder,
25
- signers,
26
- setDAOAddress,
27
- nameService,
28
- cDai;
16
+ let goodDollar: IGoodDollar, genericCall, avatar, founder, signers, setDAOAddress, nameService, cDai;
29
17
 
30
18
  before(async () => {
31
19
  [founder, ...signers] = await ethers.getSigners();
32
-
33
20
  let {
34
21
  controller: ctrl,
35
22
  avatar: av,
@@ -65,113 +52,108 @@ describe("DistributionHelper", () => {
65
52
  goodReserve = reserve as GoodReserveCDai;
66
53
  });
67
54
 
68
- const fixture = async (wallets, provider) => {
69
- const df = await ethers.getContractFactory("DistributionHelperTestHelper");
70
- const rf = await ethers.getContractFactory("DistributionBridgeMock");
55
+ const fixture = async () => {
56
+ const mpbf = await artifacts.readArtifact("IStaticOracle");
71
57
 
72
- wallets = provider.getWallets();
73
- // const distHelper = (await waffle.deployContract(wallets[0], {
74
- // abi: JSON.parse(df.interface.format(FormatTypes.json) as string) as any[],
75
- // bytecode: df.bytecode
76
- // })) as DistributionHelperTestHelper;
58
+ let oracle = await waffle.deployMockContract(founder, mpbf.abi);
59
+ oracle.mock.quoteSpecificFeeTiersWithTimePeriod.returns(1e13, []);
77
60
 
78
- // await distHelper.initialize(nameService.address);
79
61
  const distHelper = (await upgrades.deployProxy(
80
62
  await ethers.getContractFactory("DistributionHelperTestHelper"),
81
63
  [nameService.address],
82
64
  { kind: "uups" }
83
65
  )) as DistributionHelperTestHelper;
84
66
 
85
- const bridge = (await waffle.deployContract(wallets[0], {
86
- abi: JSON.parse(rf.interface.format(FormatTypes.json) as string) as any[],
87
- bytecode: rf.bytecode
88
- })) as DistributionBridgeMock;
67
+ await distHelper.setOracle(oracle.address);
68
+
69
+ //make sure disthelper has enough native token so it doesnt try to swap G$s
70
+ await founder.sendTransaction({ to: distHelper.address, value: ethers.constants.WeiPerEther });
71
+ const bridge = (await ethers.deployContract("DistributionBridgeMock")) as DistributionBridgeMock;
72
+
73
+ const encodedCall = distHelper.interface.encodeFunctionData("setFeeSettings", [
74
+ {
75
+ axelarBaseFeeUSD: "100000000000000000",
76
+ bridgeExecuteGas: 400000,
77
+ targetChainGasPrice: 5e9,
78
+ maxFee: "5000000000000000",
79
+ minBalanceForFees: "10000000000000000",
80
+ percentageToSellForFee: "5"
81
+ }
82
+ ]);
83
+
84
+ await genericCall(distHelper.address, encodedCall, avatar.address, 0);
89
85
 
90
86
  await distHelper.setBridges(bridge.address, bridge.address);
91
- return { distHelper, bridge };
87
+
88
+ return { distHelper, bridge, oracle };
92
89
  };
93
90
 
94
91
  it("should not allow to add recipient", async () => {
95
- const { distHelper } = await waffle.loadFixture(fixture);
92
+ const { distHelper } = await loadFixture(fixture);
96
93
 
97
94
  const recipient = signers[0];
98
95
 
99
96
  await expect(
100
97
  distHelper.addOrUpdateRecipient({
101
98
  bps: 3000,
102
- chainId: 1,
99
+ chainId: 42220,
103
100
  addr: recipient.address,
104
101
  transferType: 0
105
102
  })
106
- ).to.be.revertedWith(
107
- "is missing role 0x0000000000000000000000000000000000000000000000000000000000000000"
108
- );
103
+ ).to.be.revertedWith("is missing role 0x0000000000000000000000000000000000000000000000000000000000000000");
109
104
  });
110
105
 
111
106
  it("should allow to add recipient by avatar", async () => {
112
- const { distHelper } = await waffle.loadFixture(fixture);
107
+ const { distHelper } = await loadFixture(fixture);
113
108
 
114
109
  const recipient = signers[0];
115
110
 
116
- const encodedCall = distHelper.interface.encodeFunctionData(
117
- "addOrUpdateRecipient",
118
- [
119
- {
120
- bps: 3000,
121
- chainId: 1,
122
- addr: recipient.address,
123
- transferType: 0
124
- }
125
- ]
126
- );
111
+ const encodedCall = distHelper.interface.encodeFunctionData("addOrUpdateRecipient", [
112
+ {
113
+ bps: 3000,
114
+ chainId: 42220,
115
+ addr: recipient.address,
116
+ transferType: 0
117
+ }
118
+ ]);
127
119
 
128
120
  await genericCall(distHelper.address, encodedCall, avatar.address, 0);
129
121
  const dr = await distHelper.distributionRecipients(0);
130
122
  expect(dr.addr).to.equal(recipient.address);
131
- expect(dr.chainId).to.equal(1);
123
+ expect(dr.chainId).to.equal(42220);
132
124
  expect(dr.bps).to.equal(3000);
133
125
  expect(dr.transferType).to.equal(0);
134
126
  });
135
127
 
136
128
  it("should allow to update recipient by avatar", async () => {
137
- const { distHelper } = await waffle.loadFixture(fixture);
129
+ const { distHelper } = await loadFixture(fixture);
138
130
 
139
131
  const recipient = signers[0];
140
132
 
141
- let encodedCall = distHelper.interface.encodeFunctionData(
142
- "addOrUpdateRecipient",
143
- [
144
- {
145
- bps: 1000,
146
- chainId: 2,
147
- addr: recipient.address,
148
- transferType: 1
149
- }
150
- ]
151
- );
133
+ let encodedCall = distHelper.interface.encodeFunctionData("addOrUpdateRecipient", [
134
+ {
135
+ bps: 1000,
136
+ chainId: 2,
137
+ addr: recipient.address,
138
+ transferType: 1
139
+ }
140
+ ]);
152
141
 
153
142
  await genericCall(distHelper.address, encodedCall, avatar.address, 0);
154
143
 
155
- encodedCall = distHelper.interface.encodeFunctionData(
156
- "addOrUpdateRecipient",
157
- [
158
- {
159
- bps: 1500,
160
- chainId: 45,
161
- addr: recipient.address,
162
- transferType: 2
163
- }
164
- ]
165
- );
144
+ encodedCall = distHelper.interface.encodeFunctionData("addOrUpdateRecipient", [
145
+ {
146
+ bps: 1500,
147
+ chainId: 45,
148
+ addr: recipient.address,
149
+ transferType: 2
150
+ }
151
+ ]);
166
152
 
167
153
  await genericCall(distHelper.address, encodedCall, avatar.address, 0);
168
154
 
169
- const updEvents = await distHelper.queryFilter(
170
- distHelper.filters.RecipientUpdated()
171
- );
172
- const addEvents = await distHelper.queryFilter(
173
- distHelper.filters.RecipientAdded()
174
- );
155
+ const updEvents = await distHelper.queryFilter(distHelper.filters.RecipientUpdated());
156
+ const addEvents = await distHelper.queryFilter(distHelper.filters.RecipientAdded());
175
157
 
176
158
  const dr = await distHelper.distributionRecipients(0);
177
159
  expect(dr.addr).to.equal(recipient.address);
@@ -181,29 +163,24 @@ describe("DistributionHelper", () => {
181
163
  });
182
164
 
183
165
  it("should distribute via fuse bridge", async () => {
184
- const { distHelper, bridge } = await waffle.loadFixture(fixture);
166
+ const { distHelper, bridge } = await loadFixture(fixture);
185
167
 
186
168
  const recipient = signers[0];
187
169
 
188
- let encodedCall = distHelper.interface.encodeFunctionData(
189
- "addOrUpdateRecipient",
190
- [
191
- {
192
- bps: 2000,
193
- chainId: 1,
194
- addr: recipient.address,
195
- transferType: 0
196
- }
197
- ]
198
- );
170
+ let encodedCall = distHelper.interface.encodeFunctionData("addOrUpdateRecipient", [
171
+ {
172
+ bps: 2000,
173
+ chainId: 42220,
174
+ addr: recipient.address,
175
+ transferType: 0
176
+ }
177
+ ]);
199
178
 
200
179
  await genericCall(distHelper.address, encodedCall, avatar.address, 0);
201
180
 
202
181
  await goodDollar.mint(distHelper.address, "100000000000");
203
182
  await distHelper.onDistribution("100000000000");
204
- expect(await goodDollar.balanceOf(bridge.address)).to.equal(
205
- (100000000000 * 2000) / 10000
206
- );
183
+ expect(await goodDollar.balanceOf(bridge.address)).to.equal((100000000000 * 2000) / 10000);
207
184
 
208
185
  const events = await bridge.queryFilter(bridge.filters.OnToken());
209
186
  expect(events[0].args.sender).to.equal(distHelper.address);
@@ -211,185 +188,173 @@ describe("DistributionHelper", () => {
211
188
  expect(events[0].args.data).to.equal(recipient.address.toLowerCase());
212
189
  });
213
190
 
214
- it("should distribute via multichain bridge", async () => {
215
- const { distHelper, bridge } = await waffle.loadFixture(fixture);
191
+ it("should distribute via layerzero bridge", async () => {
192
+ const { distHelper, bridge } = await loadFixture(fixture);
193
+
194
+ const recipient = signers[0];
195
+
196
+ let encodedCall = distHelper.interface.encodeFunctionData("addOrUpdateRecipient", [
197
+ {
198
+ bps: 2000,
199
+ chainId: 42220,
200
+ addr: recipient.address, //needs to be a contract for transferAndCall to work
201
+ transferType: 1
202
+ }
203
+ ]);
204
+
205
+ await genericCall(distHelper.address, encodedCall, avatar.address, 0);
206
+
207
+ await goodDollar.mint(distHelper.address, "100000000000");
208
+ await founder.sendTransaction({ to: distHelper.address, value: ethers.constants.WeiPerEther });
209
+ await distHelper.onDistribution("100000000000");
210
+ expect(await goodDollar.allowance(distHelper.address, bridge.address)).to.equal((100000000000 * 2000) / 10000);
211
+
212
+ const events = await bridge.queryFilter(bridge.filters.BridgeLz());
213
+ expect(events[0].args.recipient).to.equal(recipient.address);
214
+ expect(events[0].args.amount).to.equal((100000000000 * 2000) / 10000);
215
+ expect(events[0].args.chainId).to.equal(42220);
216
+ expect(events[0].args.fee).to.equal(5e14);
217
+ });
218
+
219
+ it("should distribute via axelar bridge", async () => {
220
+ const { distHelper, bridge } = await loadFixture(fixture);
216
221
 
217
222
  const recipient = signers[0];
218
223
 
219
- let encodedCall = distHelper.interface.encodeFunctionData(
220
- "addOrUpdateRecipient",
221
- [
222
- {
223
- bps: 2000,
224
- chainId: 4000,
225
- addr: recipient.address, //needs to be a contract for transferAndCall to work
226
- transferType: 1
227
- }
228
- ]
229
- );
224
+ let encodedCall = distHelper.interface.encodeFunctionData("addOrUpdateRecipient", [
225
+ {
226
+ bps: 2000,
227
+ chainId: 42220,
228
+ addr: recipient.address, //needs to be a contract for transferAndCall to work
229
+ transferType: 2
230
+ }
231
+ ]);
230
232
 
231
233
  await genericCall(distHelper.address, encodedCall, avatar.address, 0);
232
234
 
233
235
  await goodDollar.mint(distHelper.address, "100000000000");
236
+ await founder.sendTransaction({ to: distHelper.address, value: ethers.constants.WeiPerEther });
234
237
  await distHelper.onDistribution("100000000000");
235
- expect(
236
- await goodDollar.allowance(distHelper.address, bridge.address)
237
- ).to.equal((100000000000 * 2000) / 10000);
238
+ expect(await goodDollar.allowance(distHelper.address, bridge.address)).to.equal((100000000000 * 2000) / 10000);
238
239
 
239
- const events = await bridge.queryFilter(bridge.filters.AnySwap());
240
- expect(events[0].args.token).to.equal(await distHelper.anyGoodDollar());
240
+ const events = await bridge.queryFilter(bridge.filters.BridgeAxl());
241
241
  expect(events[0].args.recipient).to.equal(recipient.address);
242
242
  expect(events[0].args.amount).to.equal((100000000000 * 2000) / 10000);
243
- expect(events[0].args.chainId).to.equal(4000);
243
+ expect(events[0].args.chainId).to.equal(42220);
244
+ expect(events[0].args.fee).to.equal(2.2e13); //fee should be 2e13 with 10% extra
245
+ expect(events[0].args.gasRefund).to.equal(await distHelper.getTargetChainRefundAddress(42220));
244
246
  });
245
247
 
246
248
  it("should distribute via transferAndCall", async () => {
247
- const { distHelper, bridge } = await waffle.loadFixture(fixture);
249
+ const { distHelper, bridge } = await loadFixture(fixture);
248
250
 
249
251
  const recipient = signers[0];
250
252
 
251
- let encodedCall = distHelper.interface.encodeFunctionData(
252
- "addOrUpdateRecipient",
253
- [
254
- {
255
- bps: 2555,
256
- chainId: 1,
257
- addr: signers[0].address,
258
- transferType: 2
259
- }
260
- ]
261
- );
253
+ let encodedCall = distHelper.interface.encodeFunctionData("addOrUpdateRecipient", [
254
+ {
255
+ bps: 2555,
256
+ chainId: 42220,
257
+ addr: signers[0].address,
258
+ transferType: 3
259
+ }
260
+ ]);
262
261
 
263
262
  await genericCall(distHelper.address, encodedCall, avatar.address, 0);
264
263
 
265
264
  await goodDollar.mint(distHelper.address, "100000000000");
266
265
  await distHelper.onDistribution("100000000000");
267
- expect(await goodDollar.balanceOf(signers[0].address)).to.equal(
268
- (100000000000 * 2555) / 10000
269
- );
266
+ expect(await goodDollar.balanceOf(signers[0].address)).to.equal((100000000000 * 2555) / 10000);
270
267
  });
271
268
 
272
269
  it("should distribute to multiple recipients", async () => {
273
- const { distHelper, bridge } = await waffle.loadFixture(fixture);
270
+ const { distHelper, bridge } = await loadFixture(fixture);
274
271
 
275
272
  const recipient = signers[0];
276
273
 
277
- let encodedCall = distHelper.interface.encodeFunctionData(
278
- "addOrUpdateRecipient",
279
- [
280
- {
281
- bps: 2555,
282
- chainId: 1,
283
- addr: signers[0].address,
284
- transferType: 2
285
- }
286
- ]
287
- );
274
+ let encodedCall = distHelper.interface.encodeFunctionData("addOrUpdateRecipient", [
275
+ {
276
+ bps: 2555,
277
+ chainId: 42220,
278
+ addr: signers[0].address,
279
+ transferType: 3
280
+ }
281
+ ]);
288
282
 
289
283
  await genericCall(distHelper.address, encodedCall, avatar.address, 0);
290
284
 
291
- encodedCall = distHelper.interface.encodeFunctionData(
292
- "addOrUpdateRecipient",
293
- [
294
- {
295
- bps: 1000,
296
- chainId: 1,
297
- addr: signers[1].address,
298
- transferType: 2
299
- }
300
- ]
301
- );
285
+ encodedCall = distHelper.interface.encodeFunctionData("addOrUpdateRecipient", [
286
+ {
287
+ bps: 1000,
288
+ chainId: 42220,
289
+ addr: signers[1].address,
290
+ transferType: 3
291
+ }
292
+ ]);
302
293
 
303
294
  await genericCall(distHelper.address, encodedCall, avatar.address, 0);
304
295
 
305
- encodedCall = distHelper.interface.encodeFunctionData(
306
- "addOrUpdateRecipient",
307
- [
308
- {
309
- bps: 5,
310
- chainId: 1,
311
- addr: signers[2].address,
312
- transferType: 2
313
- }
314
- ]
315
- );
296
+ encodedCall = distHelper.interface.encodeFunctionData("addOrUpdateRecipient", [
297
+ {
298
+ bps: 5,
299
+ chainId: 42220,
300
+ addr: signers[2].address,
301
+ transferType: 3
302
+ }
303
+ ]);
316
304
 
317
305
  await genericCall(distHelper.address, encodedCall, avatar.address, 0);
318
306
 
319
307
  await goodDollar.mint(distHelper.address, "100000000000");
320
308
  await distHelper.onDistribution("100000000000");
321
- expect(await goodDollar.balanceOf(signers[0].address)).to.equal(
322
- (100000000000 * 2555) / 10000
323
- );
324
- expect(await goodDollar.balanceOf(signers[1].address)).to.equal(
325
- (100000000000 * 1000) / 10000
326
- );
327
- expect(await goodDollar.balanceOf(signers[2].address)).to.equal(
328
- (100000000000 * 5) / 10000
329
- );
309
+ expect(await goodDollar.balanceOf(signers[0].address)).to.equal((100000000000 * 2555) / 10000);
310
+ expect(await goodDollar.balanceOf(signers[1].address)).to.equal((100000000000 * 1000) / 10000);
311
+ expect(await goodDollar.balanceOf(signers[2].address)).to.equal((100000000000 * 5) / 10000);
330
312
  });
331
313
 
332
314
  it("should emit distribution event for multiple recipients", async () => {
333
- const { distHelper, bridge } = await waffle.loadFixture(fixture);
315
+ const { distHelper, bridge } = await loadFixture(fixture);
334
316
 
335
317
  const recipient = signers[0];
336
318
 
337
- let encodedCall = distHelper.interface.encodeFunctionData(
338
- "addOrUpdateRecipient",
339
- [
340
- {
341
- bps: 2555,
342
- chainId: 1,
343
- addr: signers[0].address,
344
- transferType: 2
345
- }
346
- ]
347
- );
319
+ let encodedCall = distHelper.interface.encodeFunctionData("addOrUpdateRecipient", [
320
+ {
321
+ bps: 2555,
322
+ chainId: 42220,
323
+ addr: signers[0].address,
324
+ transferType: 3
325
+ }
326
+ ]);
348
327
 
349
328
  await genericCall(distHelper.address, encodedCall, avatar.address, 0);
350
329
 
351
- encodedCall = distHelper.interface.encodeFunctionData(
352
- "addOrUpdateRecipient",
353
- [
354
- {
355
- bps: 1000,
356
- chainId: 1,
357
- addr: signers[1].address,
358
- transferType: 2
359
- }
360
- ]
361
- );
330
+ encodedCall = distHelper.interface.encodeFunctionData("addOrUpdateRecipient", [
331
+ {
332
+ bps: 1000,
333
+ chainId: 42220,
334
+ addr: signers[1].address,
335
+ transferType: 3
336
+ }
337
+ ]);
362
338
 
363
339
  await genericCall(distHelper.address, encodedCall, avatar.address, 0);
364
340
 
365
- encodedCall = distHelper.interface.encodeFunctionData(
366
- "addOrUpdateRecipient",
367
- [
368
- {
369
- bps: 5,
370
- chainId: 1,
371
- addr: signers[2].address,
372
- transferType: 2
373
- }
374
- ]
375
- );
341
+ encodedCall = distHelper.interface.encodeFunctionData("addOrUpdateRecipient", [
342
+ {
343
+ bps: 5,
344
+ chainId: 42220,
345
+ addr: signers[2].address,
346
+ transferType: 3
347
+ }
348
+ ]);
376
349
 
377
350
  await genericCall(distHelper.address, encodedCall, avatar.address, 0);
378
351
 
379
352
  await goodDollar.mint(distHelper.address, "100000000000");
380
353
  await distHelper.onDistribution("100000000000");
381
354
 
382
- const DistributionEvents = await distHelper.queryFilter(
383
- distHelper.filters.Distribution()
384
- );
385
- expect(DistributionEvents[0].args.distributionRecipients[0].addr).eq(
386
- signers[0].address
387
- );
388
- expect(DistributionEvents[0].args.distributionRecipients[1].addr).eq(
389
- signers[1].address
390
- );
391
- expect(DistributionEvents[0].args.distributionRecipients[2].addr).eq(
392
- signers[2].address
393
- );
355
+ const DistributionEvents = await distHelper.queryFilter(distHelper.filters.Distribution());
356
+ expect(DistributionEvents[0].args.distributionRecipients[0].addr).eq(signers[0].address);
357
+ expect(DistributionEvents[0].args.distributionRecipients[1].addr).eq(signers[1].address);
358
+ expect(DistributionEvents[0].args.distributionRecipients[2].addr).eq(signers[2].address);
394
359
  });
395
360
  });