@gooddollar/goodprotocol 2.0.32 → 2.0.34-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/artifacts/abis/BuyFromReserveHelper.min.json +1 -0
- package/artifacts/abis/Faucet.min.json +1 -1
- package/artifacts/abis/GoodDollar2.min.json +1 -0
- package/artifacts/abis/ISuperToken.min.json +1 -1
- package/artifacts/abis/IdentityV3.min.json +1 -0
- package/artifacts/abis/SuperGoodDollar.min.json +1 -1
- package/artifacts/abis/SuperToken.min.json +1 -1
- package/artifacts/abis/SuperfluidFaucet.min.json +1 -1
- package/artifacts/abis/UBISchemeV2.min.json +1 -1
- package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
- package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
- package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
- package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
- package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
- package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
- package/artifacts/contracts/IQuoter.sol/IQuoterV2.dbg.json +4 -0
- package/artifacts/contracts/IQuoter.sol/IQuoterV2.json +211 -0
- package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IQuoterV2.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/ISwapRouter.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
- package/artifacts/contracts/MentoInterfaces.sol/IBancorExchangeProvider.dbg.json +1 -1
- package/artifacts/contracts/MentoInterfaces.sol/IBroker.dbg.json +1 -1
- package/artifacts/contracts/MentoInterfaces.sol/IGoodDollarExchangeProvider.dbg.json +1 -1
- package/artifacts/contracts/MentoInterfaces.sol/IGoodDollarExpansionController.dbg.json +1 -1
- package/artifacts/contracts/MentoInterfaces.sol/IMentoReserve.dbg.json +1 -1
- package/artifacts/contracts/MentoInterfaces.sol/ITradingLimits.dbg.json +1 -1
- package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
- package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.json +57 -2
- package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
- package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.json +2 -2
- package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
- package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.json +2 -2
- package/artifacts/contracts/fuseFaucet/SuperfluidFacuet.sol/SuperfluidFaucet.dbg.json +1 -1
- package/artifacts/contracts/fuseFaucet/SuperfluidFacuet.sol/SuperfluidFaucet.json +46 -28
- package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
- package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +2 -2
- package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
- package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +2 -2
- package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
- package/artifacts/contracts/governance/GReputation.sol/GReputation.json +2 -2
- package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
- package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +2 -2
- package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +1 -1
- package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +1 -1
- package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
- package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
- package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.json +2 -2
- package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
- package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
- package/artifacts/contracts/governance/Reputation.sol/Reputation.json +2 -2
- package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
- package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +2 -2
- package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +1 -1
- package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +2 -2
- package/artifacts/contracts/identity/IdentityV3.sol/IdentityV3.dbg.json +4 -0
- package/artifacts/contracts/identity/IdentityV3.sol/IdentityV3.json +1089 -0
- package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
- package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.json +2 -2
- package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
- package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.json +2 -2
- package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
- package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.json +2 -2
- package/artifacts/contracts/invite/OneTimeReward.sol/OneTimeReward.dbg.json +1 -1
- package/artifacts/contracts/invite/OneTimeReward.sol/OneTimeReward.json +2 -2
- package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.json +2 -2
- package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.json +2 -2
- package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.json +2 -2
- package/artifacts/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTest.json +2 -2
- package/artifacts/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTestHelper.dbg.json +1 -1
- package/artifacts/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTestHelper.json +2 -2
- package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.json +2 -2
- package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.json +2 -2
- package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.json +2 -2
- package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.json +2 -2
- package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.json +2 -2
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.json +2 -2
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +2 -2
- package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.json +2 -2
- package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.json +2 -2
- package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.json +2 -2
- package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +2 -2
- package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.json +2 -2
- package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +2 -2
- package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.json +2 -2
- package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.json +2 -2
- package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.json +2 -2
- package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
- package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.json +2 -2
- package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
- package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +2 -2
- package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
- package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
- package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.json +2 -2
- package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.json +2 -2
- package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
- package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.json +2 -2
- package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.json +2 -2
- package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.json +2 -2
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +2 -2
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +2 -2
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +2 -2
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +2 -2
- package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.json +2 -2
- package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.json +2 -2
- package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.json +2 -2
- package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.json +2 -2
- package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.json +2 -2
- package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.json +2 -2
- package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.json +2 -2
- package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.json +2 -2
- package/artifacts/contracts/reserve/CeloDistributionHelper.sol/CeloDistributionHelper.dbg.json +1 -1
- package/artifacts/contracts/reserve/CeloDistributionHelper.sol/CeloDistributionHelper.json +2 -2
- package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
- package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +2 -2
- package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
- package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +2 -2
- package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
- package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +2 -2
- package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
- package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
- package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +2 -2
- package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
- package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.json +2 -2
- package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
- package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.json +2 -2
- package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +2 -2
- package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
- package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +2 -2
- package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
- package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
- package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
- package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +2 -2
- package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
- package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
- package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.json +2 -2
- package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
- package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +2 -2
- package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +2 -2
- package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
- package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +2 -2
- package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
- package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +2 -2
- package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +2 -2
- package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
- package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +2 -2
- package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
- package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.json +2 -2
- package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
- package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +1 -1
- package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.json +2 -2
- package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +1 -1
- package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +1 -1
- package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +1 -1
- package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.json +2 -2
- package/artifacts/contracts/token/GoodDollar2.sol/GoodDollar2.dbg.json +4 -0
- package/artifacts/contracts/token/GoodDollar2.sol/GoodDollar2.json +1206 -0
- package/artifacts/contracts/token/IFeesFormula.sol/IFeesFormula.dbg.json +1 -1
- package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.dbg.json +1 -1
- package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.json +2 -2
- package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/ISuperToken.sol/ISuperToken.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/ISuperToken.sol/ISuperToken.json +0 -52
- package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +2 -74
- package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.json +2 -54
- package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.json +2 -2
- package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.json +2 -2
- package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
- package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +2 -2
- package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.dbg.json +1 -1
- package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.json +2 -7
- package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
- package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.json +2 -2
- package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
- package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.json +2 -2
- package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
- package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.json +2 -2
- package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
- package/artifacts/contracts/utils/BulkProof.sol/BulkProof.json +2 -2
- package/artifacts/contracts/utils/BulkWhitelist.sol/BulkWhitelist.dbg.json +1 -1
- package/artifacts/contracts/utils/BulkWhitelist.sol/BulkWhitelist.json +2 -2
- package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +1 -1
- package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.json +2 -2
- package/artifacts/contracts/utils/BuyFromReserveHelper.sol/BuyFromReserveHelper.dbg.json +4 -0
- package/artifacts/contracts/utils/BuyFromReserveHelper.sol/BuyFromReserveHelper.json +476 -0
- package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.dbg.json +1 -1
- package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.json +2 -2
- package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.dbg.json +1 -1
- package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.json +2 -2
- package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.dbg.json +1 -1
- package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.json +2 -2
- package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
- package/artifacts/contracts/utils/DAOContract.sol/DAOContract.json +2 -2
- package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
- package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.json +2 -2
- package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
- package/artifacts/contracts/utils/DSMath.sol/DSMath.json +2 -2
- package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
- package/artifacts/contracts/utils/DataTypes.sol/DataTypes.json +2 -2
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/EternalStorage.dbg.json +1 -1
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/EternalStorage.json +2 -2
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill.dbg.json +1 -1
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill.json +2 -2
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage.dbg.json +1 -1
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Initializable.dbg.json +1 -1
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Initializable.json +2 -2
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Ownable.dbg.json +1 -1
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Ownable.json +2 -2
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Upgradeable.dbg.json +1 -1
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Upgradeable.json +2 -2
- package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.dbg.json +1 -1
- package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.json +2 -2
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +2 -2
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +2 -2
- package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.dbg.json +1 -1
- package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.json +2 -2
- package/artifacts/contracts/utils/LastauthReduction.sol/LastauthReduction.dbg.json +1 -1
- package/artifacts/contracts/utils/LastauthReduction.sol/LastauthReduction.json +2 -2
- package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
- package/artifacts/contracts/utils/MultiCall.sol/Multicall.json +2 -2
- package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
- package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.json +2 -2
- package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
- package/artifacts/contracts/utils/NameService.sol/NameService.json +2 -2
- package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.dbg.json +1 -1
- package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.json +2 -2
- package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.dbg.json +1 -1
- package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.json +2 -2
- package/artifacts/contracts/utils/ProtoclUpgradeV4Mento.sol/MentoExchange.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtoclUpgradeV4Mento.sol/ProtocolUpgradeV4Mento.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtoclUpgradeV4Mento.sol/ProtocolUpgradeV4Mento.json +2 -2
- package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.json +2 -2
- package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.json +2 -2
- package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.json +2 -2
- package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.json +2 -2
- package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
- package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.json +2 -2
- package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
- package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.json +2 -2
- package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
- package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.json +2 -2
- package/artifacts/contracts/utils/ReserveRestore.sol/ReserveRestore.dbg.json +1 -1
- package/artifacts/contracts/utils/ReserveRestore.sol/ReserveRestore.json +2 -2
- package/contracts/IQuoter.sol +108 -0
- package/contracts/fuseFaucet/Faucet.sol +49 -37
- package/contracts/fuseFaucet/SuperfluidFacuet.sol +29 -8
- package/contracts/identity/IdentityV3.sol +534 -0
- package/contracts/token/ERC20PresetMinterPauserUpgradeable.sol +8 -9
- package/contracts/token/GoodDollar.sol +1 -1
- package/contracts/token/GoodDollar2.sol +13 -0
- package/contracts/token/superfluid/ISuperToken.sol +0 -19
- package/contracts/token/superfluid/SuperGoodDollar.sol +2 -21
- package/contracts/token/superfluid/SuperToken.sol +2 -2
- package/contracts/token/superfluid/SuperfluidToken.sol +66 -67
- package/contracts/ubi/UBISchemeV2.sol +12 -18
- package/contracts/utils/BuyFromReserveHelper.sol +129 -0
- package/dist/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +2 -2
- package/dist/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +177 -256
- package/dist/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.json +2 -2
- package/dist/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.json +2 -2
- package/dist/test-sdk/deploySuperGoodDollar.d.ts +1 -1
- package/dist/test-sdk/deploySuperGoodDollar.js +4 -8
- package/dist/test-sdk/index.js +1 -5
- package/hardhat.config.ts +37 -30
- package/package.json +3 -2
- package/releases/deploy-settings.json +5 -1
- package/releases/deployment.json +27 -1
- package/releases/olddao.json +1 -1
- package/scripts/analytics/activeGDStakers.ts +188 -0
- package/scripts/fv.ts +19 -1
- package/scripts/multichain-deploy/0_proxyFactory-deploy.ts +28 -5
- package/scripts/multichain-deploy/1_basicdao-deploy.ts +111 -73
- package/scripts/multichain-deploy/2_helpers-deploy.ts +13 -8
- package/scripts/multichain-deploy/4_ubi-deploy.ts +17 -19
- package/scripts/multichain-deploy/5_gov-deploy.ts +58 -26
- package/scripts/multichain-deploy/flattened/Avatar.sol +913 -0
- package/scripts/multichain-deploy/flattened/Controller.sol +1891 -0
- package/scripts/multichain-deploy/flattened/FeeFormula.sol +1290 -0
- package/scripts/multichain-deploy/fulldeploy.sh +17 -17
- package/scripts/multichain-deploy/helpers.ts +203 -70
- package/scripts/multichain-deploy/verify.ts +41 -0
- package/test/governance/ClaimersDistribution.test.ts +1 -1
- package/test/helpers.ts +59 -46
- package/test/identity/IdentityV2.test.ts +4 -1
- package/test/identity/IdentityV3.test.ts +449 -0
- package/test/invite/InvitesV2.test.ts +1 -1
- package/test/token/GoodDollar.test.ts +1 -1
- package/test/token/SuperGoodDollar.nohost.test.ts +383 -0
- package/test/token/SuperGoodDollar.test.ts +2 -10
- package/test/ubi/UBIScheme.e2e.test.ts +5 -5
- package/test/ubi/UBISchemeCycle.test.ts +69 -22
- package/test/ubi/UBISchemeV2.test.ts +636 -0
- package/test/utils/AdminWallet.test.ts +1 -1
- package/test/utils/ProxyFactory.test.ts +4 -1
- package/types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.ts +108 -0
- package/types/@openzeppelin/contracts/proxy/ERC1967/index.ts +1 -0
- package/types/contracts/IQuoter.sol/IQuoterV2.ts +297 -0
- package/types/contracts/IQuoter.sol/index.ts +4 -0
- package/types/contracts/Interfaces.sol/AToken.ts +81 -0
- package/types/contracts/Interfaces.sol/IAaveIncentivesControllerV3.ts +156 -0
- package/types/contracts/Interfaces.sol/ILendingPoolV3.ts +254 -0
- package/types/contracts/fuseFaucet/Faucet.ts +109 -11
- package/types/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/EthDistributor.ts +648 -0
- package/types/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/EthDistributorUpgradeable.ts +843 -0
- package/types/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/index.ts +4 -0
- package/types/contracts/fuseFaucet/SuperfluidFacuet.sol/SuperfluidFaucet.ts +79 -41
- package/types/contracts/identity/IdentityV3.ts +1899 -0
- package/types/contracts/identity/index.ts +1 -0
- package/types/contracts/index.ts +2 -0
- package/types/contracts/mocks/CeloDistributionHelperTest.sol/DistributionHelperTestHelper.ts +1252 -0
- package/types/contracts/reserve/GoodReserveADai.ts +2212 -0
- package/types/contracts/staking/aave/GoodAave3StakingV2.sol/GoodAaveStakingV2.ts +1808 -0
- package/types/contracts/staking/aave/GoodAave3StakingV2.sol/index.ts +4 -0
- package/types/contracts/token/GoodDollar18.ts +1871 -0
- package/types/contracts/token/GoodDollar2.ts +1871 -0
- package/types/contracts/token/index.ts +1 -0
- package/types/contracts/token/superfluid/ISuperToken.ts +0 -84
- package/types/contracts/token/superfluid/SuperGoodDollar.ts +12 -126
- package/types/contracts/token/superfluid/SuperToken.ts +0 -84
- package/types/contracts/ubi/UBISchemeV2.ts +3 -14
- package/types/contracts/utils/BuyFromReserveHelper.ts +699 -0
- package/types/contracts/utils/BuyGDClone.sol/IQuoterV2.ts +184 -0
- package/types/contracts/utils/BuyGDClone.sol/ISwapRouter.ts +306 -0
- package/types/contracts/utils/FuseOldBridgeKill.sol/BasicAMBErc677ToErc677.ts +108 -0
- package/types/contracts/utils/ProtocolUpgradeV4Mento.sol/MentoExchange.ts +81 -0
- package/types/contracts/utils/ProtocolUpgradeV4Mento.sol/ProtocolUpgradeV4Mento.ts +161 -0
- package/types/contracts/utils/ProtocolUpgradeV4Mento.sol/index.ts +5 -0
- package/types/contracts/utils/ReserveRestore.sol/MentoExchange.ts +81 -0
- package/types/contracts/utils/ReserveRestore.sol/ReserveRestore.ts +112 -0
- package/types/contracts/utils/ReserveRestore.sol/index.ts +5 -0
- package/types/contracts/utils/index.ts +1 -0
- package/types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy__factory.ts +146 -0
- package/types/factories/@openzeppelin/contracts/proxy/ERC1967/index.ts +1 -0
- package/types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts +1 -1
- package/types/factories/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable__factory.ts +1 -1
- package/types/factories/@openzeppelin/contracts-upgradeable/token/ERC20/presets/ERC20PresetMinterPauserUpgradeable__factory.ts +1 -1
- package/types/factories/@superfluid-finance/ethereum-contracts/contracts/libs/EventsEmitter__factory.ts +1 -1
- package/types/factories/@superfluid-finance/ethereum-contracts/contracts/superfluid/ConstantInflowNFT__factory.ts +1 -1
- package/types/factories/@superfluid-finance/ethereum-contracts/contracts/superfluid/ConstantOutflowNFT__factory.ts +1 -1
- package/types/factories/contracts/IQuoter.sol/IQuoterV2__factory.ts +226 -0
- package/types/factories/contracts/IQuoter.sol/index.ts +4 -0
- package/types/factories/contracts/Interfaces.sol/AToken__factory.ts +36 -0
- package/types/factories/contracts/Interfaces.sol/IAaveIncentivesControllerV3__factory.ts +88 -0
- package/types/factories/contracts/Interfaces.sol/ILendingPoolV3__factory.ts +186 -0
- package/types/factories/contracts/fuseFaucet/Faucet__factory.ts +56 -1
- package/types/factories/contracts/fuseFaucet/FuseFaucetV2__factory.ts +1 -1
- package/types/factories/contracts/fuseFaucet/FuseFaucet__factory.ts +1 -1
- package/types/factories/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/EthDistributorUpgradeable__factory.ts +572 -0
- package/types/factories/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/EthDistributor__factory.ts +482 -0
- package/types/factories/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/index.ts +4 -0
- package/types/factories/contracts/fuseFaucet/SuperfluidFacuet.sol/SuperfluidFaucet__factory.ts +45 -27
- package/types/factories/contracts/governance/ClaimersDistribution__factory.ts +1 -1
- package/types/factories/contracts/governance/CompoundVotingMachine__factory.ts +1 -1
- package/types/factories/contracts/governance/GReputation__factory.ts +1 -1
- package/types/factories/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking__factory.ts +1 -1
- package/types/factories/contracts/governance/GovernanceStaking__factory.ts +1 -1
- package/types/factories/contracts/governance/Reputation__factory.ts +1 -1
- package/types/factories/contracts/governance/StakersDistribution__factory.ts +1 -1
- package/types/factories/contracts/identity/IdentityV2__factory.ts +1 -1
- package/types/factories/contracts/identity/IdentityV3__factory.ts +1140 -0
- package/types/factories/contracts/identity/index.ts +1 -0
- package/types/factories/contracts/index.ts +1 -0
- package/types/factories/contracts/invite/InvitesFuseV2__factory.ts +1 -1
- package/types/factories/contracts/invite/InvitesV1__factory.ts +1 -1
- package/types/factories/contracts/invite/InvitesV2__factory.ts +1 -1
- package/types/factories/contracts/invite/OneTimeReward__factory.ts +1 -1
- package/types/factories/contracts/mocks/AaveMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/AaveUSDMockOracle__factory.ts +1 -1
- package/types/factories/contracts/mocks/BatUSDMockOracle__factory.ts +1 -1
- package/types/factories/contracts/mocks/CBATMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/CDAILowWorthMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/CDAIMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/CDAINonMintableMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/CDecimalsMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/CSDTMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/CUSDCMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTestHelper__factory.ts +1 -1
- package/types/factories/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTest__factory.ts +1 -1
- package/types/factories/contracts/mocks/CeloDistributionHelperTest.sol/DistributionHelperTestHelper__factory.ts +929 -0
- package/types/factories/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle__factory.ts +1 -1
- package/types/factories/contracts/mocks/DAIMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/DaiEthPriceMockOracle__factory.ts +1 -1
- package/types/factories/contracts/mocks/DecimalsMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/DistributionBridgeMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper__factory.ts +1 -1
- package/types/factories/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest__factory.ts +1 -1
- package/types/factories/contracts/mocks/EthUSDMockOracle__factory.ts +1 -1
- package/types/factories/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/GasPriceMockOracle__factory.ts +1 -1
- package/types/factories/contracts/mocks/GoodCompoundStakingTest__factory.ts +1 -1
- package/types/factories/contracts/mocks/GoodDollarStakingMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/GoodFundManagerTest__factory.ts +1 -1
- package/types/factories/contracts/mocks/IdentityMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/IncentiveControllerMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/LendingPoolMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/OverMintTester.sol/OverMintTester__factory.ts +1 -1
- package/types/factories/contracts/mocks/OverMintTesterRegularStake__factory.ts +1 -1
- package/types/factories/contracts/mocks/PayableMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/SixteenDecimalsTokenMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/StakingMockFixedAPY__factory.ts +1 -1
- package/types/factories/contracts/mocks/SwapHelperTest__factory.ts +1 -1
- package/types/factories/contracts/mocks/TwentyDecimalsTokenMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock2__factory.ts +1 -1
- package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock3__factory.ts +1 -1
- package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock4__factory.ts +1 -1
- package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/UsdcMock.sol/USDCMock__factory.ts +1 -1
- package/types/factories/contracts/reserve/CeloDistributionHelper__factory.ts +1 -1
- package/types/factories/contracts/reserve/DistributionHelper__factory.ts +1 -1
- package/types/factories/contracts/reserve/ExchangeHelper__factory.ts +1 -1
- package/types/factories/contracts/reserve/GoodMarketMaker__factory.ts +1 -1
- package/types/factories/contracts/reserve/GoodReserveADai__factory.ts +1502 -0
- package/types/factories/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai__factory.ts +1 -1
- package/types/factories/contracts/staking/BaseShareFieldV2__factory.ts +1 -1
- package/types/factories/contracts/staking/BaseShareField__factory.ts +1 -1
- package/types/factories/contracts/staking/DonationsStaking__factory.ts +1 -1
- package/types/factories/contracts/staking/FuseStakingV3.sol/FuseStakingV3__factory.ts +1 -1
- package/types/factories/contracts/staking/GoodFundManager__factory.ts +1 -1
- package/types/factories/contracts/staking/UniswapV2SwapHelper__factory.ts +1 -1
- package/types/factories/contracts/staking/aave/AaveStakingFactory__factory.ts +1 -1
- package/types/factories/contracts/staking/aave/GoodAave3StakingV2.sol/GoodAaveStakingV2__factory.ts +1240 -0
- package/types/factories/contracts/staking/aave/GoodAave3StakingV2.sol/index.ts +4 -0
- package/types/factories/contracts/staking/aave/GoodAaveStakingV2__factory.ts +1 -1
- package/types/factories/contracts/staking/aave/GoodAaveStaking__factory.ts +1 -1
- package/types/factories/contracts/staking/compound/CompoundStakingFactory__factory.ts +1 -1
- package/types/factories/contracts/staking/compound/GoodCompoundStakingV2__factory.ts +1 -1
- package/types/factories/contracts/staking/compound/GoodCompoundStaking__factory.ts +1 -1
- package/types/factories/contracts/token/ERC20PresetMinterPauserUpgradeable__factory.ts +1 -1
- package/types/factories/contracts/token/GoodDollar18__factory.ts +1257 -0
- package/types/factories/contracts/token/GoodDollar2__factory.ts +1257 -0
- package/types/factories/contracts/token/GoodDollar__factory.ts +1 -1
- package/types/factories/contracts/token/MultichainFeeFormula__factory.ts +1 -1
- package/types/factories/contracts/token/index.ts +1 -0
- package/types/factories/contracts/token/superfluid/ISuperToken__factory.ts +0 -52
- package/types/factories/contracts/token/superfluid/SuperGoodDollar__factory.ts +1 -73
- package/types/factories/contracts/token/superfluid/SuperToken__factory.ts +1 -53
- package/types/factories/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy__factory.ts +1 -1
- package/types/factories/contracts/ubi/UBISchemeV2__factory.ts +1 -6
- package/types/factories/contracts/ubi/UBIScheme__factory.ts +1 -1
- package/types/factories/contracts/utils/AdminWalletFuse__factory.ts +1 -1
- package/types/factories/contracts/utils/AdminWallet__factory.ts +1 -1
- package/types/factories/contracts/utils/BancorFormula__factory.ts +1 -1
- package/types/factories/contracts/utils/BulkWhitelist__factory.ts +1 -1
- package/types/factories/contracts/utils/BuyAndBridgeHelper__factory.ts +1 -1
- package/types/factories/contracts/utils/BuyFromReserveHelper__factory.ts +566 -0
- package/types/factories/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory__factory.ts +1 -1
- package/types/factories/contracts/utils/BuyGDClone.sol/BuyGDClone__factory.ts +1 -1
- package/types/factories/contracts/utils/BuyGDClone.sol/DonateGDClone__factory.ts +1 -1
- package/types/factories/contracts/utils/BuyGDClone.sol/IQuoterV2__factory.ts +126 -0
- package/types/factories/contracts/utils/BuyGDClone.sol/ISwapRouter__factory.ts +220 -0
- package/types/factories/contracts/utils/DAOContract__factory.ts +1 -1
- package/types/factories/contracts/utils/DAOUpgradeableContract__factory.ts +1 -1
- package/types/factories/contracts/utils/FuseOldBridgeKill.sol/BasicAMBErc677ToErc677__factory.ts +86 -0
- package/types/factories/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill__factory.ts +1 -1
- package/types/factories/contracts/utils/FuseOldBridgeKill.sol/Initializable__factory.ts +1 -1
- package/types/factories/contracts/utils/FuseOldBridgeKill.sol/Ownable__factory.ts +1 -1
- package/types/factories/contracts/utils/GDFaucet__factory.ts +1 -1
- package/types/factories/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper__factory.ts +1 -1
- package/types/factories/contracts/utils/IdentityFix__factory.ts +1 -1
- package/types/factories/contracts/utils/LastauthReduction__factory.ts +1 -1
- package/types/factories/contracts/utils/MultiCall.sol/Multicall__factory.ts +1 -1
- package/types/factories/contracts/utils/MultichainBridgeHelper__factory.ts +1 -1
- package/types/factories/contracts/utils/NameService__factory.ts +1 -1
- package/types/factories/contracts/utils/OneTimePaymentsV2__factory.ts +1 -1
- package/types/factories/contracts/utils/OneTimePayments__factory.ts +1 -1
- package/types/factories/contracts/utils/ProtoclUpgradeV4Mento.sol/ProtocolUpgradeV4Mento__factory.ts +1 -1
- package/types/factories/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade__factory.ts +1 -1
- package/types/factories/contracts/utils/ProtocolUpgradeFuseRecover__factory.ts +1 -1
- package/types/factories/contracts/utils/ProtocolUpgradeFuse__factory.ts +1 -1
- package/types/factories/contracts/utils/ProtocolUpgradeRecover__factory.ts +1 -1
- package/types/factories/contracts/utils/ProtocolUpgradeV4Mento.sol/MentoExchange__factory.ts +39 -0
- package/types/factories/contracts/utils/ProtocolUpgradeV4Mento.sol/ProtocolUpgradeV4Mento__factory.ts +152 -0
- package/types/factories/contracts/utils/ProtocolUpgradeV4Mento.sol/index.ts +5 -0
- package/types/factories/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy__factory.ts +1 -1
- package/types/factories/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967__factory.ts +1 -1
- package/types/factories/contracts/utils/ReputationTestHelper__factory.ts +1 -1
- package/types/factories/contracts/utils/ReserveRestore.sol/MentoExchange__factory.ts +39 -0
- package/types/factories/contracts/utils/ReserveRestore.sol/ReserveRestore__factory.ts +95 -0
- package/types/factories/contracts/utils/ReserveRestore.sol/index.ts +5 -0
- package/types/factories/contracts/utils/ReserveRestore__factory.ts +1 -1
- package/types/factories/contracts/utils/index.ts +1 -0
- package/types/hardhat.d.ts +45 -0
- package/types/index.ts +8 -2
|
@@ -0,0 +1,636 @@
|
|
|
1
|
+
import { ethers, upgrades } from "hardhat";
|
|
2
|
+
import { loadFixture } from "@nomicfoundation/hardhat-network-helpers";
|
|
3
|
+
import { expect } from "chai";
|
|
4
|
+
import { UBIScheme, UBISchemeV2 } from "../../types";
|
|
5
|
+
import { createDAO, deployUBI, advanceBlocks, increaseTime } from "../helpers";
|
|
6
|
+
import FirstClaimPool from "@gooddollar/goodcontracts/stakingModel/build/contracts/FirstClaimPool.json";
|
|
7
|
+
import { flowedAmountSinceUpdatedAt } from "@superfluid-finance/sdk-core";
|
|
8
|
+
const BN = ethers.BigNumber;
|
|
9
|
+
export const NULL_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
10
|
+
|
|
11
|
+
const MAX_INACTIVE_DAYS = 3;
|
|
12
|
+
const ONE_DAY = 86400;
|
|
13
|
+
const ONE_HOUR = 3600;
|
|
14
|
+
|
|
15
|
+
describe("UBISchemeV2", () => {
|
|
16
|
+
let goodDollar,
|
|
17
|
+
identity,
|
|
18
|
+
formula,
|
|
19
|
+
avatar,
|
|
20
|
+
ubi: UBISchemeV2,
|
|
21
|
+
controller,
|
|
22
|
+
firstClaimPool,
|
|
23
|
+
setSchemes,
|
|
24
|
+
addWhitelisted;
|
|
25
|
+
let reputation;
|
|
26
|
+
let root,
|
|
27
|
+
claimer1,
|
|
28
|
+
claimer2,
|
|
29
|
+
claimer3,
|
|
30
|
+
claimer4,
|
|
31
|
+
claimer5,
|
|
32
|
+
claimer6,
|
|
33
|
+
claimer7,
|
|
34
|
+
claimer8,
|
|
35
|
+
signers,
|
|
36
|
+
fisherman,
|
|
37
|
+
nameService,
|
|
38
|
+
genericCall,
|
|
39
|
+
ubiScheme;
|
|
40
|
+
|
|
41
|
+
before(async () => {
|
|
42
|
+
[
|
|
43
|
+
root,
|
|
44
|
+
claimer1,
|
|
45
|
+
claimer2,
|
|
46
|
+
claimer3,
|
|
47
|
+
claimer4,
|
|
48
|
+
claimer5,
|
|
49
|
+
claimer6,
|
|
50
|
+
claimer7,
|
|
51
|
+
claimer8,
|
|
52
|
+
fisherman,
|
|
53
|
+
...signers
|
|
54
|
+
] = await ethers.getSigners();
|
|
55
|
+
const fcFactory = new ethers.ContractFactory(
|
|
56
|
+
FirstClaimPool.abi,
|
|
57
|
+
FirstClaimPool.bytecode,
|
|
58
|
+
(await ethers.getSigners())[0]
|
|
59
|
+
);
|
|
60
|
+
const deployedDAO = await loadFixture(createDAO);
|
|
61
|
+
let {
|
|
62
|
+
nameService: ns,
|
|
63
|
+
genericCall: gn,
|
|
64
|
+
reputation: rep,
|
|
65
|
+
setDAOAddress,
|
|
66
|
+
setSchemes: sc,
|
|
67
|
+
identityDeployed: id,
|
|
68
|
+
addWhitelisted: aw,
|
|
69
|
+
gd,
|
|
70
|
+
avatar: av
|
|
71
|
+
} = deployedDAO;
|
|
72
|
+
nameService = ns;
|
|
73
|
+
genericCall = gn;
|
|
74
|
+
reputation = rep;
|
|
75
|
+
setSchemes = sc;
|
|
76
|
+
avatar = av;
|
|
77
|
+
addWhitelisted = aw;
|
|
78
|
+
goodDollar = await ethers.getContractAt("IGoodDollar", gd);
|
|
79
|
+
firstClaimPool = await fcFactory.deploy(
|
|
80
|
+
await nameService.getAddress("AVATAR"),
|
|
81
|
+
await nameService.getAddress("IDENTITY"),
|
|
82
|
+
100
|
|
83
|
+
);
|
|
84
|
+
identity = id;
|
|
85
|
+
// setDAOAddress("GDAO_CLAIMERS", cd.address);
|
|
86
|
+
//addWhitelisted(claimer1.address, "claimer1");
|
|
87
|
+
//await addWhitelisted(claimer2.address, "claimer2");
|
|
88
|
+
// await increaseTime(60 * 60 * 24);
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
async function deployNewUbi() {
|
|
92
|
+
return await upgrades.deployProxy(
|
|
93
|
+
await ethers.getContractFactory("UBISchemeV2"),
|
|
94
|
+
[nameService.address]
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
it("should not accept 0 inactive days in the constructor", async () => {
|
|
99
|
+
let ubi1 = await (await ethers.getContractFactory("UBIScheme")).deploy();
|
|
100
|
+
|
|
101
|
+
await expect(
|
|
102
|
+
ubi1.initialize(nameService.address, firstClaimPool.address, 0)
|
|
103
|
+
).revertedWith(/Max inactive days cannot be zero/);
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
it("should deploy the ubi", async () => {
|
|
107
|
+
const block = await ethers.provider.getBlock("latest");
|
|
108
|
+
const startUBI = block.timestamp;
|
|
109
|
+
ubi = await upgrades.deployProxy(
|
|
110
|
+
await ethers.getContractFactory("UBISchemeV2"),
|
|
111
|
+
[nameService.address]
|
|
112
|
+
);
|
|
113
|
+
const periodStart = await ubi.periodStart();
|
|
114
|
+
// initializing the ubi
|
|
115
|
+
let encodedCall = ubi.interface.encodeFunctionData("setCycleLength", [1]);
|
|
116
|
+
await genericCall(ubi.address, encodedCall); // we should set cyclelength to one cause this tests was implemented according to it
|
|
117
|
+
expect(periodStart.mod(60 * 60 * 24)).to.equal(60 * 60 * 12);
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
it.skip("should not be able to set the claim amount if the sender is not the avatar", async () => {
|
|
121
|
+
let error = await firstClaimPool.setClaimAmount(200).catch(e => e);
|
|
122
|
+
expect(error.message).to.have.string("only Avatar");
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
it.skip("should not be able to set the ubi scheme if the sender is not the avatar", async () => {
|
|
126
|
+
let error = await firstClaimPool.setUBIScheme(ubi.address).catch(e => e);
|
|
127
|
+
expect(error.message).to.have.string("only Avatar");
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
it("should return zero entitlement before UBI started", async () => {
|
|
131
|
+
let blockTimestamp = (await ethers.provider.getBlock("latest")).timestamp;
|
|
132
|
+
const timeInDay = blockTimestamp % ONE_DAY;
|
|
133
|
+
// Move to before 12pm of the current day
|
|
134
|
+
if (timeInDay > 12 * ONE_HOUR) {
|
|
135
|
+
blockTimestamp += 12 * ONE_HOUR;
|
|
136
|
+
await ethers.provider.send("evm_setNextBlockTimestamp", [blockTimestamp]);
|
|
137
|
+
await ethers.provider.send("evm_mine", []);
|
|
138
|
+
}
|
|
139
|
+
const ubiNew = await deployNewUbi();
|
|
140
|
+
let amount = await ubiNew.connect(claimer1)["checkEntitlement()"]();
|
|
141
|
+
expect(amount).to.equal(0);
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
it("should start the ubi", async () => {
|
|
145
|
+
await setSchemes([ubi.address]);
|
|
146
|
+
// await ubi.start();
|
|
147
|
+
const block = await ethers.provider.getBlock("latest");
|
|
148
|
+
const startUBI = block.timestamp;
|
|
149
|
+
let periodStart = await ubi.periodStart().then(_ => _.toNumber());
|
|
150
|
+
let startDate = new Date(periodStart * 1000);
|
|
151
|
+
expect(startDate.toISOString()).to.have.string("T12:00:00.000Z"); //contract set itself to start at noon GMT
|
|
152
|
+
await increaseTime(ONE_DAY / 2); // increase time half of the day to make sure ubi period started
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
it("should not be able to execute claiming when the caller is not whitelisted", async () => {
|
|
156
|
+
let error = await ubi.claim().catch(e => e);
|
|
157
|
+
expect(error.message).to.have.string("UBIScheme: not whitelisted");
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
it.skip("should not be able to claim when the claim pool is not active", async () => {
|
|
161
|
+
await addWhitelisted(claimer1.address, "claimer1");
|
|
162
|
+
let error = await ubi
|
|
163
|
+
.connect(claimer1)
|
|
164
|
+
.claim()
|
|
165
|
+
.catch(e => e);
|
|
166
|
+
expect(error.message).to.have.string("is not active");
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
it.skip("should set the ubi scheme by avatar", async () => {
|
|
170
|
+
let encodedCall = firstClaimPool.interface.encodeFunctionData(
|
|
171
|
+
"setUBIScheme",
|
|
172
|
+
[NULL_ADDRESS]
|
|
173
|
+
);
|
|
174
|
+
await genericCall(firstClaimPool.address, encodedCall);
|
|
175
|
+
const newUbi = await firstClaimPool.ubi();
|
|
176
|
+
expect(newUbi.toString()).to.be.equal(NULL_ADDRESS);
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
it.skip("should not be able to claim when the ubi is not initialized", async () => {
|
|
180
|
+
await setSchemes([firstClaimPool.address]);
|
|
181
|
+
await firstClaimPool.start();
|
|
182
|
+
let error = await ubi
|
|
183
|
+
.connect(claimer1)
|
|
184
|
+
.claim()
|
|
185
|
+
.catch(e => e);
|
|
186
|
+
expect(error.message).to.have.string("ubi has not initialized");
|
|
187
|
+
|
|
188
|
+
// initializing the ubi
|
|
189
|
+
let encodedCall = firstClaimPool.interface.encodeFunctionData(
|
|
190
|
+
"setUBIScheme",
|
|
191
|
+
[ubi.address]
|
|
192
|
+
);
|
|
193
|
+
await genericCall(firstClaimPool.address, encodedCall);
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
it.skip("should not be able to call award user if the caller is not the ubi", async () => {
|
|
197
|
+
let error = await firstClaimPool.awardUser(claimer1.address).catch(e => e);
|
|
198
|
+
expect(error.message).to.have.string("Only UBIScheme can call this method");
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
it("should estimate next daily UBI to according to min value when no claimers and not using first claim pool", async () => {
|
|
202
|
+
const nextDailyUBIBefore = await ubi.estimateNextDailyUBI();
|
|
203
|
+
const minActiveUsers = await ubi.minActiveUsers();
|
|
204
|
+
const cycleLength = await ubi.cycleLength();
|
|
205
|
+
const pool = await goodDollar.balanceOf(ubi.address);
|
|
206
|
+
const dailyPool = pool.div(cycleLength);
|
|
207
|
+
const defaultDailyClaim = dailyPool.div(minActiveUsers);
|
|
208
|
+
// let encodedCall = ubi.interface.encodeFunctionData("setUseFirstClaimPool", [
|
|
209
|
+
// false
|
|
210
|
+
// ]);
|
|
211
|
+
// await genericCall(ubi.address, encodedCall);
|
|
212
|
+
const nextDailyUBIAfter = await ubi.estimateNextDailyUBI();
|
|
213
|
+
|
|
214
|
+
expect(nextDailyUBIBefore.eq(0));
|
|
215
|
+
expect(nextDailyUBIAfter.gt(nextDailyUBIBefore));
|
|
216
|
+
expect(nextDailyUBIAfter.eq(defaultDailyClaim));
|
|
217
|
+
|
|
218
|
+
// encodedCall = ubi.interface.encodeFunctionData("setUseFirstClaimPool", [
|
|
219
|
+
// true
|
|
220
|
+
// ]);
|
|
221
|
+
// await genericCall(ubi.address, encodedCall);
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
it.skip("should award a new user with 0 on first time execute claim if the first claim contract has no balance", async () => {
|
|
225
|
+
let tx = await (await ubi.connect(claimer1).claim()).wait();
|
|
226
|
+
let claimer1Balance = await goodDollar.balanceOf(claimer1.address);
|
|
227
|
+
expect(claimer1Balance.toNumber()).to.be.equal(0);
|
|
228
|
+
|
|
229
|
+
expect(tx.events.find(_ => _.event === "ActivatedUser")).to.be.not.empty;
|
|
230
|
+
expect(tx.events.find(_ => _.event === "UBIClaimed")).to.be.not.empty;
|
|
231
|
+
});
|
|
232
|
+
|
|
233
|
+
it.skip("should award a new user with the award amount on first time execute claim", async () => {
|
|
234
|
+
await goodDollar.mint(firstClaimPool.address, "10000000");
|
|
235
|
+
await addWhitelisted(claimer2.address, "claimer2");
|
|
236
|
+
let transaction = await (await ubi.connect(claimer2).claim()).wait();
|
|
237
|
+
let activeUsersCount = await ubi.activeUsersCount();
|
|
238
|
+
let claimer2Balance = await goodDollar.balanceOf(claimer2.address);
|
|
239
|
+
const [claimersCount, amountClaimed] = await ubi.getDailyStats();
|
|
240
|
+
expect(claimer2Balance.toNumber()).to.be.equal(100);
|
|
241
|
+
expect(amountClaimed.eq(100));
|
|
242
|
+
expect(activeUsersCount.toNumber()).to.be.equal(2);
|
|
243
|
+
expect(claimersCount.eq(2));
|
|
244
|
+
expect(transaction.events.find(_ => _.event === "ActivatedUser")).to.be.not
|
|
245
|
+
.empty;
|
|
246
|
+
});
|
|
247
|
+
|
|
248
|
+
it.skip("should not be able to fish a new user", async () => {
|
|
249
|
+
let error = await ubi
|
|
250
|
+
.connect(fisherman)
|
|
251
|
+
.fish(claimer1.address)
|
|
252
|
+
.catch(e => e);
|
|
253
|
+
expect(error.message).to.have.string("can't fish");
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
it("should not initiate the scheme balance and distribution formula when a new user execute claim", async () => {
|
|
257
|
+
let balance = await goodDollar.balanceOf(ubi.address);
|
|
258
|
+
let dailyUbi = await ubi.dailyUbi();
|
|
259
|
+
expect(balance.toString()).to.be.equal("0");
|
|
260
|
+
expect(dailyUbi.toString()).to.be.equal("0");
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
it("should returns a valid distribution calculation when the current balance is lower than the number of daily claimers", async () => {
|
|
264
|
+
await addWhitelisted(claimer1.address, "claimer1");
|
|
265
|
+
await addWhitelisted(claimer2.address, "claimer2");
|
|
266
|
+
// there is 0.01 gd and 2 claimers
|
|
267
|
+
// this is an edge case
|
|
268
|
+
await goodDollar.mint(ubi.address, "1");
|
|
269
|
+
await increaseTime(ONE_DAY);
|
|
270
|
+
await ubi.connect(claimer1).claim();
|
|
271
|
+
await ubi.connect(claimer2).claim();
|
|
272
|
+
let ubiBalance = await goodDollar.balanceOf(ubi.address);
|
|
273
|
+
await increaseTime(ONE_DAY);
|
|
274
|
+
let dailyUbi = await ubi.dailyUbi();
|
|
275
|
+
let claimer1Balance = await goodDollar.balanceOf(claimer1.address);
|
|
276
|
+
expect(ubiBalance.toString()).to.be.equal("1");
|
|
277
|
+
expect(dailyUbi.toString()).to.be.equal("0");
|
|
278
|
+
expect(claimer1Balance.toString()).to.be.equal("0");
|
|
279
|
+
});
|
|
280
|
+
|
|
281
|
+
it("should updates the daily stats when claiming", async () => {
|
|
282
|
+
await goodDollar.mint(ubi.address, 1000);
|
|
283
|
+
await addWhitelisted(claimer3.address, "claimer3");
|
|
284
|
+
const [claimersBefore, amountBefore] = await ubi.getDailyStats();
|
|
285
|
+
|
|
286
|
+
await ubi.connect(claimer3).claim();
|
|
287
|
+
|
|
288
|
+
const [claimersAfter, amountAfter] = await ubi.getDailyStats();
|
|
289
|
+
expect(claimersAfter.sub(claimersBefore).toString()).to.be.equal("1");
|
|
290
|
+
expect(amountAfter).to.be.gt(amountBefore);
|
|
291
|
+
});
|
|
292
|
+
|
|
293
|
+
it.skip("should calculate the daily distribution and withdraw balance from the dao when an active user executes claim", async () => {
|
|
294
|
+
// checking that the distirbution works ok also when not all claimers claim
|
|
295
|
+
// achieving that goal by leaving the claimed amount of the second claimer
|
|
296
|
+
// in the ubi and in the next day after transferring the balances from the
|
|
297
|
+
// dao, making sure that the tokens that have not been claimed are
|
|
298
|
+
// taken by the formula as expected.
|
|
299
|
+
let encoded = goodDollar.interface.encodeFunctionData("transfer", [
|
|
300
|
+
signers[0].address,
|
|
301
|
+
"1000"
|
|
302
|
+
]);
|
|
303
|
+
|
|
304
|
+
await genericCall(goodDollar.address, encoded); // There is 10gd initially allocated to avatar so I send it to another address for further transactions
|
|
305
|
+
let encodedCall = ubi.interface.encodeFunctionData(
|
|
306
|
+
"setShouldWithdrawFromDAO",
|
|
307
|
+
[true]
|
|
308
|
+
);
|
|
309
|
+
await genericCall(ubi.address, encodedCall); // we should set cyclelength to one cause this tests was implemented according to it
|
|
310
|
+
const currentDay = await ubi.currentDayInCycle().then(_ => _.toNumber());
|
|
311
|
+
await increaseTime(ONE_DAY);
|
|
312
|
+
await goodDollar.mint(avatar, "300002");
|
|
313
|
+
//ubi will have 902GD in pool so daily ubi is now 300002/1(cycle)/1000(min claimers) = 300
|
|
314
|
+
await ubi.connect(claimer1).claim();
|
|
315
|
+
await increaseTime(ONE_DAY);
|
|
316
|
+
await goodDollar.mint(avatar, "1");
|
|
317
|
+
//daily ubi is 0 since only 1 GD is in pool and can't be divided
|
|
318
|
+
// an edge case
|
|
319
|
+
await ubi.connect(claimer1).claim();
|
|
320
|
+
let avatarBalance = await goodDollar.balanceOf(avatar);
|
|
321
|
+
let claimer1Balance = await goodDollar.balanceOf(claimer1.address);
|
|
322
|
+
expect(avatarBalance.toString()).to.be.equal("0");
|
|
323
|
+
// 300 GD from first day and 299 (30002 - 300 /1 / 1000) from the second day claimed in this test
|
|
324
|
+
expect(claimer1Balance.toString()).to.be.equal("599");
|
|
325
|
+
});
|
|
326
|
+
|
|
327
|
+
it.skip("should return the reward value for entitlement user", async () => {
|
|
328
|
+
let amount = await ubi.connect(claimer4)["checkEntitlement()"]();
|
|
329
|
+
let claimAmount = await firstClaimPool.claimAmount();
|
|
330
|
+
expect(amount.toString()).to.be.equal(claimAmount.toString());
|
|
331
|
+
});
|
|
332
|
+
|
|
333
|
+
it.skip("should return that a new user is not an active user", async () => {
|
|
334
|
+
let isActiveUser = await ubi.isActiveUser(claimer7.address);
|
|
335
|
+
expect(isActiveUser).to.be.false;
|
|
336
|
+
});
|
|
337
|
+
|
|
338
|
+
it.skip("should not be able to fish an active user", async () => {
|
|
339
|
+
await addWhitelisted(claimer4.address, "claimer4");
|
|
340
|
+
await ubi.connect(claimer3).claim();
|
|
341
|
+
await ubi.connect(claimer4).claim();
|
|
342
|
+
let isActiveUser = await ubi.isActiveUser(claimer4.address);
|
|
343
|
+
let error = await ubi
|
|
344
|
+
.connect(fisherman)
|
|
345
|
+
.fish(claimer4.address)
|
|
346
|
+
.catch(e => e);
|
|
347
|
+
expect(isActiveUser).to.be.true;
|
|
348
|
+
expect(error.message).to.have.string("can't fish");
|
|
349
|
+
});
|
|
350
|
+
|
|
351
|
+
it("should not be able to execute claim twice a day", async () => {
|
|
352
|
+
await goodDollar.mint(avatar, "20");
|
|
353
|
+
await addWhitelisted(claimer4.address, "claimer4");
|
|
354
|
+
await increaseTime(ONE_DAY);
|
|
355
|
+
let claimer4Balance1 = await goodDollar.balanceOf(claimer4.address);
|
|
356
|
+
await ubi.connect(claimer4).claim();
|
|
357
|
+
let claimer4Balance2 = await goodDollar.balanceOf(claimer4.address);
|
|
358
|
+
let dailyUbi = await ubi.dailyUbi();
|
|
359
|
+
await ubi.connect(claimer4).claim();
|
|
360
|
+
let claimer4Balance3 = await goodDollar.balanceOf(claimer4.address);
|
|
361
|
+
expect(
|
|
362
|
+
claimer4Balance2.toNumber() - claimer4Balance1.toNumber()
|
|
363
|
+
).to.be.equal(dailyUbi.toNumber());
|
|
364
|
+
expect(
|
|
365
|
+
claimer4Balance3.toNumber() - claimer4Balance1.toNumber()
|
|
366
|
+
).to.be.equal(dailyUbi.toNumber());
|
|
367
|
+
});
|
|
368
|
+
|
|
369
|
+
it("should return the daily ubi for entitlement user", async () => {
|
|
370
|
+
// claimer3 hasn't claimed during that interval so that user
|
|
371
|
+
// may have the dailyUbi
|
|
372
|
+
let amount = await ubi.connect(claimer3)["checkEntitlement()"]();
|
|
373
|
+
let dailyUbi = await ubi.dailyUbi();
|
|
374
|
+
expect(amount.toString()).to.be.equal(dailyUbi.toString());
|
|
375
|
+
});
|
|
376
|
+
it("should return 0 for entitlement if the user has already claimed for today", async () => {
|
|
377
|
+
await ubi.connect(claimer4).claim();
|
|
378
|
+
let amount = await ubi.connect(claimer4)["checkEntitlement()"]();
|
|
379
|
+
expect(amount.toString()).to.be.equal("0");
|
|
380
|
+
});
|
|
381
|
+
|
|
382
|
+
it.skip("should be able to fish inactive user", async () => {
|
|
383
|
+
await goodDollar.mint(avatar, "20");
|
|
384
|
+
await increaseTime(MAX_INACTIVE_DAYS * ONE_DAY * 14);
|
|
385
|
+
let claimer4BalanceBefore = await goodDollar.balanceOf(claimer4.address);
|
|
386
|
+
let isFishedBefore = await ubi.fishedUsersAddresses(claimer1.address);
|
|
387
|
+
let tx = await (await ubi.connect(claimer4).fish(claimer1.address)).wait();
|
|
388
|
+
let isFishedAfter = await ubi.fishedUsersAddresses(claimer1.address);
|
|
389
|
+
let claimer4BalanceAfter = await goodDollar.balanceOf(claimer4.address);
|
|
390
|
+
let dailyUbi = await ubi.dailyUbi();
|
|
391
|
+
expect(isFishedBefore).to.be.false;
|
|
392
|
+
expect(isFishedAfter).to.be.true;
|
|
393
|
+
expect(tx.events.find(_ => _.event === "InactiveUserFished")).to.be.not
|
|
394
|
+
.empty;
|
|
395
|
+
expect(
|
|
396
|
+
claimer4BalanceAfter.toNumber() - claimer4BalanceBefore.toNumber()
|
|
397
|
+
).to.be.equal(dailyUbi.toNumber());
|
|
398
|
+
});
|
|
399
|
+
|
|
400
|
+
it.skip("should not be able to fish the same user twice", async () => {
|
|
401
|
+
await goodDollar.mint(avatar, "200");
|
|
402
|
+
await increaseTime(MAX_INACTIVE_DAYS * ONE_DAY);
|
|
403
|
+
let claimer4BalanceBefore = await goodDollar.balanceOf(claimer4.address);
|
|
404
|
+
let isFishedBefore = await ubi.fishedUsersAddresses(claimer1.address);
|
|
405
|
+
let error = await ubi
|
|
406
|
+
.connect(claimer4)
|
|
407
|
+
.fish(claimer1.address)
|
|
408
|
+
.catch(e => e);
|
|
409
|
+
let isFishedAfter = await ubi.fishedUsersAddresses(claimer1.address);
|
|
410
|
+
let claimer4BalanceAfter = await goodDollar.balanceOf(claimer4.address);
|
|
411
|
+
expect(error.message).to.have.string("can't fish");
|
|
412
|
+
expect(isFishedBefore).to.be.true;
|
|
413
|
+
expect(isFishedAfter).to.be.true;
|
|
414
|
+
expect(claimer4BalanceAfter.toNumber()).to.be.equal(
|
|
415
|
+
claimer4BalanceBefore.toNumber()
|
|
416
|
+
);
|
|
417
|
+
});
|
|
418
|
+
it.skip("should be able to fish multiple user", async () => {
|
|
419
|
+
await goodDollar.mint(avatar, "20");
|
|
420
|
+
await increaseTime(MAX_INACTIVE_DAYS * ONE_DAY);
|
|
421
|
+
let claimer4BalanceBefore = await goodDollar.balanceOf(claimer4.address);
|
|
422
|
+
let tx = await (
|
|
423
|
+
await ubi
|
|
424
|
+
.connect(claimer4)
|
|
425
|
+
.fishMulti([claimer2.address, claimer3.address])
|
|
426
|
+
).wait();
|
|
427
|
+
let claimer4BalanceAfter = await goodDollar.balanceOf(claimer4.address);
|
|
428
|
+
let dailyUbi = await ubi.dailyUbi();
|
|
429
|
+
const totalFishedEvent = tx.events.find(e => e.event === "TotalFished");
|
|
430
|
+
expect(tx.events.find(e => e.event === "InactiveUserFished")).to.be.not
|
|
431
|
+
.empty;
|
|
432
|
+
expect(
|
|
433
|
+
claimer4BalanceAfter.toNumber() - claimer4BalanceBefore.toNumber()
|
|
434
|
+
).to.be.equal(2 * dailyUbi.toNumber());
|
|
435
|
+
expect(totalFishedEvent.args.total.toNumber() === 2).to.be.true;
|
|
436
|
+
});
|
|
437
|
+
|
|
438
|
+
it.skip("should not be able to remove an active user that no longer whitelisted", async () => {
|
|
439
|
+
await goodDollar.mint(avatar, "20");
|
|
440
|
+
await ubi.connect(claimer2).claim(); // makes sure that the user is active
|
|
441
|
+
await identity.removeWhitelisted(claimer2.address);
|
|
442
|
+
let claimer4BalanceBefore = await goodDollar.balanceOf(claimer4.address);
|
|
443
|
+
let isFishedBefore = await ubi.fishedUsersAddresses(claimer2.address);
|
|
444
|
+
let error = await ubi
|
|
445
|
+
.connect(claimer4)
|
|
446
|
+
.fish(claimer2.address)
|
|
447
|
+
.catch(e => e);
|
|
448
|
+
let isFishedAfter = await ubi.fishedUsersAddresses(claimer2.address);
|
|
449
|
+
let claimer4BalanceAfter = await goodDollar.balanceOf(claimer4.address);
|
|
450
|
+
expect(error.message).to.have.string("can't fish");
|
|
451
|
+
expect(isFishedBefore).to.be.false;
|
|
452
|
+
expect(isFishedAfter).to.be.false;
|
|
453
|
+
expect(claimer4BalanceAfter.toNumber()).to.be.equal(
|
|
454
|
+
claimer4BalanceBefore.toNumber()
|
|
455
|
+
);
|
|
456
|
+
});
|
|
457
|
+
|
|
458
|
+
it.skip("should be able to remove an inactive user that no longer whitelisted", async () => {
|
|
459
|
+
await goodDollar.mint(avatar, "20");
|
|
460
|
+
await increaseTime(MAX_INACTIVE_DAYS * ONE_DAY * 14);
|
|
461
|
+
let claimer4BalanceBefore = await goodDollar.balanceOf(claimer4.address);
|
|
462
|
+
let isFishedBefore = await ubi.fishedUsersAddresses(claimer2.address);
|
|
463
|
+
let tx = await (await ubi.connect(claimer4).fish(claimer2.address)).wait();
|
|
464
|
+
let isFishedAfter = await ubi.fishedUsersAddresses(claimer2.address);
|
|
465
|
+
let claimer4BalanceAfter = await goodDollar.balanceOf(claimer4.address);
|
|
466
|
+
let dailyUbi = await ubi.dailyUbi();
|
|
467
|
+
expect(isFishedBefore).to.be.false;
|
|
468
|
+
expect(isFishedAfter).to.be.true;
|
|
469
|
+
expect(tx.events.find(e => e.event === "InactiveUserFished")).to.be.not
|
|
470
|
+
.empty;
|
|
471
|
+
expect(
|
|
472
|
+
claimer4BalanceAfter.toNumber() - claimer4BalanceBefore.toNumber()
|
|
473
|
+
).to.be.equal(dailyUbi.toNumber());
|
|
474
|
+
});
|
|
475
|
+
|
|
476
|
+
it.skip("should be able to fish user that removed from the whitelist", async () => {
|
|
477
|
+
await goodDollar.mint(avatar, "20");
|
|
478
|
+
await identity.addWhitelisted(claimer2.address);
|
|
479
|
+
await ubi.connect(claimer2).claim();
|
|
480
|
+
await increaseTime(MAX_INACTIVE_DAYS * ONE_DAY * 14);
|
|
481
|
+
await identity.removeWhitelisted(claimer2.address);
|
|
482
|
+
let claimer4BalanceBefore = await goodDollar.balanceOf(claimer4.address);
|
|
483
|
+
let isFishedBefore = await ubi.fishedUsersAddresses(claimer2.address);
|
|
484
|
+
let tx = await (await ubi.connect(claimer4).fish(claimer2.address)).wait();
|
|
485
|
+
let isFishedAfter = await ubi.fishedUsersAddresses(claimer2.address);
|
|
486
|
+
let claimer4BalanceAfter = await goodDollar.balanceOf(claimer4.address);
|
|
487
|
+
let dailyUbi = await ubi.dailyUbi();
|
|
488
|
+
expect(isFishedBefore).to.be.false;
|
|
489
|
+
expect(isFishedAfter).to.be.true;
|
|
490
|
+
expect(tx.events.find(e => e.event === "InactiveUserFished")).to.be.not
|
|
491
|
+
.empty;
|
|
492
|
+
expect(
|
|
493
|
+
claimer4BalanceAfter.toNumber() - claimer4BalanceBefore.toNumber()
|
|
494
|
+
).to.be.equal(dailyUbi.toNumber());
|
|
495
|
+
});
|
|
496
|
+
|
|
497
|
+
it.skip("should recieves a claim reward on claim after removed and added again to the whitelist", async () => {
|
|
498
|
+
let isFishedBefore = await ubi.fishedUsersAddresses(claimer2.address);
|
|
499
|
+
let activeUsersCountBefore = await ubi.activeUsersCount();
|
|
500
|
+
await identity.addWhitelisted(claimer2.address);
|
|
501
|
+
let claimerBalanceBefore = await goodDollar.balanceOf(claimer2.address);
|
|
502
|
+
await ubi.connect(claimer2).claim();
|
|
503
|
+
let claimerBalanceAfter = await goodDollar.balanceOf(claimer2.address);
|
|
504
|
+
let isFishedAfter = await ubi.fishedUsersAddresses(claimer2.address);
|
|
505
|
+
let activeUsersCountAfter = await ubi.activeUsersCount();
|
|
506
|
+
expect(isFishedBefore).to.be.true;
|
|
507
|
+
expect(isFishedAfter).to.be.false;
|
|
508
|
+
expect(
|
|
509
|
+
activeUsersCountAfter.toNumber() - activeUsersCountBefore.toNumber()
|
|
510
|
+
).to.be.equal(1);
|
|
511
|
+
expect(
|
|
512
|
+
claimerBalanceAfter.toNumber() - claimerBalanceBefore.toNumber()
|
|
513
|
+
).to.be.equal(100);
|
|
514
|
+
});
|
|
515
|
+
|
|
516
|
+
it("distribute formula should return correct value", async () => {
|
|
517
|
+
await goodDollar.mint(avatar, "20000");
|
|
518
|
+
await increaseTime(ONE_DAY);
|
|
519
|
+
let ubiBalance = await goodDollar.balanceOf(ubi.address);
|
|
520
|
+
let activeUsersCount = await ubi.minActiveUsers(); // await ubi.activeUsersCount();
|
|
521
|
+
let claimer4BalanceBefore = await goodDollar.balanceOf(claimer2.address);
|
|
522
|
+
await ubi.connect(claimer2).claim();
|
|
523
|
+
let claimer4BalanceAfter = await goodDollar.balanceOf(claimer2.address);
|
|
524
|
+
expect(ubiBalance.div(activeUsersCount).toNumber()).to.be.equal(
|
|
525
|
+
claimer4BalanceAfter.toNumber() - claimer4BalanceBefore.toNumber()
|
|
526
|
+
);
|
|
527
|
+
console.log({
|
|
528
|
+
ubiBalance,
|
|
529
|
+
activeUsersCount,
|
|
530
|
+
claimer4BalanceBefore,
|
|
531
|
+
claimer4BalanceAfter
|
|
532
|
+
});
|
|
533
|
+
});
|
|
534
|
+
|
|
535
|
+
it("distribute formula should return correct value while gd has transferred directly to the ubi", async () => {
|
|
536
|
+
await goodDollar.mint(ubi.address, "200");
|
|
537
|
+
await increaseTime(ONE_DAY);
|
|
538
|
+
let ubiBalance = await goodDollar.balanceOf(ubi.address);
|
|
539
|
+
let activeUsersCount = await ubi.minActiveUsers(); // await ubi.activeUsersCount();
|
|
540
|
+
let claimer4BalanceBefore = await goodDollar.balanceOf(claimer2.address);
|
|
541
|
+
await ubi.connect(claimer2).claim();
|
|
542
|
+
let claimer4BalanceAfter = await goodDollar.balanceOf(claimer2.address);
|
|
543
|
+
let dailyUbi = await ubi.dailyUbi();
|
|
544
|
+
expect(ubiBalance.div(activeUsersCount).toNumber()).to.be.equal(
|
|
545
|
+
claimer4BalanceAfter.toNumber() - claimer4BalanceBefore.toNumber()
|
|
546
|
+
);
|
|
547
|
+
expect(ubiBalance.div(activeUsersCount).toNumber()).to.be.equal(
|
|
548
|
+
dailyUbi.toNumber()
|
|
549
|
+
);
|
|
550
|
+
});
|
|
551
|
+
|
|
552
|
+
it("should calcualte the correct distribution formula and transfer the correct amount when the ubi has a large amount of tokens", async () => {
|
|
553
|
+
await increaseTime(ONE_DAY);
|
|
554
|
+
await goodDollar.mint(avatar, "948439324829"); // checking claim with a random number
|
|
555
|
+
await increaseTime(ONE_DAY * 2);
|
|
556
|
+
await identity.authenticate(claimer1.address);
|
|
557
|
+
// first claim
|
|
558
|
+
await ubi.connect(claimer1).claim();
|
|
559
|
+
await increaseTime(ONE_DAY * 2);
|
|
560
|
+
let claimer1Balance1 = await goodDollar.balanceOf(claimer1.address);
|
|
561
|
+
// regular claim
|
|
562
|
+
await ubi.connect(claimer1).claim();
|
|
563
|
+
let claimer1Balance2 = await goodDollar.balanceOf(claimer1.address);
|
|
564
|
+
let dailyCyclePool = await ubi.dailyCyclePool();
|
|
565
|
+
let activeUsersCount = await ubi.minActiveUsers(); // await ubi.activeUsersCount();
|
|
566
|
+
// the dailyCyclePool divided by max(activeUser,minActiveUsers) should give the daily claim (diff between ubipool balances)
|
|
567
|
+
expect(claimer1Balance2.sub(claimer1Balance1).toString()).to.be.equal(
|
|
568
|
+
dailyCyclePool.div(activeUsersCount)
|
|
569
|
+
);
|
|
570
|
+
});
|
|
571
|
+
|
|
572
|
+
it.skip("should be able to iterate over all accounts if enough gas in fishMulti", async () => {
|
|
573
|
+
//should not reach fishin first user because atleast 150k gas is required
|
|
574
|
+
let tx = await ubi
|
|
575
|
+
.connect(fisherman)
|
|
576
|
+
.fishMulti([claimer5.address, claimer6.address, claimer1.address], {
|
|
577
|
+
gasLimit: 100000
|
|
578
|
+
})
|
|
579
|
+
.then(_ => true)
|
|
580
|
+
.catch(e => console.log({ e }));
|
|
581
|
+
expect(tx).to.be.true;
|
|
582
|
+
//should loop over all users when enough gas without exceptions
|
|
583
|
+
let res = await ubi
|
|
584
|
+
.fishMulti([claimer5.address, claimer6.address, claimer1.address], {
|
|
585
|
+
gasLimit: 1000000
|
|
586
|
+
})
|
|
587
|
+
.then(_ => true)
|
|
588
|
+
.catch(e => console.log({ e }));
|
|
589
|
+
expect(res).to.be.true;
|
|
590
|
+
});
|
|
591
|
+
|
|
592
|
+
it("should return the estimated claim value for entitlement user before anyone claimed", async () => {
|
|
593
|
+
await increaseTime(ONE_DAY);
|
|
594
|
+
await ubi.connect(claimer1).claim();
|
|
595
|
+
await increaseTime(ONE_DAY);
|
|
596
|
+
let amount = await ubi.connect(claimer1)["checkEntitlement()"]();
|
|
597
|
+
let balance2 = await goodDollar.balanceOf(ubi.address);
|
|
598
|
+
let estimated = await ubi.estimateNextDailyUBI();
|
|
599
|
+
expect(amount).to.be.equal(estimated);
|
|
600
|
+
});
|
|
601
|
+
|
|
602
|
+
it.skip("should set the ubi claim amount by avatar", async () => {
|
|
603
|
+
let encodedCall = firstClaimPool.interface.encodeFunctionData(
|
|
604
|
+
"setClaimAmount",
|
|
605
|
+
[200]
|
|
606
|
+
);
|
|
607
|
+
|
|
608
|
+
await genericCall(firstClaimPool.address, encodedCall);
|
|
609
|
+
const claimAmount = await firstClaimPool.claimAmount();
|
|
610
|
+
expect(claimAmount.toString()).to.be.equal("200");
|
|
611
|
+
});
|
|
612
|
+
|
|
613
|
+
it.skip("should set if withdraw from the dao or not", async () => {
|
|
614
|
+
let encodedCall = ubi.interface.encodeFunctionData(
|
|
615
|
+
"setShouldWithdrawFromDAO",
|
|
616
|
+
[false]
|
|
617
|
+
);
|
|
618
|
+
await genericCall(ubi.address, encodedCall); // we should set cyclelength to one cause this tests was implemented according to it
|
|
619
|
+
const shouldWithdrawFromDAO = await ubi.shouldWithdrawFromDAO();
|
|
620
|
+
expect(shouldWithdrawFromDAO).to.be.equal(false);
|
|
621
|
+
});
|
|
622
|
+
|
|
623
|
+
it("should award first claimer with default value when not using first claim pool", async () => {
|
|
624
|
+
const ubiNew = await deployNewUbi();
|
|
625
|
+
await goodDollar.mint(ubiNew.address, 1000);
|
|
626
|
+
const expectedDailyUbi = 1; // 1000 divided by minActiveUsers which is also 1000 by default
|
|
627
|
+
await addWhitelisted(claimer8.address, "claimer8");
|
|
628
|
+
|
|
629
|
+
const claimerBalanceBefore = await goodDollar.balanceOf(claimer8.address);
|
|
630
|
+
await (await ubiNew.connect(claimer8).claim()).wait();
|
|
631
|
+
const claimerBalanceAfter = await goodDollar.balanceOf(claimer8.address);
|
|
632
|
+
|
|
633
|
+
expect(claimerBalanceAfter.gt(claimerBalanceBefore));
|
|
634
|
+
expect(claimerBalanceAfter.sub(claimerBalanceBefore).eq(expectedDailyUbi));
|
|
635
|
+
});
|
|
636
|
+
});
|
|
@@ -42,7 +42,7 @@ describe("AdminWallet", () => {
|
|
|
42
42
|
toWhitelist
|
|
43
43
|
] = signers.slice(10);
|
|
44
44
|
let { identity: id, nameService, gd } = await loadFixture(createDAO);
|
|
45
|
-
identity = await ethers.getContractAt("
|
|
45
|
+
identity = await ethers.getContractAt("IdentityV3", id);
|
|
46
46
|
gooddollar = await ethers.getContractAt("GoodDollar", gd);
|
|
47
47
|
adminWallet = (await upgrades.deployProxy(
|
|
48
48
|
await ethers.getContractFactory("AdminWallet"),
|
|
@@ -115,7 +115,10 @@ describe("proxyfactory", () => {
|
|
|
115
115
|
).wait();
|
|
116
116
|
const proxyAddr = deployTX.events.find(_ => _.event === "ProxyCreated").args
|
|
117
117
|
.proxy;
|
|
118
|
-
let proxy = await ethers.getContractAt(
|
|
118
|
+
let proxy = await ethers.getContractAt(
|
|
119
|
+
"contracts/utils/ProxyFactory1967.sol:ERC1967Proxy",
|
|
120
|
+
proxyAddr
|
|
121
|
+
);
|
|
119
122
|
|
|
120
123
|
const c2 = await (
|
|
121
124
|
await ethers.getContractFactory("UpgradableMock")
|