@gooddollar/goodprotocol 2.0.22 → 2.0.24

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 (234) hide show
  1. package/artifacts/abis/BuyGDClone.min.json +1 -1
  2. package/artifacts/abis/BuyGDCloneFactory.min.json +1 -1
  3. package/artifacts/abis/DistributionHelper.min.json +1 -1
  4. package/artifacts/abis/DistributionHelperTest.min.json +1 -1
  5. package/artifacts/abis/DistributionHelperTestHelper.min.json +1 -1
  6. package/artifacts/abis/DonateGDClone.min.json +1 -1
  7. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  8. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  9. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  10. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  11. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  12. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  13. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  14. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  15. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  16. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  17. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  18. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  19. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  20. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  21. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  23. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  27. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  28. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  32. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  33. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  34. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  35. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  36. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
  37. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  38. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
  39. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  40. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  41. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  42. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  43. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +1 -1
  44. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +1 -1
  45. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  46. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  47. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  48. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  49. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +2 -2
  51. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +1 -1
  52. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
  53. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  54. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
  55. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  56. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  57. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  58. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  59. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  60. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
  61. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  62. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
  63. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
  64. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.json +17 -4
  65. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
  66. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +17 -4
  67. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  68. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +1 -1
  69. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  70. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  71. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +2 -2
  72. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  73. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  74. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +2 -2
  75. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +1 -1
  76. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  77. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  78. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  79. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  80. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  81. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  82. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  83. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
  84. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +1 -1
  85. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  86. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  87. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  88. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  89. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  90. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  91. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  92. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  93. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  94. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  95. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  96. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  97. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  98. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  99. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  100. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  101. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  102. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +17 -4
  103. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  104. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +2 -2
  105. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  106. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  107. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  108. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +2 -2
  109. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  110. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  111. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  112. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +2 -2
  113. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  114. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  115. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  116. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  117. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +2 -2
  118. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  119. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  120. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  121. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  122. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +2 -2
  123. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  124. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +2 -2
  125. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  126. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +2 -2
  127. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  128. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +2 -2
  129. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  130. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +2 -2
  131. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  132. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +2 -2
  133. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  134. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  135. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +1 -1
  136. package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +1 -1
  137. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +1 -1
  138. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +1 -1
  139. package/artifacts/contracts/token/IFeesFormula.sol/IFeesFormula.dbg.json +1 -1
  140. package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.dbg.json +1 -1
  141. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +1 -1
  142. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +1 -1
  143. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +1 -1
  144. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +1 -1
  145. package/artifacts/contracts/token/superfluid/ISuperToken.sol/ISuperToken.dbg.json +1 -1
  146. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +1 -1
  147. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +2 -2
  148. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +1 -1
  149. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +1 -1
  150. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +1 -1
  151. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +1 -1
  152. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +1 -1
  153. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +1 -1
  154. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  155. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.dbg.json +1 -1
  156. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  157. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
  158. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  159. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  160. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.json +2 -2
  161. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +1 -1
  162. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.json +2 -2
  163. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.dbg.json +1 -1
  164. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.json +48 -5
  165. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.dbg.json +1 -1
  166. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.json +41 -2
  167. package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.dbg.json +1 -1
  168. package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.json +79 -5
  169. package/artifacts/contracts/utils/BuyGDClone.sol/IQuoterV2.dbg.json +1 -1
  170. package/artifacts/contracts/utils/BuyGDClone.sol/ISwapRouter.dbg.json +1 -1
  171. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  172. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  173. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  174. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  175. package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.dbg.json +1 -1
  176. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  177. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  178. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  179. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  180. package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.dbg.json +1 -1
  181. package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
  182. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  183. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  184. package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.dbg.json +1 -1
  185. package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.dbg.json +1 -1
  186. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  187. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  188. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  189. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  190. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  191. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  192. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  193. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  194. package/contracts/reserve/DistributionHelper.sol +16 -2
  195. package/contracts/token/superfluid/SuperGoodDollar.sol +1 -1
  196. package/contracts/utils/BuyGDClone.sol +82 -14
  197. package/dist/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +2 -2
  198. package/hardhat.config.ts +4 -1
  199. package/package.json +2 -2
  200. package/releases/deployment.json +3 -3
  201. package/scripts/analytics/stuckgd.ts +70 -0
  202. package/scripts/fv.ts +58 -5
  203. package/scripts/proposals/updateDistHelper.ts +180 -0
  204. package/scripts/utils.ts +25 -2
  205. package/test/reserve/DistributionHelper.test.ts +1 -1
  206. package/types/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.ts +19 -5
  207. package/types/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.ts +19 -5
  208. package/types/contracts/reserve/DistributionHelper.ts +19 -5
  209. package/types/contracts/utils/BuyGDClone.sol/BuyGDClone.ts +28 -3
  210. package/types/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.ts +52 -2
  211. package/types/contracts/utils/BuyGDClone.sol/DonateGDClone.ts +56 -3
  212. package/types/factories/contracts/governance/StakersDistribution__factory.ts +1 -1
  213. package/types/factories/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper__factory.ts +16 -3
  214. package/types/factories/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest__factory.ts +16 -3
  215. package/types/factories/contracts/mocks/GoodCompoundStakingTest__factory.ts +1 -1
  216. package/types/factories/contracts/mocks/GoodFundManagerTest__factory.ts +1 -1
  217. package/types/factories/contracts/mocks/OverMintTesterRegularStake__factory.ts +1 -1
  218. package/types/factories/contracts/reserve/DistributionHelper__factory.ts +16 -3
  219. package/types/factories/contracts/reserve/ExchangeHelper__factory.ts +1 -1
  220. package/types/factories/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai__factory.ts +1 -1
  221. package/types/factories/contracts/staking/DonationsStaking__factory.ts +1 -1
  222. package/types/factories/contracts/staking/GoodFundManager__factory.ts +1 -1
  223. package/types/factories/contracts/staking/aave/AaveStakingFactory__factory.ts +1 -1
  224. package/types/factories/contracts/staking/aave/GoodAaveStakingV2__factory.ts +1 -1
  225. package/types/factories/contracts/staking/aave/GoodAaveStaking__factory.ts +1 -1
  226. package/types/factories/contracts/staking/compound/CompoundStakingFactory__factory.ts +1 -1
  227. package/types/factories/contracts/staking/compound/GoodCompoundStakingV2__factory.ts +1 -1
  228. package/types/factories/contracts/staking/compound/GoodCompoundStaking__factory.ts +1 -1
  229. package/types/factories/contracts/token/superfluid/SuperGoodDollar__factory.ts +1 -1
  230. package/types/factories/contracts/utils/BuyAndBridgeHelper__factory.ts +1 -1
  231. package/types/factories/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory__factory.ts +40 -1
  232. package/types/factories/contracts/utils/BuyGDClone.sol/BuyGDClone__factory.ts +47 -4
  233. package/types/factories/contracts/utils/BuyGDClone.sol/DonateGDClone__factory.ts +78 -4
  234. package/yarn.lock +29 -30
