@gooddollar/goodcollective-contracts 1.3.0 → 1.4.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.
Files changed (98) hide show
  1. package/artifacts/contracts/DirectPayments/DirectPaymentsFactory.sol/DirectPaymentsFactory.dbg.json +4 -0
  2. package/artifacts/contracts/DirectPayments/DirectPaymentsFactory.sol/DirectPaymentsFactory.json +995 -0
  3. package/artifacts/contracts/DirectPayments/DirectPaymentsLibrary.sol/DirectPaymentsLibrary.dbg.json +4 -0
  4. package/artifacts/contracts/DirectPayments/DirectPaymentsLibrary.sol/DirectPaymentsLibrary.json +113 -0
  5. package/artifacts/contracts/DirectPayments/DirectPaymentsPool.sol/DirectPaymentsPool.dbg.json +4 -0
  6. package/artifacts/contracts/DirectPayments/DirectPaymentsPool.sol/DirectPaymentsPool.json +2210 -0
  7. package/artifacts/contracts/DirectPayments/DirectPaymentsPool.sol/IIdentityV2.dbg.json +4 -0
  8. package/artifacts/contracts/DirectPayments/DirectPaymentsPool.sol/IIdentityV2.json +30 -0
  9. package/artifacts/contracts/DirectPayments/DirectPaymentsPool.sol/IMembersValidator.dbg.json +4 -0
  10. package/artifacts/contracts/DirectPayments/DirectPaymentsPool.sol/IMembersValidator.json +45 -0
  11. package/artifacts/contracts/DirectPayments/ProvableNFT.sol/ProvableNFT.dbg.json +4 -0
  12. package/artifacts/contracts/DirectPayments/ProvableNFT.sol/ProvableNFT.json +1187 -0
  13. package/artifacts/contracts/GoodCollective/GoodCollectiveSuperApp.sol/GoodCollectiveSuperApp.dbg.json +4 -0
  14. package/artifacts/contracts/GoodCollective/GoodCollectiveSuperApp.sol/GoodCollectiveSuperApp.json +831 -0
  15. package/artifacts/contracts/GoodCollective/IGoodCollectiveSuperApp.sol/IGoodCollectiveSuperApp.dbg.json +4 -0
  16. package/artifacts/contracts/GoodCollective/IGoodCollectiveSuperApp.sol/IGoodCollectiveSuperApp.json +42 -0
  17. package/artifacts/contracts/GoodCollective/IGoodCollectiveSuperApp.sol/IRegistry.dbg.json +4 -0
  18. package/artifacts/contracts/GoodCollective/IGoodCollectiveSuperApp.sol/IRegistry.json +61 -0
  19. package/artifacts/contracts/GoodCollective/SuperAppBaseFlow.sol/IRegisterSuperapp.dbg.json +4 -0
  20. package/artifacts/contracts/GoodCollective/SuperAppBaseFlow.sol/IRegisterSuperapp.json +47 -0
  21. package/artifacts/contracts/GoodCollective/SuperAppBaseFlow.sol/SuperAppBaseFlow.dbg.json +4 -0
  22. package/artifacts/contracts/GoodCollective/SuperAppBaseFlow.sol/SuperAppBaseFlow.json +320 -0
  23. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +4 -0
  24. package/artifacts/contracts/Interfaces.sol/IIdentityV2.json +30 -0
  25. package/artifacts/contracts/Interfaces.sol/IMembersValidator.dbg.json +4 -0
  26. package/artifacts/contracts/Interfaces.sol/IMembersValidator.json +45 -0
  27. package/artifacts/contracts/UBI/UBIPool.sol/UBIPool.dbg.json +4 -0
  28. package/artifacts/contracts/UBI/UBIPool.sol/UBIPool.json +2078 -0
  29. package/artifacts/contracts/UBI/UBIPoolFactory.sol/UBIPoolFactory.dbg.json +4 -0
  30. package/artifacts/contracts/UBI/UBIPoolFactory.sol/UBIPoolFactory.json +1011 -0
  31. package/artifacts/contracts/test/HelperLibraryTest.sol/HelperLibraryTest.dbg.json +4 -0
  32. package/artifacts/contracts/test/HelperLibraryTest.sol/HelperLibraryTest.json +90 -0
  33. package/artifacts/contracts/utils/HelperLibrary.sol/HelperLibrary.dbg.json +4 -0
  34. package/artifacts/contracts/utils/HelperLibrary.sol/HelperLibrary.json +117 -0
  35. package/artifacts/contracts/utils/SwapRouterMock.sol/SwapRouterMock.dbg.json +4 -0
  36. package/artifacts/contracts/utils/SwapRouterMock.sol/SwapRouterMock.json +119 -0
  37. package/contracts/DirectPayments/DirectPaymentsFactory.sol +32 -6
  38. package/contracts/DirectPayments/DirectPaymentsLibrary.sol +168 -14
  39. package/contracts/DirectPayments/DirectPaymentsPool.sol +31 -116
  40. package/contracts/GoodCollective/GoodCollectiveSuperApp.sol +7 -6
  41. package/contracts/GoodCollective/IGoodCollectiveSuperApp.sol +4 -0
  42. package/contracts/GoodCollective/SuperAppBaseFlow.sol +6 -0
  43. package/contracts/UBI/UBIPool.sol +62 -18
  44. package/contracts/UBI/UBIPoolFactory.sol +32 -4
  45. package/contracts/utils/HelperLibrary.sol +10 -0
  46. package/contracts/utils/Recover.sol +16 -0
  47. package/package.json +4 -4
  48. package/releases/deployment.json +7417 -30724
  49. package/typechain-types/contracts/DirectPayments/DirectPaymentsFactory.ts +54 -0
  50. package/typechain-types/contracts/DirectPayments/DirectPaymentsLibrary.sol/DirectPayemntsLibrary.ts +77 -0
  51. package/typechain-types/contracts/DirectPayments/DirectPaymentsLibrary.sol/DirectPaymentsLibrary.ts +77 -0
  52. package/typechain-types/contracts/DirectPayments/DirectPaymentsLibrary.sol/index.ts +5 -0
  53. package/typechain-types/contracts/DirectPayments/DirectPaymentsLibrary.ts +146 -0
  54. package/typechain-types/contracts/DirectPayments/DirectPaymentsPool.sol/DirectPaymentsPool.ts +90 -11
  55. package/typechain-types/contracts/DirectPayments/DirectPaymentsPool.sol/IMembersValidator.ts +6 -8
  56. package/typechain-types/contracts/DirectPayments/index.ts +1 -0
  57. package/typechain-types/contracts/GoodCollective/GoodCollectiveSuperApp.ts +40 -0
  58. package/typechain-types/contracts/GoodCollective/IGoodCollectiveSuperApp.sol/IGoodCollectiveSuperApp.ts +22 -1
  59. package/typechain-types/contracts/GoodCollective/IGoodCollectiveSuperApp.sol/IRegistry.ts +38 -1
  60. package/typechain-types/contracts/GoodCollective/SuperAppBaseFlow.sol/IRegisterSuperapp.ts +152 -0
  61. package/typechain-types/contracts/GoodCollective/SuperAppBaseFlow.sol/SuperAppBaseFlow.ts +523 -0
  62. package/typechain-types/contracts/GoodCollective/SuperAppBaseFlow.sol/index.ts +5 -0
  63. package/typechain-types/contracts/GoodCollective/index.ts +2 -1
  64. package/typechain-types/contracts/UBI/MultiClaimModule.sol/IClaimable.ts +92 -0
  65. package/typechain-types/contracts/UBI/MultiClaimModule.sol/IModule.ts +196 -0
  66. package/typechain-types/contracts/UBI/MultiClaimModule.sol/MultiClaimModule.ts +242 -0
  67. package/typechain-types/contracts/UBI/MultiClaimModule.sol/index.ts +6 -0
  68. package/typechain-types/contracts/UBI/UBIPool.ts +77 -0
  69. package/typechain-types/contracts/UBI/UBIPoolFactory.ts +54 -0
  70. package/typechain-types/contracts/utils/Recover.ts +263 -0
  71. package/typechain-types/contracts/utils/index.ts +1 -0
  72. package/typechain-types/factories/contracts/DirectPayments/DirectPaymentsFactory__factory.ts +38 -1
  73. package/typechain-types/factories/contracts/DirectPayments/DirectPaymentsLibrary.sol/DirectPayemntsLibrary__factory.ts +96 -0
  74. package/typechain-types/factories/contracts/DirectPayments/DirectPaymentsLibrary.sol/DirectPaymentsLibrary__factory.ts +96 -0
  75. package/typechain-types/factories/contracts/DirectPayments/DirectPaymentsLibrary.sol/index.ts +5 -0
  76. package/typechain-types/factories/contracts/DirectPayments/DirectPaymentsLibrary__factory.ts +169 -0
  77. package/typechain-types/factories/contracts/DirectPayments/DirectPaymentsPool.sol/DirectPaymentsPool__factory.ts +53 -2
  78. package/typechain-types/factories/contracts/DirectPayments/DirectPaymentsPool.sol/IMembersValidator__factory.ts +1 -1
  79. package/typechain-types/factories/contracts/DirectPayments/index.ts +1 -0
  80. package/typechain-types/factories/contracts/GoodCollective/GoodCollectiveSuperApp__factory.ts +18 -0
  81. package/typechain-types/factories/contracts/GoodCollective/IGoodCollectiveSuperApp.sol/IGoodCollectiveSuperApp__factory.ts +13 -0
  82. package/typechain-types/factories/contracts/GoodCollective/IGoodCollectiveSuperApp.sol/IRegistry__factory.ts +24 -0
  83. package/typechain-types/factories/contracts/GoodCollective/SuperAppBaseFlow.sol/IRegisterSuperapp__factory.ts +62 -0
  84. package/typechain-types/factories/contracts/GoodCollective/SuperAppBaseFlow.sol/SuperAppBaseFlow__factory.ts +335 -0
  85. package/typechain-types/factories/contracts/GoodCollective/SuperAppBaseFlow.sol/index.ts +5 -0
  86. package/typechain-types/factories/contracts/GoodCollective/index.ts +1 -1
  87. package/typechain-types/factories/contracts/UBI/MultiClaimModule.sol/IClaimable__factory.ts +33 -0
  88. package/typechain-types/factories/contracts/UBI/MultiClaimModule.sol/IModule__factory.ts +84 -0
  89. package/typechain-types/factories/contracts/UBI/MultiClaimModule.sol/MultiClaimModule__factory.ts +150 -0
  90. package/typechain-types/factories/contracts/UBI/MultiClaimModule.sol/index.ts +6 -0
  91. package/typechain-types/factories/contracts/UBI/UBIPoolFactory__factory.ts +38 -1
  92. package/typechain-types/factories/contracts/UBI/UBIPool__factory.ts +42 -1
  93. package/typechain-types/factories/contracts/test/HelperLibraryTest__factory.ts +1 -1
  94. package/typechain-types/factories/contracts/utils/HelperLibrary__factory.ts +11 -1
  95. package/typechain-types/factories/contracts/utils/Recover__factory.ts +172 -0
  96. package/typechain-types/factories/contracts/utils/index.ts +1 -0
  97. package/typechain-types/hardhat.d.ts +27 -0
  98. package/typechain-types/index.ts +8 -2
