@gooddollar/goodprotocol 2.0.22 → 2.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/artifacts/abis/BuyGDClone.min.json +1 -1
- package/artifacts/abis/BuyGDCloneFactory.min.json +1 -1
- package/artifacts/abis/DistributionHelper.min.json +1 -1
- package/artifacts/abis/DistributionHelperTest.min.json +1 -1
- package/artifacts/abis/DistributionHelperTestHelper.min.json +1 -1
- package/artifacts/abis/DonateGDClone.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/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/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/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
- package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
- package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
- package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
- package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
- package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
- package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
- 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/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
- package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
- 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/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
- package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
- package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
- package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.json +17 -4
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +17 -4
- package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
- 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/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/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
- 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/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
- 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/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
- package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
- package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
- package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
- package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +17 -4
- 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/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/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
- 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/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/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/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
- package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +1 -1
- 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/IFeesFormula.sol/IFeesFormula.dbg.json +1 -1
- package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.dbg.json +1 -1
- 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/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +2 -2
- package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +1 -1
- 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/UUPSUtils.dbg.json +1 -1
- package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
- package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.dbg.json +1 -1
- package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
- package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
- package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
- 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/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +1 -1
- package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.json +2 -2
- package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.dbg.json +1 -1
- package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.json +48 -5
- package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.dbg.json +1 -1
- package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.json +41 -2
- package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.dbg.json +1 -1
- package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.json +79 -5
- package/artifacts/contracts/utils/BuyGDClone.sol/IQuoterV2.dbg.json +1 -1
- package/artifacts/contracts/utils/BuyGDClone.sol/ISwapRouter.dbg.json +1 -1
- package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
- package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
- package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
- package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
- package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
- 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/IdentityFix.sol/IdentityFix.dbg.json +1 -1
- package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
- package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
- package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
- package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.dbg.json +1 -1
- package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.dbg.json +1 -1
- 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/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
- package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
- package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
- package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
- package/contracts/reserve/DistributionHelper.sol +16 -2
- package/contracts/token/superfluid/SuperGoodDollar.sol +1 -1
- package/contracts/utils/BuyGDClone.sol +82 -14
- package/dist/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +2 -2
- package/hardhat.config.ts +4 -1
- package/package.json +2 -2
- package/releases/deployment.json +3 -3
- package/scripts/analytics/stuckgd.ts +70 -0
- package/scripts/fv.ts +58 -5
- package/scripts/proposals/updateDistHelper.ts +180 -0
- package/scripts/utils.ts +25 -2
- package/test/reserve/DistributionHelper.test.ts +1 -1
- package/types/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.ts +19 -5
- package/types/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.ts +19 -5
- package/types/contracts/reserve/DistributionHelper.ts +19 -5
- package/types/contracts/utils/BuyGDClone.sol/BuyGDClone.ts +28 -3
- package/types/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.ts +52 -2
- package/types/contracts/utils/BuyGDClone.sol/DonateGDClone.ts +56 -3
- package/types/factories/contracts/governance/StakersDistribution__factory.ts +1 -1
- package/types/factories/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper__factory.ts +16 -3
- package/types/factories/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest__factory.ts +16 -3
- package/types/factories/contracts/mocks/GoodCompoundStakingTest__factory.ts +1 -1
- package/types/factories/contracts/mocks/GoodFundManagerTest__factory.ts +1 -1
- package/types/factories/contracts/mocks/OverMintTesterRegularStake__factory.ts +1 -1
- package/types/factories/contracts/reserve/DistributionHelper__factory.ts +16 -3
- package/types/factories/contracts/reserve/ExchangeHelper__factory.ts +1 -1
- package/types/factories/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai__factory.ts +1 -1
- package/types/factories/contracts/staking/DonationsStaking__factory.ts +1 -1
- package/types/factories/contracts/staking/GoodFundManager__factory.ts +1 -1
- package/types/factories/contracts/staking/aave/AaveStakingFactory__factory.ts +1 -1
- 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/superfluid/SuperGoodDollar__factory.ts +1 -1
- package/types/factories/contracts/utils/BuyAndBridgeHelper__factory.ts +1 -1
- package/types/factories/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory__factory.ts +40 -1
- package/types/factories/contracts/utils/BuyGDClone.sol/BuyGDClone__factory.ts +47 -4
- package/types/factories/contracts/utils/BuyGDClone.sol/DonateGDClone__factory.ts +78 -4
- package/yarn.lock +29 -30
|
@@ -138,6 +138,8 @@ contract BuyGDClone is Initializable {
|
|
|
138
138
|
error REFUND_FAILED(uint256);
|
|
139
139
|
error NO_BALANCE();
|
|
140
140
|
|
|
141
|
+
event Bought(address inToken, uint256 inAmount, uint256 outAmount);
|
|
142
|
+
|
|
141
143
|
ISwapRouter public immutable router;
|
|
142
144
|
address public constant celo = 0x471EcE3750Da237f93B8E339c536989b8978a438;
|
|
143
145
|
uint32 public immutable twapPeriod;
|
|
@@ -176,12 +178,23 @@ contract BuyGDClone is Initializable {
|
|
|
176
178
|
* @dev If the contract has a balance of cUSD, it will swap cUSD for GD tokens.
|
|
177
179
|
* @param _minAmount The minimum amount of GD tokens to receive from the swap.
|
|
178
180
|
*/
|
|
179
|
-
function swap(
|
|
181
|
+
function swap(
|
|
182
|
+
uint256 _minAmount,
|
|
183
|
+
address payable refundGas
|
|
184
|
+
) public payable returns (uint256 bought) {
|
|
180
185
|
uint256 balance = address(this).balance;
|
|
181
|
-
if (balance > 0) return swapCelo(_minAmount, refundGas);
|
|
182
186
|
|
|
187
|
+
if (balance > 0) {
|
|
188
|
+
bought = swapCelo(_minAmount, refundGas);
|
|
189
|
+
emit Bought(celo, balance, bought);
|
|
190
|
+
return bought;
|
|
191
|
+
}
|
|
183
192
|
balance = ERC20(cusd).balanceOf(address(this));
|
|
184
|
-
if (balance > 0)
|
|
193
|
+
if (balance > 0) {
|
|
194
|
+
bought = swapCusd(_minAmount, refundGas);
|
|
195
|
+
emit Bought(celo, balance, bought);
|
|
196
|
+
return bought;
|
|
197
|
+
}
|
|
185
198
|
|
|
186
199
|
revert NO_BALANCE();
|
|
187
200
|
}
|
|
@@ -193,7 +206,7 @@ contract BuyGDClone is Initializable {
|
|
|
193
206
|
function swapCelo(
|
|
194
207
|
uint256 _minAmount,
|
|
195
208
|
address payable refundGas
|
|
196
|
-
) public payable {
|
|
209
|
+
) public payable returns (uint256 bought) {
|
|
197
210
|
uint256 gasCosts;
|
|
198
211
|
if (refundGas != owner) {
|
|
199
212
|
(gasCosts, ) = oracle.quoteAllAvailablePoolsWithTimePeriod(
|
|
@@ -216,7 +229,7 @@ contract BuyGDClone is Initializable {
|
|
|
216
229
|
amountIn: amountIn,
|
|
217
230
|
amountOutMinimum: _minAmount
|
|
218
231
|
});
|
|
219
|
-
router.exactInput(params);
|
|
232
|
+
bought = router.exactInput(params);
|
|
220
233
|
if (refundGas != owner) {
|
|
221
234
|
(bool sent, ) = refundGas.call{ value: gasCosts }("");
|
|
222
235
|
if (!sent) revert REFUND_FAILED(gasCosts);
|
|
@@ -227,7 +240,10 @@ contract BuyGDClone is Initializable {
|
|
|
227
240
|
* @notice Swaps cUSD for GD tokens.
|
|
228
241
|
* @param _minAmount The minimum amount of GD tokens to receive from the swap.
|
|
229
242
|
*/
|
|
230
|
-
function swapCusd(
|
|
243
|
+
function swapCusd(
|
|
244
|
+
uint256 _minAmount,
|
|
245
|
+
address refundGas
|
|
246
|
+
) public returns (uint256 bought) {
|
|
231
247
|
uint256 gasCosts = refundGas != owner ? 1e17 : 0; //fixed 0.1$
|
|
232
248
|
uint256 amountIn = ERC20(cusd).balanceOf(address(this)) - gasCosts;
|
|
233
249
|
|
|
@@ -241,7 +257,7 @@ contract BuyGDClone is Initializable {
|
|
|
241
257
|
amountIn: amountIn,
|
|
242
258
|
amountOutMinimum: _minAmount
|
|
243
259
|
});
|
|
244
|
-
router.exactInput(params);
|
|
260
|
+
bought = router.exactInput(params);
|
|
245
261
|
if (refundGas != owner) {
|
|
246
262
|
ERC20(cusd).transfer(refundGas, gasCosts);
|
|
247
263
|
}
|
|
@@ -300,6 +316,13 @@ contract BuyGDClone is Initializable {
|
|
|
300
316
|
contract DonateGDClone is BuyGDClone {
|
|
301
317
|
error EXEC_FAILED(bytes error);
|
|
302
318
|
|
|
319
|
+
event Donated(
|
|
320
|
+
address donor,
|
|
321
|
+
address recipient,
|
|
322
|
+
address tokenDonated,
|
|
323
|
+
uint256 amountDonated
|
|
324
|
+
);
|
|
325
|
+
|
|
303
326
|
address public recoverTo;
|
|
304
327
|
bytes public callData;
|
|
305
328
|
|
|
@@ -336,8 +359,11 @@ contract DonateGDClone is BuyGDClone {
|
|
|
336
359
|
owner = address(this);
|
|
337
360
|
}
|
|
338
361
|
//no perform swap
|
|
362
|
+
address token;
|
|
363
|
+
uint256 donated;
|
|
339
364
|
if (withSwap) {
|
|
340
|
-
|
|
365
|
+
token = gd;
|
|
366
|
+
donated = swap(_minAmount, refundGas);
|
|
341
367
|
owner = tempOwner;
|
|
342
368
|
}
|
|
343
369
|
|
|
@@ -348,13 +374,26 @@ contract DonateGDClone is BuyGDClone {
|
|
|
348
374
|
uint256 gdBalance = ERC20(gd).balanceOf(address(this));
|
|
349
375
|
uint256 celoBalance = address(this).balance;
|
|
350
376
|
|
|
351
|
-
if (cusdBalance > 0)
|
|
352
|
-
|
|
353
|
-
|
|
377
|
+
if (cusdBalance > 0) {
|
|
378
|
+
ERC20(cusd).approve(address(owner), cusdBalance);
|
|
379
|
+
token = cusd;
|
|
380
|
+
donated = cusdBalance;
|
|
381
|
+
}
|
|
382
|
+
if (gdBalance > 0) {
|
|
383
|
+
ERC20(gd).approve(address(owner), gdBalance);
|
|
384
|
+
token = gd;
|
|
385
|
+
donated = gdBalance;
|
|
386
|
+
}
|
|
387
|
+
if (celoBalance > 0) {
|
|
388
|
+
ERC20(celo).approve(address(owner), celoBalance);
|
|
389
|
+
token = celo;
|
|
390
|
+
donated = celoBalance;
|
|
391
|
+
}
|
|
354
392
|
|
|
355
393
|
(bool success, bytes memory data) = owner.call{ value: 0 }(callData);
|
|
356
394
|
if (!success) revert EXEC_FAILED(data);
|
|
357
395
|
}
|
|
396
|
+
emit Donated(recoverTo, owner, token, donated);
|
|
358
397
|
}
|
|
359
398
|
|
|
360
399
|
/**
|
|
@@ -381,6 +420,7 @@ contract BuyGDCloneFactory {
|
|
|
381
420
|
error NOT_GD_TOKEN();
|
|
382
421
|
error INVALID_TWAP();
|
|
383
422
|
error RECIPIENT_ZERO();
|
|
423
|
+
error ZERO_MINAMOUNT();
|
|
384
424
|
|
|
385
425
|
IQuoterV2 public constant quoter =
|
|
386
426
|
IQuoterV2(0x82825d0554fA07f7FC52Ab63c961F330fdEFa8E8); // celo quoter
|
|
@@ -546,7 +586,8 @@ contract BuyGDCloneFactory {
|
|
|
546
586
|
ERC20(gd).transferFrom(msg.sender, address(this), amountIn);
|
|
547
587
|
}
|
|
548
588
|
|
|
549
|
-
if (_minAmount == 0)
|
|
589
|
+
if (_minAmount == 0)
|
|
590
|
+
(_minAmount, ) = minAmountByTWAP(amountIn, gd, cusd, 60);
|
|
550
591
|
|
|
551
592
|
ERC20(gd).approve(address(router), amountIn);
|
|
552
593
|
ISwapRouter.ExactInputParams memory params = ISwapRouter.ExactInputParams({
|
|
@@ -558,16 +599,43 @@ contract BuyGDCloneFactory {
|
|
|
558
599
|
return router.exactInput(params);
|
|
559
600
|
}
|
|
560
601
|
|
|
602
|
+
/**
|
|
603
|
+
* @notice Swaps cUSD for GD tokens.
|
|
604
|
+
* @param _minAmount The minimum amount of GD tokens to receive from the swap.
|
|
605
|
+
*/
|
|
606
|
+
function swapFromCusd(
|
|
607
|
+
uint256 amountIn,
|
|
608
|
+
uint256 _minAmount,
|
|
609
|
+
address recipient
|
|
610
|
+
) public returns (uint256) {
|
|
611
|
+
ERC20(cusd).transferFrom(msg.sender, address(this), amountIn);
|
|
612
|
+
|
|
613
|
+
if (_minAmount == 0)
|
|
614
|
+
(_minAmount, ) = minAmountByTWAP(amountIn, cusd, gd, 60);
|
|
615
|
+
|
|
616
|
+
ERC20(cusd).approve(address(router), amountIn);
|
|
617
|
+
ISwapRouter.ExactInputParams memory params = ISwapRouter.ExactInputParams({
|
|
618
|
+
path: abi.encodePacked(cusd, uint24(10000), gd),
|
|
619
|
+
recipient: recipient,
|
|
620
|
+
amountIn: amountIn,
|
|
621
|
+
amountOutMinimum: _minAmount
|
|
622
|
+
});
|
|
623
|
+
return router.exactInput(params);
|
|
624
|
+
}
|
|
625
|
+
|
|
561
626
|
/**
|
|
562
627
|
* @notice Calculates the minimum amount of tokens that can be received for a given amount of base tokens,
|
|
563
628
|
* based on the time-weighted average price (TWAP) of the token pair over a specified period of time.
|
|
564
629
|
* @param baseAmount The amount of base tokens to swap.
|
|
565
630
|
* @param baseToken The address of the base token.
|
|
631
|
+
* @param qtToken The address of the quote token.
|
|
632
|
+
|
|
566
633
|
* @return minTwap The minimum amount of G$ expected to receive by twap
|
|
567
634
|
*/
|
|
568
635
|
function minAmountByTWAP(
|
|
569
636
|
uint256 baseAmount,
|
|
570
637
|
address baseToken,
|
|
638
|
+
address qtToken,
|
|
571
639
|
uint32 period
|
|
572
640
|
) public view returns (uint256 minTwap, uint256 quote) {
|
|
573
641
|
uint24[] memory fees = new uint24[](1);
|
|
@@ -576,7 +644,7 @@ contract BuyGDCloneFactory {
|
|
|
576
644
|
(quote, ) = oracle.quoteSpecificFeeTiersWithTimePeriod(
|
|
577
645
|
toConvert,
|
|
578
646
|
baseToken,
|
|
579
|
-
|
|
647
|
+
qtToken,
|
|
580
648
|
fees,
|
|
581
649
|
period
|
|
582
650
|
);
|
|
@@ -584,7 +652,7 @@ contract BuyGDCloneFactory {
|
|
|
584
652
|
(uint256 curPrice, ) = oracle.quoteSpecificFeeTiersWithTimePeriod(
|
|
585
653
|
toConvert,
|
|
586
654
|
baseToken,
|
|
587
|
-
|
|
655
|
+
qtToken,
|
|
588
656
|
fees,
|
|
589
657
|
0
|
|
590
658
|
);
|