@@ -138,6 +138,8 @@ contract BuyGDClone is Initializable {
138
138
  error REFUND_FAILED(uint256);
139
139
  error NO_BALANCE();
140
140
 
141
+ event Bought(address inToken, uint256 inAmount, uint256 outAmount);
142
+
141
143
  ISwapRouter public immutable router;
142
144
  address public constant celo = 0x471EcE3750Da237f93B8E339c536989b8978a438;
143
145
  uint32 public immutable twapPeriod;
@@ -176,12 +178,23 @@ contract BuyGDClone is Initializable {
176
178
  * @dev If the contract has a balance of cUSD, it will swap cUSD for GD tokens.
177
179
  * @param _minAmount The minimum amount of GD tokens to receive from the swap.
178
180
  */
179
- function swap(uint256 _minAmount, address payable refundGas) public payable {
181
+ function swap(
182
+ uint256 _minAmount,
183
+ address payable refundGas
184
+ ) public payable returns (uint256 bought) {
180
185
  uint256 balance = address(this).balance;
181
- if (balance > 0) return swapCelo(_minAmount, refundGas);
182
186
 
187
+ if (balance > 0) {
188
+ bought = swapCelo(_minAmount, refundGas);
189
+ emit Bought(celo, balance, bought);
190
+ return bought;
191
+ }
183
192
  balance = ERC20(cusd).balanceOf(address(this));
184
- if (balance > 0) return swapCusd(_minAmount, refundGas);
193
+ if (balance > 0) {
194
+ bought = swapCusd(_minAmount, refundGas);
195
+ emit Bought(celo, balance, bought);
196
+ return bought;
197
+ }
185
198
 
186
199
  revert NO_BALANCE();
187
200
  }
@@ -193,7 +206,7 @@ contract BuyGDClone is Initializable {
193
206
  function swapCelo(
194
207
  uint256 _minAmount,
195
208
  address payable refundGas
196
- ) public payable {
209
+ ) public payable returns (uint256 bought) {
197
210
  uint256 gasCosts;
198
211
  if (refundGas != owner) {
199
212
  (gasCosts, ) = oracle.quoteAllAvailablePoolsWithTimePeriod(
@@ -216,7 +229,7 @@ contract BuyGDClone is Initializable {
216
229
  amountIn: amountIn,
217
230
  amountOutMinimum: _minAmount
218
231
  });
219
- router.exactInput(params);
232
+ bought = router.exactInput(params);
220
233
  if (refundGas != owner) {
221
234
  (bool sent, ) = refundGas.call{ value: gasCosts }("");
222
235
  if (!sent) revert REFUND_FAILED(gasCosts);
@@ -227,7 +240,10 @@ contract BuyGDClone is Initializable {
227
240
  * @notice Swaps cUSD for GD tokens.
228
241
  * @param _minAmount The minimum amount of GD tokens to receive from the swap.
229
242
  */
230
- function swapCusd(uint256 _minAmount, address refundGas) public {
243
+ function swapCusd(
244
+ uint256 _minAmount,
245
+ address refundGas
246
+ ) public returns (uint256 bought) {
231
247
  uint256 gasCosts = refundGas != owner ? 1e17 : 0; //fixed 0.1$
232
248
  uint256 amountIn = ERC20(cusd).balanceOf(address(this)) - gasCosts;
233
249
 
@@ -241,7 +257,7 @@ contract BuyGDClone is Initializable {
241
257
  amountIn: amountIn,
242
258
  amountOutMinimum: _minAmount
243
259
  });
244
- router.exactInput(params);
260
+ bought = router.exactInput(params);
245
261
  if (refundGas != owner) {
246
262
  ERC20(cusd).transfer(refundGas, gasCosts);
247
263
  }
@@ -300,6 +316,13 @@ contract BuyGDClone is Initializable {
300
316
  contract DonateGDClone is BuyGDClone {
301
317
  error EXEC_FAILED(bytes error);
302
318
 
319
+ event Donated(
320
+ address donor,
321
+ address recipient,
322
+ address tokenDonated,
323
+ uint256 amountDonated
324
+ );
325
+
303
326
  address public recoverTo;
304
327
  bytes public callData;
305
328
 
@@ -336,8 +359,11 @@ contract DonateGDClone is BuyGDClone {
336
359
  owner = address(this);
337
360
  }
338
361
  //no perform swap
362
+ address token;
363
+ uint256 donated;
339
364
  if (withSwap) {
340
- swap(_minAmount, refundGas);
365
+ token = gd;
366
+ donated = swap(_minAmount, refundGas);
341
367
  owner = tempOwner;
342
368
  }
343
369
 
@@ -348,13 +374,26 @@ contract DonateGDClone is BuyGDClone {
348
374
  uint256 gdBalance = ERC20(gd).balanceOf(address(this));
349
375
  uint256 celoBalance = address(this).balance;
350
376
 
351
- if (cusdBalance > 0) ERC20(cusd).approve(address(owner), cusdBalance);
352
- if (gdBalance > 0) ERC20(gd).approve(address(owner), gdBalance);
353
- if (celoBalance > 0) ERC20(celo).approve(address(owner), celoBalance);
377
+ if (cusdBalance > 0) {
378
+ ERC20(cusd).approve(address(owner), cusdBalance);
379
+ token = cusd;
380
+ donated = cusdBalance;
381
+ }
382
+ if (gdBalance > 0) {
383
+ ERC20(gd).approve(address(owner), gdBalance);
384
+ token = gd;
385
+ donated = gdBalance;
386
+ }
387
+ if (celoBalance > 0) {
388
+ ERC20(celo).approve(address(owner), celoBalance);
389
+ token = celo;
390
+ donated = celoBalance;
391
+ }
354
392
 
355
393
  (bool success, bytes memory data) = owner.call{ value: 0 }(callData);
356
394
  if (!success) revert EXEC_FAILED(data);
357
395
  }
396
+ emit Donated(recoverTo, owner, token, donated);
358
397
  }
359
398
 
360
399
  /**
@@ -381,6 +420,7 @@ contract BuyGDCloneFactory {
381
420
  error NOT_GD_TOKEN();
382
421
  error INVALID_TWAP();
383
422
  error RECIPIENT_ZERO();
423
+ error ZERO_MINAMOUNT();
384
424
 
385
425
  IQuoterV2 public constant quoter =
386
426
  IQuoterV2(0x82825d0554fA07f7FC52Ab63c961F330fdEFa8E8); // celo quoter
@@ -546,7 +586,8 @@ contract BuyGDCloneFactory {
546
586
  ERC20(gd).transferFrom(msg.sender, address(this), amountIn);
547
587
  }
548
588
 
549
- if (_minAmount == 0) (_minAmount, ) = minAmountByTWAP(amountIn, gd, 60);
589
+ if (_minAmount == 0)
590
+ (_minAmount, ) = minAmountByTWAP(amountIn, gd, cusd, 60);
550
591
 
551
592
  ERC20(gd).approve(address(router), amountIn);
552
593
  ISwapRouter.ExactInputParams memory params = ISwapRouter.ExactInputParams({
@@ -558,16 +599,43 @@ contract BuyGDCloneFactory {
558
599
  return router.exactInput(params);
559
600
  }
560
601
 
602
+ /**
603
+ * @notice Swaps cUSD for GD tokens.
604
+ * @param _minAmount The minimum amount of GD tokens to receive from the swap.
605
+ */
606
+ function swapFromCusd(
607
+ uint256 amountIn,
608
+ uint256 _minAmount,
609
+ address recipient
610
+ ) public returns (uint256) {
611
+ ERC20(cusd).transferFrom(msg.sender, address(this), amountIn);
612
+
613
+ if (_minAmount == 0)
614
+ (_minAmount, ) = minAmountByTWAP(amountIn, cusd, gd, 60);
615
+
616
+ ERC20(cusd).approve(address(router), amountIn);
617
+ ISwapRouter.ExactInputParams memory params = ISwapRouter.ExactInputParams({
618
+ path: abi.encodePacked(cusd, uint24(10000), gd),
619
+ recipient: recipient,
620
+ amountIn: amountIn,
621
+ amountOutMinimum: _minAmount
622
+ });
623
+ return router.exactInput(params);
624
+ }
625
+
561
626
  /**
562
627
  * @notice Calculates the minimum amount of tokens that can be received for a given amount of base tokens,
563
628
  * based on the time-weighted average price (TWAP) of the token pair over a specified period of time.
564
629
  * @param baseAmount The amount of base tokens to swap.
565
630
  * @param baseToken The address of the base token.
631
+ * @param qtToken The address of the quote token.
632
+
566
633
  * @return minTwap The minimum amount of G$ expected to receive by twap
567
634
  */
568
635
  function minAmountByTWAP(
569
636
  uint256 baseAmount,
570
637
  address baseToken,
638
+ address qtToken,
571
639
  uint32 period
572
640
  ) public view returns (uint256 minTwap, uint256 quote) {
573
641
  uint24[] memory fees = new uint24[](1);
@@ -576,7 +644,7 @@ contract BuyGDCloneFactory {
576
644
  (quote, ) = oracle.quoteSpecificFeeTiersWithTimePeriod(
577
645
  toConvert,
578
646
  baseToken,
579
- cusd,
647
+ qtToken,
580
648
  fees,
581
649
  period
582
650
  );
@@ -584,7 +652,7 @@ contract BuyGDCloneFactory {
584
652
  (uint256 curPrice, ) = oracle.quoteSpecificFeeTiersWithTimePeriod(
585
653
  toConvert,
586
654
  baseToken,
587
- cusd,
655
+ qtToken,
588
656
  fees,
589
657
  0
590
658
  );