@gooddollar/goodprotocol 1.0.19-beta.3 → 1.0.20

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 (414) hide show
  1. package/artifacts/abis/ERC20.min.json +1 -1
  2. package/artifacts/abis/GoodReserveCDai.min.json +1 -1
  3. package/artifacts/abis/IERC2917.min.json +1 -1
  4. package/artifacts/abis/cERC20.min.json +1 -1
  5. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  6. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  7. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  8. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  9. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  10. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  11. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  12. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  13. package/artifacts/contracts/Interfaces.sol/ERC20.json +0 -13
  14. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  15. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  16. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  17. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  18. package/artifacts/contracts/Interfaces.sol/IERC2917.json +0 -13
  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/ILendingPool.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  27. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  28. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  32. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  33. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  34. package/artifacts/contracts/Interfaces.sol/cERC20.json +0 -13
  35. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  36. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +2 -2
  37. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  38. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +2 -2
  39. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  40. package/artifacts/contracts/governance/GReputation.sol/GReputation.json +2 -2
  41. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  42. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.json +2 -2
  43. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  44. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  45. package/artifacts/contracts/governance/Reputation.sol/Reputation.json +2 -2
  46. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  47. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +2 -2
  48. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  49. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  50. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  51. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  52. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +2 -2
  53. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  54. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +2 -2
  55. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  56. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  57. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  58. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +2 -2
  59. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  60. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
  61. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  62. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  63. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.json +2 -2
  64. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  65. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  66. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +2 -2
  67. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  68. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +2 -2
  69. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  70. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +2 -2
  71. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  72. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +2 -2
  73. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  74. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  75. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  76. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  77. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  78. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  79. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  80. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  81. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  82. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +2 -2
  83. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  84. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +2 -2
  85. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  86. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  87. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +2 -65
  88. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  89. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.json +2 -2
  90. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  91. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.json +2 -2
  92. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  93. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +2 -2
  94. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  95. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +2 -2
  96. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  97. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  98. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  99. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.json +2 -2
  100. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  101. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +2 -2
  102. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  103. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +2 -2
  104. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  105. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +2 -2
  106. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  107. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +2 -2
  108. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  109. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +2 -2
  110. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  111. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +2 -2
  112. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  113. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +2 -2
  114. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  115. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  116. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.json +2 -2
  117. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  118. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.json +2 -2
  119. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  120. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.json +2 -2
  121. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  122. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  123. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  124. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  125. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  126. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.json +2 -2
  127. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  128. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.json +2 -2
  129. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  130. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.json +2 -2
  131. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  132. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.json +2 -2
  133. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  134. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  135. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  136. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.json +2 -2
  137. package/contracts/Interfaces.sol +0 -12
  138. package/contracts/reserve/GoodReserveCDai.sol +1 -28
  139. package/package.json +3 -2
  140. package/releases/deployment.json +13 -6
  141. package/scripts/multichain-deploy/basicdao-deploy.ts +20 -22
  142. package/scripts/multichain-deploy/helpers.ts +3 -5
  143. package/types/AaveMock.ts +1022 -0
  144. package/types/AaveStakingFactory.ts +290 -0
  145. package/types/AaveUSDMockOracle.ts +89 -0
  146. package/types/AccessControlEnumerableUpgradeable.ts +435 -0
  147. package/types/AccessControlUpgradeable.ts +362 -0
  148. package/types/AggregatorV3Interface.ts +192 -0
  149. package/types/Avatar.ts +121 -0
  150. package/types/BancorFormula.ts +974 -0
  151. package/types/BaseShareField.ts +442 -0
  152. package/types/BaseShareFieldV2.ts +361 -0
  153. package/types/BatUSDMockOracle.ts +89 -0
  154. package/types/BulkProof.ts +111 -0
  155. package/types/CBATMock.ts +1194 -0
  156. package/types/CDAILowWorthMock.ts +1160 -0
  157. package/types/CDAIMock.ts +1210 -0
  158. package/types/CDAINonMintableMock.ts +1160 -0
  159. package/types/CDecimalsMock.ts +1194 -0
  160. package/types/CERC20.ts +527 -0
  161. package/types/CSDTMock.ts +1194 -0
  162. package/types/CUSDCMock.ts +1194 -0
  163. package/types/ClaimersDistribution.ts +606 -0
  164. package/types/CompUSDMockOracle.ts +89 -0
  165. package/types/CompoundStakingFactory.ts +261 -0
  166. package/types/CompoundVotingMachine.ts +1690 -0
  167. package/types/ContributionCalc.ts +164 -0
  168. package/types/Controller.ts +547 -0
  169. package/types/DAIMock.ts +1083 -0
  170. package/types/DAOContract.ts +162 -0
  171. package/types/DAOUpgradeableContract.ts +271 -0
  172. package/types/DaiEthPriceMockOracle.ts +89 -0
  173. package/types/DecimalsMock.ts +1022 -0
  174. package/types/DonationsStaking.ts +777 -0
  175. package/types/ERC165Upgradeable.ts +104 -0
  176. package/types/ERC1967Proxy.ts +147 -0
  177. package/types/ERC1967Upgrade.ts +106 -0
  178. package/types/ERC1967UpgradeUpgradeable.ts +107 -0
  179. package/types/ERC20.ts +365 -0
  180. package/types/ERC20BurnableUpgradeable.ts +479 -0
  181. package/types/ERC20PausableUpgradeable.ts +449 -0
  182. package/types/ERC20PresetMinterPauserUpgradeable.ts +1023 -0
  183. package/types/ERC20Upgradeable.ts +417 -0
  184. package/types/EthUSDMockOracle.ts +138 -0
  185. package/types/ExchangeHelper.ts +522 -0
  186. package/types/GReputation.ts +2020 -0
  187. package/types/GasPriceMockOracle.ts +89 -0
  188. package/types/GlobalConstraintInterface.ts +134 -0
  189. package/types/GoodAaveStaking.ts +1752 -0
  190. package/types/GoodAaveStakingV2.ts +1722 -0
  191. package/types/GoodCompoundStaking.ts +1838 -0
  192. package/types/GoodCompoundStakingTest.ts +1948 -0
  193. package/types/GoodCompoundStakingV2.ts +1636 -0
  194. package/types/GoodFundManager.ts +1098 -0
  195. package/types/GoodFundManagerTest.ts +1137 -0
  196. package/types/GoodMarketMaker.ts +974 -0
  197. package/types/GoodReserveCDai.ts +1938 -0
  198. package/types/GovernanceStaking.ts +1267 -0
  199. package/types/IAaveIncentivesController.ts +155 -0
  200. package/types/IAccessControlEnumerableUpgradeable.ts +380 -0
  201. package/types/IAccessControlUpgradeable.ts +307 -0
  202. package/types/IAdminWallet.ts +171 -0
  203. package/types/IBeacon.ts +89 -0
  204. package/types/IBeaconUpgradeable.ts +89 -0
  205. package/types/IDonationStaking.ts +98 -0
  206. package/types/IERC165Upgradeable.ts +104 -0
  207. package/types/IERC1822Proxiable.ts +89 -0
  208. package/types/IERC20MetadataUpgradeable.ts +340 -0
  209. package/types/IERC20Upgradeable.ts +300 -0
  210. package/types/IERC2917.ts +636 -0
  211. package/types/IFirstClaimPool.ts +115 -0
  212. package/types/IGoodDollar.ts +579 -0
  213. package/types/IGoodStaking.ts +264 -0
  214. package/types/IHasRouter.ts +83 -0
  215. package/types/IIdentity.ts +281 -0
  216. package/types/ILendingPool.ts +241 -0
  217. package/types/INameService.ts +86 -0
  218. package/types/IUBIScheme.ts +121 -0
  219. package/types/IncentiveControllerMock.ts +207 -0
  220. package/types/IntVoteInterface.ts +468 -0
  221. package/types/LendingPoolMock.ts +1250 -0
  222. package/types/MultiBaseGovernanceShareField.ts +411 -0
  223. package/types/Multicall.ts +298 -0
  224. package/types/NameService.ts +358 -0
  225. package/types/OldMarketMaker.ts +113 -0
  226. package/types/OverMintTester.ts +176 -0
  227. package/types/OverMintTesterRegularStake.ts +177 -0
  228. package/types/PausableUpgradeable.ts +103 -0
  229. package/types/ProtocolUpgrade.ts +272 -0
  230. package/types/ProtocolUpgradeFuse.ts +166 -0
  231. package/types/ProtocolUpgradeFuseRecover.ts +167 -0
  232. package/types/ProtocolUpgradeRecover.ts +264 -0
  233. package/types/Proxy.ts +66 -0
  234. package/types/ProxyAdmin.ts +210 -0
  235. package/types/ProxyFactory1967.ts +284 -0
  236. package/types/Reputation.ts +936 -0
  237. package/types/ReputationInterface.ts +261 -0
  238. package/types/ReputationTestHelper.ts +175 -0
  239. package/types/Reserve.ts +112 -0
  240. package/types/SchemeRegistrar.ts +164 -0
  241. package/types/SimpleStaking.ts +1514 -0
  242. package/types/SimpleStakingV2.ts +1418 -0
  243. package/types/SixteenDecimalsTokenMock.ts +1023 -0
  244. package/types/StakersDistribution.ts +921 -0
  245. package/types/Staking.ts +158 -0
  246. package/types/SwapHelperTest.ts +120 -0
  247. package/types/TwentyDecimalsTokenMock.ts +1023 -0
  248. package/types/UBIScheme.ts +1361 -0
  249. package/types/USDCMock.ts +1022 -0
  250. package/types/UUPSUpgradeable.ts +179 -0
  251. package/types/Uniswap.ts +423 -0
  252. package/types/UniswapFactory.ts +106 -0
  253. package/types/UniswapPair.ts +187 -0
  254. package/types/UniswapV2SwapHelper.ts +124 -0
  255. package/types/UpgradableMock.ts +321 -0
  256. package/types/UpgradableMock2.ts +283 -0
  257. package/types/UpgradableMock3.ts +308 -0
  258. package/types/UpgradableMock4.ts +308 -0
  259. package/types/common.ts +44 -0
  260. package/types/factories/AaveMock__factory.ts +727 -0
  261. package/types/factories/AaveStakingFactory__factory.ts +262 -0
  262. package/types/factories/AaveUSDMockOracle__factory.ts +75 -0
  263. package/types/factories/AccessControlEnumerableUpgradeable__factory.ts +279 -0
  264. package/types/factories/AccessControlUpgradeable__factory.ts +234 -0
  265. package/types/factories/AggregatorV3Interface__factory.ts +121 -0
  266. package/types/factories/Avatar__factory.ts +59 -0
  267. package/types/factories/BancorFormula__factory.ts +674 -0
  268. package/types/factories/BaseShareFieldV2__factory.ts +251 -0
  269. package/types/factories/BaseShareField__factory.ts +307 -0
  270. package/types/factories/BatUSDMockOracle__factory.ts +75 -0
  271. package/types/factories/BulkProof__factory.ts +89 -0
  272. package/types/factories/CBATMock__factory.ts +831 -0
  273. package/types/factories/CDAILowWorthMock__factory.ts +821 -0
  274. package/types/factories/CDAIMock__factory.ts +844 -0
  275. package/types/factories/CDAINonMintableMock__factory.ts +821 -0
  276. package/types/factories/CDecimalsMock__factory.ts +831 -0
  277. package/types/factories/CERC20__factory.ts +368 -0
  278. package/types/factories/CSDTMock__factory.ts +831 -0
  279. package/types/factories/CUSDCMock__factory.ts +831 -0
  280. package/types/factories/ClaimersDistribution__factory.ts +404 -0
  281. package/types/factories/CompUSDMockOracle__factory.ts +75 -0
  282. package/types/factories/CompoundStakingFactory__factory.ts +249 -0
  283. package/types/factories/CompoundVotingMachine__factory.ts +1182 -0
  284. package/types/factories/ContributionCalc__factory.ts +83 -0
  285. package/types/factories/Controller__factory.ts +359 -0
  286. package/types/factories/DAIMock__factory.ts +770 -0
  287. package/types/factories/DAOContract__factory.ts +118 -0
  288. package/types/factories/DAOUpgradeableContract__factory.ts +201 -0
  289. package/types/factories/DaiEthPriceMockOracle__factory.ts +79 -0
  290. package/types/factories/DecimalsMock__factory.ts +742 -0
  291. package/types/factories/DonationsStaking__factory.ts +554 -0
  292. package/types/factories/ERC165Upgradeable__factory.ts +45 -0
  293. package/types/factories/ERC1967Proxy__factory.ts +130 -0
  294. package/types/factories/ERC1967UpgradeUpgradeable__factory.ts +75 -0
  295. package/types/factories/ERC1967Upgrade__factory.ts +71 -0
  296. package/types/factories/ERC20BurnableUpgradeable__factory.ts +331 -0
  297. package/types/factories/ERC20PausableUpgradeable__factory.ts +339 -0
  298. package/types/factories/ERC20PresetMinterPauserUpgradeable__factory.ts +733 -0
  299. package/types/factories/ERC20Upgradeable__factory.ts +332 -0
  300. package/types/factories/ERC20__factory.ts +272 -0
  301. package/types/factories/EthUSDMockOracle__factory.ts +108 -0
  302. package/types/factories/ExchangeHelper__factory.ts +401 -0
  303. package/types/factories/GReputation__factory.ts +1415 -0
  304. package/types/factories/GasPriceMockOracle__factory.ts +75 -0
  305. package/types/factories/GlobalConstraintInterface__factory.ts +72 -0
  306. package/types/factories/GoodAaveStakingV2__factory.ts +1227 -0
  307. package/types/factories/GoodAaveStaking__factory.ts +1263 -0
  308. package/types/factories/GoodCompoundStakingTest__factory.ts +1457 -0
  309. package/types/factories/GoodCompoundStakingV2__factory.ts +1169 -0
  310. package/types/factories/GoodCompoundStaking__factory.ts +1303 -0
  311. package/types/factories/GoodFundManagerTest__factory.ts +775 -0
  312. package/types/factories/GoodFundManager__factory.ts +733 -0
  313. package/types/factories/GoodMarketMaker__factory.ts +661 -0
  314. package/types/factories/GoodReserveCDai__factory.ts +1391 -0
  315. package/types/factories/GovernanceStaking__factory.ts +922 -0
  316. package/types/factories/IAaveIncentivesController__factory.ts +83 -0
  317. package/types/factories/IAccessControlEnumerableUpgradeable__factory.ts +247 -0
  318. package/types/factories/IAccessControlUpgradeable__factory.ts +202 -0
  319. package/types/factories/IAdminWallet__factory.ts +75 -0
  320. package/types/factories/IBeaconUpgradeable__factory.ts +39 -0
  321. package/types/factories/IBeacon__factory.ts +36 -0
  322. package/types/factories/IDonationStaking__factory.ts +33 -0
  323. package/types/factories/IERC165Upgradeable__factory.ts +45 -0
  324. package/types/factories/IERC1822Proxiable__factory.ts +39 -0
  325. package/types/factories/IERC20MetadataUpgradeable__factory.ts +252 -0
  326. package/types/factories/IERC20Upgradeable__factory.ts +209 -0
  327. package/types/factories/IERC2917__factory.ts +480 -0
  328. package/types/factories/IFirstClaimPool__factory.ts +58 -0
  329. package/types/factories/IGoodDollar__factory.ts +411 -0
  330. package/types/factories/IGoodStaking__factory.ts +175 -0
  331. package/types/factories/IHasRouter__factory.ts +36 -0
  332. package/types/factories/IIdentity__factory.ts +150 -0
  333. package/types/factories/ILendingPool__factory.ts +168 -0
  334. package/types/factories/INameService__factory.ts +42 -0
  335. package/types/factories/IUBIScheme__factory.ts +68 -0
  336. package/types/factories/IncentiveControllerMock__factory.ts +166 -0
  337. package/types/factories/IntVoteInterface__factory.ts +349 -0
  338. package/types/factories/LendingPoolMock__factory.ts +914 -0
  339. package/types/factories/MultiBaseGovernanceShareField__factory.ts +240 -0
  340. package/types/factories/Multicall__factory.ts +215 -0
  341. package/types/factories/NameService__factory.ts +264 -0
  342. package/types/factories/OldMarketMaker__factory.ts +62 -0
  343. package/types/factories/OverMintTesterRegularStake__factory.ts +156 -0
  344. package/types/factories/OverMintTester__factory.ts +152 -0
  345. package/types/factories/PausableUpgradeable__factory.ts +65 -0
  346. package/types/factories/ProtocolUpgradeFuseRecover__factory.ts +146 -0
  347. package/types/factories/ProtocolUpgradeFuse__factory.ts +142 -0
  348. package/types/factories/ProtocolUpgradeRecover__factory.ts +184 -0
  349. package/types/factories/ProtocolUpgrade__factory.ts +207 -0
  350. package/types/factories/ProxyAdmin__factory.ts +105 -0
  351. package/types/factories/ProxyFactory1967__factory.ts +223 -0
  352. package/types/factories/Proxy__factory.ts +28 -0
  353. package/types/factories/ReputationInterface__factory.ts +168 -0
  354. package/types/factories/ReputationTestHelper__factory.ts +141 -0
  355. package/types/factories/Reputation__factory.ts +667 -0
  356. package/types/factories/Reserve__factory.ts +52 -0
  357. package/types/factories/SchemeRegistrar__factory.ts +114 -0
  358. package/types/factories/SimpleStakingV2__factory.ts +986 -0
  359. package/types/factories/SimpleStaking__factory.ts +1045 -0
  360. package/types/factories/SixteenDecimalsTokenMock__factory.ts +734 -0
  361. package/types/factories/StakersDistribution__factory.ts +591 -0
  362. package/types/factories/Staking__factory.ts +74 -0
  363. package/types/factories/SwapHelperTest__factory.ts +96 -0
  364. package/types/factories/TwentyDecimalsTokenMock__factory.ts +734 -0
  365. package/types/factories/UBIScheme__factory.ts +969 -0
  366. package/types/factories/USDCMock__factory.ts +727 -0
  367. package/types/factories/UUPSUpgradeable__factory.ts +102 -0
  368. package/types/factories/UniswapFactory__factory.ts +50 -0
  369. package/types/factories/UniswapPair__factory.ts +117 -0
  370. package/types/factories/UniswapV2SwapHelper__factory.ts +101 -0
  371. package/types/factories/Uniswap__factory.ts +272 -0
  372. package/types/factories/UpgradableMock2__factory.ts +210 -0
  373. package/types/factories/UpgradableMock3__factory.ts +223 -0
  374. package/types/factories/UpgradableMock4__factory.ts +223 -0
  375. package/types/factories/UpgradableMock__factory.ts +236 -0
  376. package/types/hardhat.d.ts +1077 -0
  377. package/types/index.ts +236 -0
  378. package/artifacts/abis/DistributionHelper.min.json +0 -1
  379. package/artifacts/abis/GoodDollarMintBurnWrapper.min.json +0 -1
  380. package/artifacts/abis/GoodDollarStaking.min.json +0 -1
  381. package/artifacts/abis/IMultichainRouter.min.json +0 -1
  382. package/artifacts/abis/IRouter.min.json +0 -1
  383. package/artifacts/abis/Math64x64.min.json +0 -1
  384. package/artifacts/abis/PausableControl.min.json +0 -1
  385. package/artifacts/abis/RewardsMinter.min.json +0 -1
  386. package/artifacts/abis/StakingRewardsFixedAPY.min.json +0 -1
  387. package/artifacts/abis/TokenOperation.min.json +0 -1
  388. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +0 -4
  389. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.json +0 -39
  390. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +0 -4
  391. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +0 -1028
  392. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +0 -4
  393. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.json +0 -35
  394. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +0 -4
  395. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +0 -574
  396. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +0 -4
  397. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.json +0 -10
  398. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +0 -4
  399. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.json +0 -153
  400. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +0 -4
  401. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +0 -954
  402. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +0 -4
  403. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.json +0 -59
  404. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +0 -4
  405. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.json +0 -69
  406. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +0 -4
  407. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +0 -10
  408. package/contracts/governance/GoodDollarStaking.sol +0 -260
  409. package/contracts/reserve/DistributionHelper.sol +0 -118
  410. package/contracts/staking/utils/Math64X64.sol +0 -268
  411. package/contracts/staking/utils/StakingRewardsFixedAPY.sol +0 -141
  412. package/contracts/utils/GoodDollarMintBurnWrapper.sol +0 -417
  413. package/scripts/multichain-deploy/multichainWrapper-deploy.ts +0 -67
  414. package/scripts/voltageswaps.ts +0 -47
