@gooddollar/goodprotocol 1.0.24 → 1.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/artifacts/abis/FuseFaucet.min.json +1 -0
  2. package/artifacts/abis/FuseStakingV3.min.json +1 -0
  3. package/artifacts/abis/IConsensus.min.json +1 -0
  4. package/artifacts/abis/InvitesV1.min.json +1 -0
  5. package/artifacts/abis/PegSwap.min.json +1 -0
  6. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  7. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  8. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  9. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  10. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  11. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  12. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  13. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  14. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  15. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  16. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  17. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  18. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  19. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  20. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  21. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  23. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  27. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  28. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  32. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  33. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +4 -0
  34. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.json +325 -0
  35. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  36. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  37. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  38. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  39. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  40. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  41. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  42. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +4 -0
  43. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.json +492 -0
  44. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  45. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  46. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  47. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  48. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  49. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  50. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  51. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  52. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  53. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  54. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  55. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  56. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  57. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  58. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  59. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  60. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  61. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  62. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  63. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  64. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  65. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  66. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  67. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  68. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  69. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  70. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  71. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  72. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  73. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  74. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  75. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +4 -0
  76. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +733 -0
  77. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +4 -0
  78. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.json +104 -0
  79. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +4 -0
  80. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.json +34 -0
  81. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  82. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  83. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  84. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  85. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  86. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  87. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  88. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  89. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  90. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  91. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  92. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  93. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  94. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  95. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  96. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  97. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  98. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  99. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  100. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  101. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  102. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  103. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  104. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  105. package/contracts/fuseFaucet/FuseFaucet.sol +172 -0
  106. package/contracts/invite/InvitesV1.sol +316 -0
  107. package/contracts/staking/FuseStakingV3.sol +641 -0
  108. package/hardhat.config.ts +7 -0
  109. package/package.json +5 -5
  110. package/scripts/misc/faucetStats.ts +103 -0
  111. package/scripts/upgradeToV2/upgradeToV2.ts +22 -7
  112. package/test/FuseFaucet.test.ts +168 -0
  113. package/test/InvitesV1.test.ts +354 -0
  114. package/test/staking/FuseStaking.test.ts +152 -0
  115. package/types/FuseFaucet.ts +498 -0
  116. package/types/FuseStakingV3.ts +1234 -0
  117. package/types/IConsensus.ts +225 -0
  118. package/types/InvitesV1.ts +797 -0
  119. package/types/OwnableUpgradeable.ts +166 -0
  120. package/types/PegSwap.ts +112 -0
  121. package/types/factories/FuseFaucet__factory.ts +373 -0
  122. package/types/factories/FuseStakingV3__factory.ts +781 -0
  123. package/types/factories/IConsensus__factory.ts +116 -0
  124. package/types/factories/InvitesV1__factory.ts +540 -0
  125. package/types/factories/OwnableUpgradeable__factory.ts +78 -0
  126. package/types/factories/PegSwap__factory.ts +46 -0
  127. package/types/hardhat.d.ts +54 -0
  128. package/types/index.ts +12 -0