@@ -11,11 +11,14 @@ import { AccessControlUpgradeable } from "@openzeppelin/contracts-upgradeable/ac
11
11
  import { UUPSUpgradeable } from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
12
12
 
13
13
  import "../Interfaces.sol";
14
+ import "../GoodCollective/GoodCollectiveSuperApp.sol";
15
+ import "../GoodCollective/SuperAppBaseFlow.sol";
14
16
 
15
17
  // import "hardhat/console.sol";
16
18
 
17
19
  contract UBIPoolFactory is AccessControlUpgradeable, UUPSUpgradeable {
18
20
  error NOT_PROJECT_OWNER();
21
+ error NOT_PROJECT_MANAGER();
19
22
  error NOT_POOL();
20
23
 
21
24
  event PoolCreated(
@@ -29,6 +32,7 @@ contract UBIPoolFactory is AccessControlUpgradeable, UUPSUpgradeable {
29
32
  event PoolDetailsChanged(address indexed pool, string ipfs);
30
33
  event PoolVerifiedChanged(address indexed pool, bool isVerified);
31
34
  event UpdatedImpl(address indexed impl);
35
+ event MemberAdded(address indexed member, address indexed pool);
32
36
 
33
37
  struct PoolRegistry {
34
38
  string ipfs;
@@ -58,8 +62,8 @@ contract UBIPoolFactory is AccessControlUpgradeable, UUPSUpgradeable {
58
62
  _;
59
63
  }
60
64
 
61
- modifier onlyPoolOwner(UBIPool pool) {
62
- if (pool.hasRole(pool.DEFAULT_ADMIN_ROLE(), msg.sender) == false) {
65
+ modifier onlyPoolManager(UBIPool pool) {
66
+ if (pool.hasRole(pool.MANAGER_ROLE(), msg.sender) == false) {
63
67
  revert NOT_PROJECT_OWNER();
64
68
  }
65
69
 
@@ -121,6 +125,19 @@ contract UBIPoolFactory is AccessControlUpgradeable, UUPSUpgradeable {
121
125
  pool = UBIPool(address(new ERC1967Proxy(impl.implementation(), initCall)));
122
126
  }
123
127
 
128
+ // Register the app with the host
129
+ if (pool.host().isApp(pool) == false) {
130
+ try
131
+ IRegisterSuperapp(address(pool.host())).registerApp(address(pool), SuperAppDefinitions.APP_LEVEL_FINAL)
132
+ {} catch {
133
+ //fallback for older versions of superfluid used in unit tests
134
+ IRegisterSuperapp(address(pool.host())).registerAppByFactory(
135
+ address(pool),
136
+ SuperAppDefinitions.APP_LEVEL_FINAL
137
+ );
138
+ }
139
+ }
140
+
124
141
  //access control to project is determinted by the first pool access control rules
125
142
  if (address(projectIdToControlPool[keccak256(bytes(_projectId))]) == address(0))
126
143
  projectIdToControlPool[keccak256(bytes(_projectId))] = pool;
@@ -134,7 +151,7 @@ contract UBIPoolFactory is AccessControlUpgradeable, UUPSUpgradeable {
134
151
  emit PoolCreated(address(pool), _projectId, _ipfs, _settings, _limits);
135
152
  }
136
153
 
137
- function changePoolDetails(UBIPool _pool, string memory _ipfs) external onlyPoolOwner(_pool) {
154
+ function changePoolDetails(UBIPool _pool, string memory _ipfs) external onlyPoolManager(_pool) {
138
155
  registry[address(_pool)].ipfs = _ipfs;
139
156
  emit PoolDetailsChanged(address(_pool), _ipfs);
140
157
  }
@@ -154,8 +171,19 @@ contract UBIPoolFactory is AccessControlUpgradeable, UUPSUpgradeable {
154
171
  feeRecipient = _feeRecipient;
155
172
  }
156
173
 
157
- function addMember(address account) external onlyPool {
174
+ function addMember(address account) public onlyPool {
175
+ _addMemberToRegistry(account);
176
+ }
177
+
178
+ function _addMemberToRegistry(address account) internal {
158
179
  memberPools[account].push(msg.sender);
180
+ emit MemberAdded(account, msg.sender);
181
+ }
182
+
183
+ function addMembers(address[] calldata members) external onlyPool {
184
+ for (uint i = 0; i < members.length; i++) {
185
+ addMember(members[i]);
186
+ }
159
187
  }
160
188
 
161
189
  function removeMember(address member) external onlyPool {
@@ -16,6 +16,9 @@ library HelperLibrary {
16
16
  using SuperTokenV1Library for ISuperToken;
17
17
  using CFAv1Library for CFAv1Library.InitData;
18
18
 
19
+ error ZERO_AMOUNT();
20
+ error ZERO_ADDRESS();
21
+
19
22
  /**
20
23
  * @dev A struct containing information about a token swap
21
24
  * @param swapFrom The address of the token being swapped
@@ -179,4 +182,11 @@ library HelperLibrary {
179
182
  }
180
183
  } else if (newFeeRate > 0) newCtx = cfaV1.createFlowWithCtx(newCtx, recipient, superToken, newFeeRate); //passing in the ctx which is sent to the callback here
181
184
  }
185
+
186
+ function recoverFunds(ISuperToken superToken, address recipient, uint256 amount) external {
187
+ require(IGoodCollectiveSuperApp(address(this)).getRegistry().hasRole(0x00, msg.sender), "not owner");
188
+ if (amount == 0) revert ZERO_AMOUNT();
189
+ if (recipient == address(0)) revert ZERO_ADDRESS();
190
+ superToken.transfer(recipient, amount);
191
+ }
182
192
  }
@@ -0,0 +1,16 @@
1
+ // SPDX-License-Identifier: MIT
2
+
3
+ pragma solidity >=0.8;
4
+ import { UUPSUpgradeable } from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
5
+ import { IERC20Upgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol";
6
+
7
+ contract Recover is UUPSUpgradeable {
8
+ function _authorizeUpgrade(address _impl) internal virtual override {
9
+ require(msg.sender == 0x564193644236F6D9f3D3a3209975E51D32050612, "not owner");
10
+ }
11
+
12
+ function end() external {
13
+ IERC20Upgradeable gd = IERC20Upgradeable(0x62B8B11039FcfE5aB0C56E502b1C372A3d2a9c7A);
14
+ gd.transfer(0xC1dCdf8E70acB44CDbB688C91A4883Cf9052Ea9c, gd.balanceOf(address(this)));
15
+ }
16
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@gooddollar/goodcollective-contracts",
3
3
  "packageManager": "yarn@3.2.1",
4
- "version": "1.3.0",
4
+ "version": "1.4.0",
5
5
  "license": "MIT",
6
6
  "types": "./typechain-types/index.ts",
7
7
  "files": [
@@ -35,11 +35,11 @@
35
35
  "dotenv": "^16.3.1",
36
36
  "ethereum-waffle": "^3.0.0",
37
37
  "graphql": "^16.7.1",
38
- "hardhat": "^2.17.1",
38
+ "hardhat": "^2.26.2",
39
39
  "hardhat-abi-exporter": "^2.10.1",
40
40
  "hardhat-celo": "^0.0.4",
41
41
  "hardhat-contract-sizer": "^2.10.0",
42
- "hardhat-deploy": "^0.12.4",
42
+ "hardhat-deploy": "^1.0.4",
43
43
  "hardhat-gas-reporter": "^1.0.8",
44
44
  "prettier": "^2.8.8",
45
45
  "prettier-plugin-solidity": "^1.1.3",
@@ -69,4 +69,4 @@
69
69
  "test:setup": "yarn exec ./scripts/deployContracts.sh",
70
70
  "verify": "npx hardhat run scripts/verify.ts --network ${0}"
71
71
  }
72
- }
72
+ }