@@ -1,4 +0,0 @@
1
- {
2
- "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/e24cb5d66832fe0d27930372c68ab4cd.json"
4
- }
@@ -1,59 +0,0 @@
1
- {
2
- "_format": "hh-sol-artifact-1",
3
- "contractName": "IRouter",
4
- "sourceName": "contracts/utils/GoodDollarMintBurnWrapper.sol",
5
- "abi": [
6
- {
7
- "inputs": [
8
- {
9
- "internalType": "address",
10
- "name": "from",
11
- "type": "address"
12
- },
13
- {
14
- "internalType": "uint256",
15
- "name": "amount",
16
- "type": "uint256"
17
- }
18
- ],
19
- "name": "burn",
20
- "outputs": [
21
- {
22
- "internalType": "bool",
23
- "name": "",
24
- "type": "bool"
25
- }
26
- ],
27
- "stateMutability": "nonpayable",
28
- "type": "function"
29
- },
30
- {
31
- "inputs": [
32
- {
33
- "internalType": "address",
34
- "name": "to",
35
- "type": "address"
36
- },
37
- {
38
- "internalType": "uint256",
39
- "name": "amount",
40
- "type": "uint256"
41
- }
42
- ],
43
- "name": "mint",
44
- "outputs": [
45
- {
46
- "internalType": "bool",
47
- "name": "",
48
- "type": "bool"
49
- }
50
- ],
51
- "stateMutability": "nonpayable",
52
- "type": "function"
53
- }
54
- ],
55
- "bytecode": "0x",
56
- "deployedBytecode": "0x",
57
- "linkReferences": {},
58
- "deployedLinkReferences": {}
59
- }
@@ -1,4 +0,0 @@
1
- {
2
- "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/e24cb5d66832fe0d27930372c68ab4cd.json"
4
- }
@@ -1,69 +0,0 @@
1
- {
2
- "_format": "hh-sol-artifact-1",
3
- "contractName": "PausableControl",
4
- "sourceName": "contracts/utils/GoodDollarMintBurnWrapper.sol",
5
- "abi": [
6
- {
7
- "anonymous": false,
8
- "inputs": [
9
- {
10
- "indexed": false,
11
- "internalType": "bytes32",
12
- "name": "role",
13
- "type": "bytes32"
14
- }
15
- ],
16
- "name": "Paused",
17
- "type": "event"
18
- },
19
- {
20
- "anonymous": false,
21
- "inputs": [
22
- {
23
- "indexed": false,
24
- "internalType": "bytes32",
25
- "name": "role",
26
- "type": "bytes32"
27
- }
28
- ],
29
- "name": "Unpaused",
30
- "type": "event"
31
- },
32
- {
33
- "inputs": [],
34
- "name": "PAUSE_ALL_ROLE",
35
- "outputs": [
36
- {
37
- "internalType": "bytes32",
38
- "name": "",
39
- "type": "bytes32"
40
- }
41
- ],
42
- "stateMutability": "view",
43
- "type": "function"
44
- },
45
- {
46
- "inputs": [
47
- {
48
- "internalType": "bytes32",
49
- "name": "role",
50
- "type": "bytes32"
51
- }
52
- ],
53
- "name": "paused",
54
- "outputs": [
55
- {
56
- "internalType": "bool",
57
- "name": "",
58
- "type": "bool"
59
- }
60
- ],
61
- "stateMutability": "view",
62
- "type": "function"
63
- }
64
- ],
65
- "bytecode": "0x",
66
- "deployedBytecode": "0x",
67
- "linkReferences": {},
68
- "deployedLinkReferences": {}
69
- }
@@ -1,4 +0,0 @@
1
- {
2
- "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/e24cb5d66832fe0d27930372c68ab4cd.json"
4
- }
@@ -1,10 +0,0 @@
1
- {
2
- "_format": "hh-sol-artifact-1",
3
- "contractName": "TokenOperation",
4
- "sourceName": "contracts/utils/GoodDollarMintBurnWrapper.sol",
5
- "abi": [],
6
- "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a332b73371a63f2f25f3d6b5406d03e25bcedb5fec46ac37352e3a622dbee87864736f6c63430008080033",
7
- "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a332b73371a63f2f25f3d6b5406d03e25bcedb5fec46ac37352e3a622dbee87864736f6c63430008080033",
8
- "linkReferences": {},
9
- "deployedLinkReferences": {}
10
- }
@@ -1,260 +0,0 @@
1
- // SPDX-License-Identifier: MIT
2
-
3
- pragma solidity >=0.8.0;
4
-
5
- import "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol";
6
- import "../utils/DAOUpgradeableContract.sol";
7
- import "../utils/NameService.sol";
8
- import "../Interfaces.sol";
9
- import "../DAOStackInterfaces.sol";
10
- import "./MultiBaseGovernanceShareField.sol";
11
- import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol";
12
- import "../staking/utils/StakingRewardsFixedAPY.sol";
13
-
14
- interface RewardsMinter {
15
- function sendOrMint(address to, uint256 amount) external returns (uint256);
16
- }
17
-
18
- /**
19
- * @title Staking contract that allows citizens to stake G$ to get GOOD + G$ rewards
20
- * it implements
21
- */
22
- contract GoodDollarStaking is
23
- ERC20Upgradeable,
24
- MultiBaseGovernanceShareField,
25
- DAOUpgradeableContract,
26
- ReentrancyGuardUpgradeable,
27
- StakingRewardsFixedAPY
28
- {
29
- // Token address
30
- ERC20 token;
31
-
32
- uint128 public numberOfBlocksPerYear;
33
-
34
- /**
35
- * @dev Emitted when `staker` earns an `amount` of GOOD tokens
36
- */
37
- event ReputationEarned(address indexed staker, uint256 amount);
38
-
39
- /**
40
- * @dev Emitted when `staker` stakes an `amount` of GoodDollars
41
- */
42
- event Staked(address indexed staker, uint256 amount);
43
-
44
- /**
45
- * @dev Emitted when `staker` withdraws an `amount` of staked GoodDollars
46
- */
47
- event StakeWithdraw(address indexed staker, uint256 amount);
48
-
49
- /**
50
- * @dev Constructor
51
- * @param _ns The address of the INameService contract
52
- */
53
- constructor(
54
- INameService _ns,
55
- uint128 _interestRatePerBlock,
56
- uint128 _numberOfBlocksPerYear
57
- ) StakingRewardsFixedAPY(_interestRatePerBlock) {
58
- setDAO(_ns);
59
- require(
60
- nameService.getAddress("MintBurnWrapper") != address(0),
61
- "rewards minter not set"
62
- );
63
- numberOfBlocksPerYear = _numberOfBlocksPerYear;
64
- token = ERC20(nameService.getAddress("GOODDOLLAR"));
65
- __ERC20_init("G$ Savings", "svG$");
66
- rewardsPerBlock[address(this)] = (2 ether * 1e6) / getChainBlocksPerMonth(); // (2M monthly GDAO as specified in specs, divided by blocks in month )
67
- }
68
-
69
- function getChainBlocksPerMonth() public view override returns (uint256) {
70
- return numberOfBlocksPerYear / 12;
71
- }
72
-
73
- /**
74
- * @dev Allows a staker to deposit Tokens. Notice that `approve` is
75
- * needed to be executed before the execution of this method.
76
- * Can be executed only when the contract is not paused.
77
- * @param _amount The amount of GD to stake
78
- */
79
- function stake(uint256 _amount) external {
80
- require(_amount > 0, "You need to stake a positive token amount");
81
- require(
82
- token.transferFrom(_msgSender(), address(this), _amount),
83
- "transferFrom failed, make sure you approved token transfer"
84
- );
85
- /* GOOD rewards Updates */
86
- _increaseProductivity(
87
- address(this),
88
- _msgSender(),
89
- _amount,
90
- 0,
91
- block.number
92
- );
93
- _mint(_msgSender(), _amount); // mint Staking token for staker
94
- _mintRewards(_msgSender());
95
- /* end GOOD rewards Updates */
96
-
97
- /* G$ rewards updates */
98
- _stake(_msgSender(), _amount);
99
-
100
- emit Staked(_msgSender(), _amount);
101
- }
102
-
103
- /**
104
- * @dev Withdraws the sender staked Token.
105
- */
106
- function withdrawStake(uint256 _amount) external nonReentrant {
107
- (uint256 userProductivity, ) = getProductivity(address(this), _msgSender());
108
- if (_amount == 0) _amount = userProductivity;
109
- require(_amount > 0, "Should withdraw positive amount");
110
- require(userProductivity >= _amount, "Not enough token staked");
111
- uint256 tokenWithdraw = _amount;
112
-
113
- _burn(_msgSender(), _amount); // burn their staking tokens
114
-
115
- /* Good rewards update */
116
- _decreaseProductivity(
117
- address(this),
118
- _msgSender(),
119
- _amount,
120
- 0,
121
- block.number
122
- );
123
- _mintRewards(_msgSender());
124
- /* end Good rewards update */
125
-
126
- /* G$ rewards update */
127
- _withdraw(_msgSender(), tokenWithdraw);
128
- if (stakersInfo[_msgSender()].balance == 0) {
129
- _mintGDRewards(_msgSender()); //we mint GD rewards only when balance is 0 or upon request
130
- }
131
-
132
- /* end G$ rewards update */
133
-
134
- require(
135
- token.transfer(_msgSender(), tokenWithdraw),
136
- "withdraw transfer failed"
137
- );
138
- emit StakeWithdraw(_msgSender(), _amount);
139
- }
140
-
141
- function _mintGDRewards(address _to) internal returns (uint256 actualSent) {
142
- uint256 rewards = _getReward(_to);
143
-
144
- //make sure RewardsMinter failure doesnt prevent withdrawl of stake
145
- try
146
- RewardsMinter(nameService.getAddress("MintBurnWrapper")).sendOrMint(
147
- _to,
148
- rewards
149
- )
150
- returns (uint256 _res) {
151
- actualSent = _res;
152
- } catch {
153
- actualSent = 0;
154
- }
155
- //it could be that rewards minter doesnt have enough or passed cap
156
- //so we keep track of debt to user
157
- if (actualSent < rewards) {
158
- _undoReward(_to, rewards - actualSent);
159
- }
160
- }
161
-
162
- /**
163
- * @dev Staker can withdraw their rewards without withdraw their stake
164
- */
165
- function withdrawRewards()
166
- public
167
- nonReentrant
168
- returns (uint256 goodRewards, uint256 gdRewards)
169
- {
170
- goodRewards = _mintRewards(_msgSender());
171
- gdRewards = _mintGDRewards(_msgSender());
172
- }
173
-
174
- /**
175
- * @dev Mint rewards of the staker
176
- * @param user Receipent address of the rewards
177
- * @return Returns amount of the minted rewards
178
- * emits 'ReputationEarned' event for staker earned GOOD amount
179
- */
180
- function _mintRewards(address user) internal returns (uint256) {
181
- uint256 amount = _issueEarnedRewards(address(this), user, 0, block.number);
182
- if (amount > 0) {
183
- ERC20(nameService.getAddress("REPUTATION")).mint(user, amount);
184
- emit ReputationEarned(_msgSender(), amount);
185
- }
186
- return amount;
187
- }
188
-
189
- /**
190
- * @dev Returns the number of decimals used to get its user representation.
191
- */
192
- function decimals() public view virtual override returns (uint8) {
193
- return 2;
194
- }
195
-
196
- /**
197
- * @dev override _transfer to handle rewards calculations when transfer the stake
198
- */
199
- function _transfer(
200
- address from,
201
- address to,
202
- uint256 value
203
- ) internal override {
204
- _decreaseProductivity(address(this), from, value, 0, block.number);
205
- _withdraw(from, value); //update G$ rewards
206
- _increaseProductivity(address(this), to, value, 0, block.number);
207
- _stake(to, value); //update G$ rewards
208
-
209
- //mint GOOD rewards
210
- _mintRewards(from);
211
- _mintRewards(to);
212
-
213
- if (stakersInfo[from].balance == 0) {
214
- _mintGDRewards(from); //we mint GD rewards only when balance is 0 or upon request
215
- }
216
- super._transfer(from, to, value);
217
- }
218
-
219
- /**
220
- * @dev Calculate rewards per block from monthly amount of rewards and set it
221
- * @param _monthlyAmount total rewards which will distribute monthly
222
- */
223
- function setMonthlyGOODRewards(uint256 _monthlyAmount) public {
224
- _onlyAvatar();
225
- _setMonthlyRewards(address(this), _monthlyAmount);
226
- }
227
-
228
- /**
229
- * @dev Calculate rewards per block from monthly amount of rewards and set it
230
- * @param _interestRatePerBlock bps yearly apy
231
- */
232
- function setGdApy(uint128 _interestRatePerBlock) public {
233
- _onlyAvatar();
234
- _setAPY(_interestRatePerBlock);
235
- }
236
-
237
- /// @dev helper function for multibase
238
- function getRewardsPerBlock() public view returns (uint256) {
239
- return rewardsPerBlock[address(this)];
240
- }
241
-
242
- /// @dev helper function for multibase
243
- function getStaked(address _user) public view returns (uint256, uint256) {
244
- return getProductivity(address(this), _user);
245
- }
246
-
247
- /// @dev helper function for multibase
248
- function getUserPendingReward(address _user) public view returns (uint256) {
249
- return getUserPendingReward(address(this), 0, block.number, _user);
250
- }
251
-
252
- /// @dev helper function for multibase
253
- function goodStakerInfo(address _user) public view returns (UserInfo memory) {
254
- return contractToUsers[address(this)][_user];
255
- }
256
-
257
- function totalRewardsPerShare() public view returns (uint256) {
258
- return totalRewardsPerShare(address(this));
259
- }
260
- }
@@ -1,118 +0,0 @@
1
- // SPDX-License-Identifier: MIT
2
- /**
3
- Wrap the G$ token to provide mint permissions to multichain.org router/bridge
4
- based on https://github.com/anyswap/multichain-smart-contracts/blob/1459fe6281867319af8ffb1849e5c16d242d6530/contracts/wrapper/MintBurnWrapper.sol
5
-
6
- Added onTokenTransfer
7
-
8
- Fixed:
9
- https://github.com/anyswap/multichain-smart-contracts/issues/4
10
- https://github.com/anyswap/multichain-smart-contracts/issues/3
11
- */
12
-
13
- pragma solidity ^0.8;
14
-
15
- import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
16
- import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
17
- import "@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol";
18
- import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
19
- import "@openzeppelin/contracts/utils/math/Math.sol";
20
-
21
- import "../utils/DAOUpgradeableContract.sol";
22
-
23
- contract DistributionHelper is
24
- DAOUpgradeableContract,
25
- AccessControlEnumerableUpgradeable
26
- {
27
- enum TransferType {
28
- FuseBridge,
29
- MultichainBridge,
30
- Contract
31
- }
32
-
33
- struct DistributionRecipient {
34
- uint32 bps;
35
- uint32 chainId;
36
- address addr;
37
- TransferType transferType;
38
- }
39
-
40
- DistributionRecipient[] public distributionRecipients;
41
- address public fuseBridge;
42
- IMultichainRouter public multiChainBridge;
43
-
44
- event Distribution(
45
- uint256 distributed,
46
- uint256 startingBalance,
47
- uint256 incomingAmount
48
- );
49
-
50
- function initialize(INameService _ns) external initializer {
51
- __AccessControlEnumerable_init();
52
- setDAO(_ns);
53
- _setupRole(DEFAULT_ADMIN_ROLE, avatar);
54
- fuseBridge = nameService.getAddress("BRIDGE_CONTRACT");
55
- multiChainBridge = IMultichainRouter(
56
- 0xf27Ee99622C3C9b264583dACB2cCE056e194494f
57
- );
58
- }
59
-
60
- function onDistribution(uint256 _amount) external {
61
- //we consider the actuall balance and not _amount
62
- uint256 toDistribute = nativeToken().balanceOf(address(this));
63
- if (toDistribute == 0) return;
64
-
65
- uint256 totalDistributed;
66
- for (uint256 i = 0; i < distributionRecipients.length; i++) {
67
- DistributionRecipient storage r = distributionRecipients[i];
68
- if (r.bps > 0) {
69
- uint256 toTransfer = (toDistribute * r.bps) / 10000;
70
- totalDistributed += toTransfer;
71
- distribute(r, toTransfer);
72
- }
73
- }
74
-
75
- emit Distribution(totalDistributed, toDistribute, _amount);
76
- }
77
-
78
- function addRecipient(DistributionRecipient memory _recipient)
79
- external
80
- onlyRole(DEFAULT_ADMIN_ROLE)
81
- {
82
- distributionRecipients.push(_recipient);
83
- }
84
-
85
- function updateRecipient(DistributionRecipient memory _recipient)
86
- external
87
- onlyRole(DEFAULT_ADMIN_ROLE)
88
- {
89
- for (uint256 i = 0; i < distributionRecipients.length; i++) {
90
- if (distributionRecipients[i].addr == _recipient.addr) {
91
- distributionRecipients[i] = _recipient;
92
- return;
93
- }
94
- }
95
- }
96
-
97
- function distribute(DistributionRecipient storage _recipient, uint256 _amount)
98
- internal
99
- {
100
- if (_recipient.transferType == TransferType.FuseBridge) {
101
- nativeToken().transferAndCall(
102
- fuseBridge,
103
- _amount,
104
- abi.encodePacked(_recipient.addr)
105
- );
106
- } else if (_recipient.transferType == TransferType.MultichainBridge) {
107
- nativeToken().approve(address(multiChainBridge), _amount);
108
- multiChainBridge.anySwapOut(
109
- address(nativeToken()),
110
- _recipient.addr,
111
- _amount,
112
- _recipient.chainId
113
- );
114
- } else if (_recipient.transferType == TransferType.Contract) {
115
- nativeToken().transferAndCall(_recipient.addr, _amount, "");
116
- }
117
- }
118
- }