@@ -0,0 +1,152 @@
1
+ import { ethers, network as networkConfig } from "hardhat";
2
+ import { FuseStakingV3 } from "../../types";
3
+ import { expect } from "chai";
4
+ import { deployMockContract, MockContract } from "ethereum-waffle";
5
+ import hre from "hardhat";
6
+ import { abi as ubiabi } from "../../artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json";
7
+ import { BigNumber } from "ethers";
8
+ export const NULL_ADDRESS = "0x0000000000000000000000000000000000000000";
9
+
10
+ describe("FuseStakingV3", () => {
11
+ let staking: FuseStakingV3;
12
+ let founder, staker1, staker2;
13
+ let signers;
14
+
15
+ let uniswap: MockContract,
16
+ uniswapFactory,
17
+ uniswapPair,
18
+ gdusdcPair,
19
+ fusefusdPair,
20
+ ubiMock;
21
+
22
+ const deployMocks = async () => {
23
+ let u = await hre.artifacts.readArtifact("Uniswap");
24
+ let uf = await hre.artifacts.readArtifact("UniswapFactory");
25
+ let up = await hre.artifacts.readArtifact("UniswapPair");
26
+ uniswap = await deployMockContract(signers[0], u.abi);
27
+ uniswapFactory = await deployMockContract(signers[0], uf.abi);
28
+ uniswapPair = await deployMockContract(signers[0], up.abi);
29
+
30
+ gdusdcPair = await deployMockContract(signers[0], up.abi);
31
+ fusefusdPair = await deployMockContract(signers[0], up.abi);
32
+
33
+ ubiMock = await deployMockContract(signers[0], ubiabi);
34
+ await uniswap.mock.factory.returns(uniswapFactory.address);
35
+ await uniswap.mock.WETH.returns(signers[3].address);
36
+ await uniswapFactory.mock.getPair.returns(uniswapPair.address);
37
+ await uniswapFactory.mock.getPair
38
+ .withArgs(
39
+ ethers.constants.AddressZero,
40
+ "0x620fd5fa44BE6af63715Ef4E65DDFA0387aD13F5"
41
+ )
42
+ .returns(gdusdcPair.address);
43
+
44
+ await uniswapFactory.mock.getPair
45
+ .withArgs(
46
+ signers[3].address,
47
+ "0x249BE57637D8B013Ad64785404b24aeBaE9B098B"
48
+ )
49
+ .returns(fusefusdPair.address);
50
+
51
+ await uniswapPair.mock.getReserves.returns(
52
+ ethers.utils.parseEther("1000"),
53
+ "100000",
54
+ "0"
55
+ );
56
+ await gdusdcPair.mock.getReserves.returns("4984886100", "10789000000", "0");
57
+ await fusefusdPair.mock.getReserves.returns(
58
+ ethers.utils.parseEther("10000"),
59
+ ethers.utils.parseEther("2000"), //200$ fusd 18 decimals
60
+ "0"
61
+ );
62
+ };
63
+
64
+ before(async () => {
65
+ signers = await ethers.getSigners();
66
+ [founder, staker1, staker2] = signers.map(_ => _.address);
67
+ await deployMocks();
68
+
69
+ let network = networkConfig.name;
70
+ staking = (await (
71
+ await ethers.getContractFactory("FuseStakingV3")
72
+ ).deploy()) as FuseStakingV3;
73
+
74
+ await staking.initialize();
75
+ await staking.upgrade0();
76
+ await staking.upgrade1(NULL_ADDRESS, ubiMock.address, uniswap.address);
77
+ await staking.upgrade2();
78
+ });
79
+
80
+ it("should have owner", async () => {
81
+ expect(await staking.owner()).to.be.equal(founder);
82
+ });
83
+
84
+ it("should calc quantity with slippage", async () => {
85
+ const res = await staking[
86
+ "calcMaxTokenWithPriceImpact(uint256,uint256,uint256)"
87
+ ]("6917100025787759640000", "265724494", ethers.utils.parseEther("500"));
88
+
89
+ // const fuseQuantity = ethers.utils.formatEther(res);
90
+ expect(res.maxToken).to.gt(0);
91
+ expect(res.maxToken).to.equal(
92
+ BigNumber.from("6917100025787759640000").mul(3).div(100)
93
+ );
94
+ expect(res.tokenOut).to.equal(7717004);
95
+ });
96
+
97
+ it("should calc quantity with uniswap mock", async () => {
98
+ const res = await staking["calcMaxFuseWithPriceImpact(uint256)"](
99
+ ethers.utils.parseEther("500")
100
+ );
101
+
102
+ // const fuseQuantity = ethers.utils.formatEther(res);
103
+ expect(res.fuseAmount).to.gt(0);
104
+ expect(res.fuseAmount).to.equal(ethers.utils.parseEther("30"));
105
+
106
+ await uniswapPair.mock.getReserves.returns(
107
+ ethers.utils.parseEther("100"),
108
+ "500000",
109
+ "0"
110
+ );
111
+ const res2 = await staking["calcMaxFuseWithPriceImpact(uint256)"](
112
+ ethers.utils.parseEther("500")
113
+ );
114
+
115
+ expect(res2.fuseAmount).to.equal(ethers.utils.parseEther("3"));
116
+ });
117
+
118
+ it("should calculate gd/usdc quantity with 0 price impact ", async () => {
119
+ const res = await staking["calcMaxFuseUSDCWithPriceImpact(uint256)"](
120
+ ethers.utils.parseEther("10")
121
+ );
122
+ //exchanging 10 fuse which are equal 2$ USDC should have no significant price impact on usdc/gd swap so we should be able to swap the whole 10
123
+ expect(res.maxFuse).to.gt(0);
124
+ expect(res.maxFuse).to.equal(ethers.utils.parseEther("10"));
125
+ });
126
+
127
+ it("should detect gd/usdc price impact", async () => {
128
+ const res = await staking["calcMaxFuseUSDCWithPriceImpact(uint256)"](
129
+ ethers.utils.parseEther("10000")
130
+ );
131
+ expect(res.maxFuse).to.lt(ethers.utils.parseEther("10000"));
132
+ expect(res.maxFuse).to.equal(ethers.utils.parseEther("1618.35")); //on fuse swap it was around 335$ on above gd/usdc reserves that reaches 3% impact, that means 335*5=1675fuse
133
+ });
134
+
135
+ it("should match fuseswap and allow to exchange +-4600 fuse to G$", async () => {
136
+ //G$/usdc reserves 52,841,23400/10410000000
137
+ //fuse/fusd reserves 619085*1e18/42905*1e18
138
+
139
+ await gdusdcPair.mock.getReserves.returns("5284123400", "10410000000", "0");
140
+ await fusefusdPair.mock.getReserves.returns(
141
+ ethers.utils.parseEther("619085"),
142
+ ethers.utils.parseEther("42905"),
143
+ "0"
144
+ );
145
+
146
+ const res = await staking["calcMaxFuseUSDCWithPriceImpact(uint256)"](
147
+ ethers.utils.parseEther("10000")
148
+ );
149
+ expect(res.maxFuse).to.lt(ethers.utils.parseEther("5000"));
150
+ expect(res.maxFuse).to.gt(ethers.utils.parseEther("4500"));
151
+ });
152
+ });
@@ -0,0 +1,498 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+
5
+ import {
6
+ ethers,
7
+ EventFilter,
8
+ Signer,
9
+ BigNumber,
10
+ BigNumberish,
11
+ PopulatedTransaction,
12
+ BaseContract,
13
+ ContractTransaction,
14
+ Overrides,
15
+ CallOverrides,
16
+ } from "ethers";
17
+ import { BytesLike } from "@ethersproject/bytes";
18
+ import { Listener, Provider } from "@ethersproject/providers";
19
+ import { FunctionFragment, EventFragment, Result } from "@ethersproject/abi";
20
+ import type {
21
+ TypedEventFilter,
22
+ TypedEvent,
23
+ TypedListener,
24
+ OnEvent,
25
+ } from "./common";
26
+
27
+ export interface FuseFaucetInterface extends ethers.utils.Interface {
28
+ functions: {
29
+ "canTop(address)": FunctionFragment;
30
+ "currentDay()": FunctionFragment;
31
+ "gasPrice()": FunctionFragment;
32
+ "gasRefund()": FunctionFragment;
33
+ "goodDollar()": FunctionFragment;
34
+ "identity()": FunctionFragment;
35
+ "initialize(address)": FunctionFragment;
36
+ "maxDailyToppings()": FunctionFragment;
37
+ "maxPerWeekMultiplier()": FunctionFragment;
38
+ "maxSwapAmount()": FunctionFragment;
39
+ "notFirstTime(address)": FunctionFragment;
40
+ "onTokenTransfer(address,uint256,bytes)": FunctionFragment;
41
+ "perDayRoughLimit()": FunctionFragment;
42
+ "startTime()": FunctionFragment;
43
+ "topWallet(address)": FunctionFragment;
44
+ "toppingAmount()": FunctionFragment;
45
+ "toppings(uint256,address)": FunctionFragment;
46
+ "upgrade1()": FunctionFragment;
47
+ "wallets(address)": FunctionFragment;
48
+ };
49
+
50
+ encodeFunctionData(functionFragment: "canTop", values: [string]): string;
51
+ encodeFunctionData(
52
+ functionFragment: "currentDay",
53
+ values?: undefined
54
+ ): string;
55
+ encodeFunctionData(functionFragment: "gasPrice", values?: undefined): string;
56
+ encodeFunctionData(functionFragment: "gasRefund", values?: undefined): string;
57
+ encodeFunctionData(
58
+ functionFragment: "goodDollar",
59
+ values?: undefined
60
+ ): string;
61
+ encodeFunctionData(functionFragment: "identity", values?: undefined): string;
62
+ encodeFunctionData(functionFragment: "initialize", values: [string]): string;
63
+ encodeFunctionData(
64
+ functionFragment: "maxDailyToppings",
65
+ values?: undefined
66
+ ): string;
67
+ encodeFunctionData(
68
+ functionFragment: "maxPerWeekMultiplier",
69
+ values?: undefined
70
+ ): string;
71
+ encodeFunctionData(
72
+ functionFragment: "maxSwapAmount",
73
+ values?: undefined
74
+ ): string;
75
+ encodeFunctionData(
76
+ functionFragment: "notFirstTime",
77
+ values: [string]
78
+ ): string;
79
+ encodeFunctionData(
80
+ functionFragment: "onTokenTransfer",
81
+ values: [string, BigNumberish, BytesLike]
82
+ ): string;
83
+ encodeFunctionData(
84
+ functionFragment: "perDayRoughLimit",
85
+ values?: undefined
86
+ ): string;
87
+ encodeFunctionData(functionFragment: "startTime", values?: undefined): string;
88
+ encodeFunctionData(functionFragment: "topWallet", values: [string]): string;
89
+ encodeFunctionData(
90
+ functionFragment: "toppingAmount",
91
+ values?: undefined
92
+ ): string;
93
+ encodeFunctionData(
94
+ functionFragment: "toppings",
95
+ values: [BigNumberish, string]
96
+ ): string;
97
+ encodeFunctionData(functionFragment: "upgrade1", values?: undefined): string;
98
+ encodeFunctionData(functionFragment: "wallets", values: [string]): string;
99
+
100
+ decodeFunctionResult(functionFragment: "canTop", data: BytesLike): Result;
101
+ decodeFunctionResult(functionFragment: "currentDay", data: BytesLike): Result;
102
+ decodeFunctionResult(functionFragment: "gasPrice", data: BytesLike): Result;
103
+ decodeFunctionResult(functionFragment: "gasRefund", data: BytesLike): Result;
104
+ decodeFunctionResult(functionFragment: "goodDollar", data: BytesLike): Result;
105
+ decodeFunctionResult(functionFragment: "identity", data: BytesLike): Result;
106
+ decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
107
+ decodeFunctionResult(
108
+ functionFragment: "maxDailyToppings",
109
+ data: BytesLike
110
+ ): Result;
111
+ decodeFunctionResult(
112
+ functionFragment: "maxPerWeekMultiplier",
113
+ data: BytesLike
114
+ ): Result;
115
+ decodeFunctionResult(
116
+ functionFragment: "maxSwapAmount",
117
+ data: BytesLike
118
+ ): Result;
119
+ decodeFunctionResult(
120
+ functionFragment: "notFirstTime",
121
+ data: BytesLike
122
+ ): Result;
123
+ decodeFunctionResult(
124
+ functionFragment: "onTokenTransfer",
125
+ data: BytesLike
126
+ ): Result;
127
+ decodeFunctionResult(
128
+ functionFragment: "perDayRoughLimit",
129
+ data: BytesLike
130
+ ): Result;
131
+ decodeFunctionResult(functionFragment: "startTime", data: BytesLike): Result;
132
+ decodeFunctionResult(functionFragment: "topWallet", data: BytesLike): Result;
133
+ decodeFunctionResult(
134
+ functionFragment: "toppingAmount",
135
+ data: BytesLike
136
+ ): Result;
137
+ decodeFunctionResult(functionFragment: "toppings", data: BytesLike): Result;
138
+ decodeFunctionResult(functionFragment: "upgrade1", data: BytesLike): Result;
139
+ decodeFunctionResult(functionFragment: "wallets", data: BytesLike): Result;
140
+
141
+ events: {
142
+ "WalletTopped(address,uint256)": EventFragment;
143
+ };
144
+
145
+ getEvent(nameOrSignatureOrTopic: "WalletTopped"): EventFragment;
146
+ }
147
+
148
+ export type WalletToppedEvent = TypedEvent<
149
+ [string, BigNumber],
150
+ { user: string; amount: BigNumber }
151
+ >;
152
+
153
+ export type WalletToppedEventFilter = TypedEventFilter<WalletToppedEvent>;
154
+
155
+ export interface FuseFaucet extends BaseContract {
156
+ connect(signerOrProvider: Signer | Provider | string): this;
157
+ attach(addressOrName: string): this;
158
+ deployed(): Promise<this>;
159
+
160
+ interface: FuseFaucetInterface;
161
+
162
+ queryFilter<TEvent extends TypedEvent>(
163
+ event: TypedEventFilter<TEvent>,
164
+ fromBlockOrBlockhash?: string | number | undefined,
165
+ toBlock?: string | number | undefined
166
+ ): Promise<Array<TEvent>>;
167
+
168
+ listeners<TEvent extends TypedEvent>(
169
+ eventFilter?: TypedEventFilter<TEvent>
170
+ ): Array<TypedListener<TEvent>>;
171
+ listeners(eventName?: string): Array<Listener>;
172
+ removeAllListeners<TEvent extends TypedEvent>(
173
+ eventFilter: TypedEventFilter<TEvent>
174
+ ): this;
175
+ removeAllListeners(eventName?: string): this;
176
+ off: OnEvent<this>;
177
+ on: OnEvent<this>;
178
+ once: OnEvent<this>;
179
+ removeListener: OnEvent<this>;
180
+
181
+ functions: {
182
+ canTop(_user: string, overrides?: CallOverrides): Promise<[boolean]>;
183
+
184
+ currentDay(overrides?: CallOverrides): Promise<[BigNumber]>;
185
+
186
+ gasPrice(overrides?: CallOverrides): Promise<[number]>;
187
+
188
+ gasRefund(overrides?: CallOverrides): Promise<[BigNumber]>;
189
+
190
+ goodDollar(overrides?: CallOverrides): Promise<[string]>;
191
+
192
+ identity(overrides?: CallOverrides): Promise<[string]>;
193
+
194
+ initialize(
195
+ _identity: string,
196
+ overrides?: Overrides & { from?: string | Promise<string> }
197
+ ): Promise<ContractTransaction>;
198
+
199
+ maxDailyToppings(overrides?: CallOverrides): Promise<[number]>;
200
+
201
+ maxPerWeekMultiplier(overrides?: CallOverrides): Promise<[number]>;
202
+
203
+ maxSwapAmount(overrides?: CallOverrides): Promise<[number]>;
204
+
205
+ notFirstTime(arg0: string, overrides?: CallOverrides): Promise<[boolean]>;
206
+
207
+ onTokenTransfer(
208
+ _from: string,
209
+ amount: BigNumberish,
210
+ arg2: BytesLike,
211
+ overrides?: Overrides & { from?: string | Promise<string> }
212
+ ): Promise<ContractTransaction>;
213
+
214
+ perDayRoughLimit(overrides?: CallOverrides): Promise<[BigNumber]>;
215
+
216
+ startTime(overrides?: CallOverrides): Promise<[BigNumber]>;
217
+
218
+ topWallet(
219
+ _user: string,
220
+ overrides?: Overrides & { from?: string | Promise<string> }
221
+ ): Promise<ContractTransaction>;
222
+
223
+ toppingAmount(overrides?: CallOverrides): Promise<[BigNumber]>;
224
+
225
+ toppings(
226
+ arg0: BigNumberish,
227
+ arg1: string,
228
+ overrides?: CallOverrides
229
+ ): Promise<[BigNumber]>;
230
+
231
+ upgrade1(
232
+ overrides?: Overrides & { from?: string | Promise<string> }
233
+ ): Promise<ContractTransaction>;
234
+
235
+ wallets(
236
+ arg0: string,
237
+ overrides?: CallOverrides
238
+ ): Promise<
239
+ [BigNumber, number] & {
240
+ lastDayTopped: BigNumber;
241
+ dailyToppingCount: number;
242
+ }
243
+ >;
244
+ };
245
+
246
+ canTop(_user: string, overrides?: CallOverrides): Promise<boolean>;
247
+
248
+ currentDay(overrides?: CallOverrides): Promise<BigNumber>;
249
+
250
+ gasPrice(overrides?: CallOverrides): Promise<number>;
251
+
252
+ gasRefund(overrides?: CallOverrides): Promise<BigNumber>;
253
+
254
+ goodDollar(overrides?: CallOverrides): Promise<string>;
255
+
256
+ identity(overrides?: CallOverrides): Promise<string>;
257
+
258
+ initialize(
259
+ _identity: string,
260
+ overrides?: Overrides & { from?: string | Promise<string> }
261
+ ): Promise<ContractTransaction>;
262
+
263
+ maxDailyToppings(overrides?: CallOverrides): Promise<number>;
264
+
265
+ maxPerWeekMultiplier(overrides?: CallOverrides): Promise<number>;
266
+
267
+ maxSwapAmount(overrides?: CallOverrides): Promise<number>;
268
+
269
+ notFirstTime(arg0: string, overrides?: CallOverrides): Promise<boolean>;
270
+
271
+ onTokenTransfer(
272
+ _from: string,
273
+ amount: BigNumberish,
274
+ arg2: BytesLike,
275
+ overrides?: Overrides & { from?: string | Promise<string> }
276
+ ): Promise<ContractTransaction>;
277
+
278
+ perDayRoughLimit(overrides?: CallOverrides): Promise<BigNumber>;
279
+
280
+ startTime(overrides?: CallOverrides): Promise<BigNumber>;
281
+
282
+ topWallet(
283
+ _user: string,
284
+ overrides?: Overrides & { from?: string | Promise<string> }
285
+ ): Promise<ContractTransaction>;
286
+
287
+ toppingAmount(overrides?: CallOverrides): Promise<BigNumber>;
288
+
289
+ toppings(
290
+ arg0: BigNumberish,
291
+ arg1: string,
292
+ overrides?: CallOverrides
293
+ ): Promise<BigNumber>;
294
+
295
+ upgrade1(
296
+ overrides?: Overrides & { from?: string | Promise<string> }
297
+ ): Promise<ContractTransaction>;
298
+
299
+ wallets(
300
+ arg0: string,
301
+ overrides?: CallOverrides
302
+ ): Promise<
303
+ [BigNumber, number] & {
304
+ lastDayTopped: BigNumber;
305
+ dailyToppingCount: number;
306
+ }
307
+ >;
308
+
309
+ callStatic: {
310
+ canTop(_user: string, overrides?: CallOverrides): Promise<boolean>;
311
+
312
+ currentDay(overrides?: CallOverrides): Promise<BigNumber>;
313
+
314
+ gasPrice(overrides?: CallOverrides): Promise<number>;
315
+
316
+ gasRefund(overrides?: CallOverrides): Promise<BigNumber>;
317
+
318
+ goodDollar(overrides?: CallOverrides): Promise<string>;
319
+
320
+ identity(overrides?: CallOverrides): Promise<string>;
321
+
322
+ initialize(_identity: string, overrides?: CallOverrides): Promise<void>;
323
+
324
+ maxDailyToppings(overrides?: CallOverrides): Promise<number>;
325
+
326
+ maxPerWeekMultiplier(overrides?: CallOverrides): Promise<number>;
327
+
328
+ maxSwapAmount(overrides?: CallOverrides): Promise<number>;
329
+
330
+ notFirstTime(arg0: string, overrides?: CallOverrides): Promise<boolean>;
331
+
332
+ onTokenTransfer(
333
+ _from: string,
334
+ amount: BigNumberish,
335
+ arg2: BytesLike,
336
+ overrides?: CallOverrides
337
+ ): Promise<boolean>;
338
+
339
+ perDayRoughLimit(overrides?: CallOverrides): Promise<BigNumber>;
340
+
341
+ startTime(overrides?: CallOverrides): Promise<BigNumber>;
342
+
343
+ topWallet(_user: string, overrides?: CallOverrides): Promise<void>;
344
+
345
+ toppingAmount(overrides?: CallOverrides): Promise<BigNumber>;
346
+
347
+ toppings(
348
+ arg0: BigNumberish,
349
+ arg1: string,
350
+ overrides?: CallOverrides
351
+ ): Promise<BigNumber>;
352
+
353
+ upgrade1(overrides?: CallOverrides): Promise<void>;
354
+
355
+ wallets(
356
+ arg0: string,
357
+ overrides?: CallOverrides
358
+ ): Promise<
359
+ [BigNumber, number] & {
360
+ lastDayTopped: BigNumber;
361
+ dailyToppingCount: number;
362
+ }
363
+ >;
364
+ };
365
+
366
+ filters: {
367
+ "WalletTopped(address,uint256)"(
368
+ user?: string | null,
369
+ amount?: null
370
+ ): WalletToppedEventFilter;
371
+ WalletTopped(user?: string | null, amount?: null): WalletToppedEventFilter;
372
+ };
373
+
374
+ estimateGas: {
375
+ canTop(_user: string, overrides?: CallOverrides): Promise<BigNumber>;
376
+
377
+ currentDay(overrides?: CallOverrides): Promise<BigNumber>;
378
+
379
+ gasPrice(overrides?: CallOverrides): Promise<BigNumber>;
380
+
381
+ gasRefund(overrides?: CallOverrides): Promise<BigNumber>;
382
+
383
+ goodDollar(overrides?: CallOverrides): Promise<BigNumber>;
384
+
385
+ identity(overrides?: CallOverrides): Promise<BigNumber>;
386
+
387
+ initialize(
388
+ _identity: string,
389
+ overrides?: Overrides & { from?: string | Promise<string> }
390
+ ): Promise<BigNumber>;
391
+
392
+ maxDailyToppings(overrides?: CallOverrides): Promise<BigNumber>;
393
+
394
+ maxPerWeekMultiplier(overrides?: CallOverrides): Promise<BigNumber>;
395
+
396
+ maxSwapAmount(overrides?: CallOverrides): Promise<BigNumber>;
397
+
398
+ notFirstTime(arg0: string, overrides?: CallOverrides): Promise<BigNumber>;
399
+
400
+ onTokenTransfer(
401
+ _from: string,
402
+ amount: BigNumberish,
403
+ arg2: BytesLike,
404
+ overrides?: Overrides & { from?: string | Promise<string> }
405
+ ): Promise<BigNumber>;
406
+
407
+ perDayRoughLimit(overrides?: CallOverrides): Promise<BigNumber>;
408
+
409
+ startTime(overrides?: CallOverrides): Promise<BigNumber>;
410
+
411
+ topWallet(
412
+ _user: string,
413
+ overrides?: Overrides & { from?: string | Promise<string> }
414
+ ): Promise<BigNumber>;
415
+
416
+ toppingAmount(overrides?: CallOverrides): Promise<BigNumber>;
417
+
418
+ toppings(
419
+ arg0: BigNumberish,
420
+ arg1: string,
421
+ overrides?: CallOverrides
422
+ ): Promise<BigNumber>;
423
+
424
+ upgrade1(
425
+ overrides?: Overrides & { from?: string | Promise<string> }
426
+ ): Promise<BigNumber>;
427
+
428
+ wallets(arg0: string, overrides?: CallOverrides): Promise<BigNumber>;
429
+ };
430
+
431
+ populateTransaction: {
432
+ canTop(
433
+ _user: string,
434
+ overrides?: CallOverrides
435
+ ): Promise<PopulatedTransaction>;
436
+
437
+ currentDay(overrides?: CallOverrides): Promise<PopulatedTransaction>;
438
+
439
+ gasPrice(overrides?: CallOverrides): Promise<PopulatedTransaction>;
440
+
441
+ gasRefund(overrides?: CallOverrides): Promise<PopulatedTransaction>;
442
+
443
+ goodDollar(overrides?: CallOverrides): Promise<PopulatedTransaction>;
444
+
445
+ identity(overrides?: CallOverrides): Promise<PopulatedTransaction>;
446
+
447
+ initialize(
448
+ _identity: string,
449
+ overrides?: Overrides & { from?: string | Promise<string> }
450
+ ): Promise<PopulatedTransaction>;
451
+
452
+ maxDailyToppings(overrides?: CallOverrides): Promise<PopulatedTransaction>;
453
+
454
+ maxPerWeekMultiplier(
455
+ overrides?: CallOverrides
456
+ ): Promise<PopulatedTransaction>;
457
+
458
+ maxSwapAmount(overrides?: CallOverrides): Promise<PopulatedTransaction>;
459
+
460
+ notFirstTime(
461
+ arg0: string,
462
+ overrides?: CallOverrides
463
+ ): Promise<PopulatedTransaction>;
464
+
465
+ onTokenTransfer(
466
+ _from: string,
467
+ amount: BigNumberish,
468
+ arg2: BytesLike,
469
+ overrides?: Overrides & { from?: string | Promise<string> }
470
+ ): Promise<PopulatedTransaction>;
471
+
472
+ perDayRoughLimit(overrides?: CallOverrides): Promise<PopulatedTransaction>;
473
+
474
+ startTime(overrides?: CallOverrides): Promise<PopulatedTransaction>;
475
+
476
+ topWallet(
477
+ _user: string,
478
+ overrides?: Overrides & { from?: string | Promise<string> }
479
+ ): Promise<PopulatedTransaction>;
480
+
481
+ toppingAmount(overrides?: CallOverrides): Promise<PopulatedTransaction>;
482
+
483
+ toppings(
484
+ arg0: BigNumberish,
485
+ arg1: string,
486
+ overrides?: CallOverrides
487
+ ): Promise<PopulatedTransaction>;
488
+
489
+ upgrade1(
490
+ overrides?: Overrides & { from?: string | Promise<string> }
491
+ ): Promise<PopulatedTransaction>;
492
+
493
+ wallets(
494
+ arg0: string,
495
+ overrides?: CallOverrides
496
+ ): Promise<PopulatedTransaction>;
497
+ };
498
+ }