lens-modules 3.0.0 → 3.1.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 (213) hide show
  1. package/LICENSE +0 -2
  2. package/README.md +35 -132
  3. package/dist/abis.cjs +1 -0
  4. package/dist/abis.d.cts +38902 -0
  5. package/dist/abis.d.ts +38902 -0
  6. package/dist/abis.js +1 -0
  7. package/dist/deployments.cjs +1 -0
  8. package/dist/deployments.d.cts +760 -0
  9. package/dist/deployments.d.ts +760 -0
  10. package/dist/deployments.js +1 -0
  11. package/dist/index.cjs +1 -0
  12. package/dist/index.d.cts +2 -0
  13. package/dist/index.d.ts +2 -1
  14. package/dist/index.js +1 -17
  15. package/package.json +41 -9
  16. package/abis/AccessControlFactory.abi.json +0 -56
  17. package/abis/AccessControlLib.abi.json +0 -1
  18. package/abis/AccessControlled.abi.json +0 -71
  19. package/abis/Account.abi.json +0 -1077
  20. package/abis/AccountBlockingRule.abi.json +0 -918
  21. package/abis/AccountFactory.abi.json +0 -211
  22. package/abis/ActionHub.abi.json +0 -1064
  23. package/abis/AdditionRemovalPidGroupRule.abi.json +0 -428
  24. package/abis/Address.abi.json +0 -1
  25. package/abis/AddressUpgradeable.abi.json +0 -1
  26. package/abis/App.abi.json +0 -1052
  27. package/abis/AppCore.abi.json +0 -1
  28. package/abis/AppFactory.abi.json +0 -153
  29. package/abis/BanMemberGroupRule.abi.json +0 -727
  30. package/abis/Base64.abi.json +0 -1
  31. package/abis/BaseAccountAction.abi.json +0 -150
  32. package/abis/BaseAction.abi.json +0 -1
  33. package/abis/BasePostAction.abi.json +0 -165
  34. package/abis/BaseSource.abi.json +0 -116
  35. package/abis/Beacon.abi.json +0 -303
  36. package/abis/BeaconProxy.abi.json +0 -219
  37. package/abis/CallLib.abi.json +0 -1
  38. package/abis/CommonBase.abi.json +0 -1
  39. package/abis/ConfigurePrimitiveRules.abi.json +0 -29
  40. package/abis/DeployAndSetAccessControls.abi.json +0 -29
  41. package/abis/EIP712EncodingLib.abi.json +0 -1
  42. package/abis/ERC1155Holder.abi.json +0 -99
  43. package/abis/ERC1155Receiver.abi.json +0 -99
  44. package/abis/ERC165.abi.json +0 -21
  45. package/abis/ERC1967Proxy.abi.json +0 -71
  46. package/abis/ERC1967Upgrade.abi.json +0 -47
  47. package/abis/ERC721Holder.abi.json +0 -36
  48. package/abis/EmptyImplementation.abi.json +0 -1
  49. package/abis/EntityExtraDataBased.abi.json +0 -39
  50. package/abis/Errors.abi.json +0 -212
  51. package/abis/EventEmitter.abi.json +0 -132
  52. package/abis/EventEmitterEarly.abi.json +0 -132
  53. package/abis/Events.abi.json +0 -40
  54. package/abis/ExtraDataBased.abi.json +0 -39
  55. package/abis/ExtraStorageBased.abi.json +0 -39
  56. package/abis/Feed.abi.json +0 -2380
  57. package/abis/FeedCore.abi.json +0 -1
  58. package/abis/FeedFactory.abi.json +0 -161
  59. package/abis/FollowersOnlyPostRule.abi.json +0 -448
  60. package/abis/Graph.abi.json +0 -1556
  61. package/abis/GraphCore.abi.json +0 -1
  62. package/abis/GraphFactory.abi.json +0 -161
  63. package/abis/Group.abi.json +0 -1526
  64. package/abis/GroupCore.abi.json +0 -1
  65. package/abis/GroupFactory.abi.json +0 -166
  66. package/abis/GroupGatedFeedRule.abi.json +0 -583
  67. package/abis/GroupGatedGraphRule.abi.json +0 -424
  68. package/abis/IAccessControl.abi.json +0 -68
  69. package/abis/IAccessControlled.abi.json +0 -15
  70. package/abis/IAccount.abi.json +0 -753
  71. package/abis/IAccountAction.abi.json +0 -130
  72. package/abis/IAccountGroupAdditionSettings.abi.json +0 -43
  73. package/abis/IApp.abi.json +0 -768
  74. package/abis/IBeacon.abi.json +0 -15
  75. package/abis/IERC1155.abi.json +0 -295
  76. package/abis/IERC1155Receiver.abi.json +0 -99
  77. package/abis/IERC165.abi.json +0 -21
  78. package/abis/IERC1822Proxiable.abi.json +0 -15
  79. package/abis/IERC1967.abi.json +0 -47
  80. package/abis/IERC20.abi.json +0 -224
  81. package/abis/IERC20Permit.abi.json +0 -77
  82. package/abis/IERC4906Events.abi.json +0 -34
  83. package/abis/IERC721.abi.json +0 -287
  84. package/abis/IERC721Enumerable.abi.json +0 -343
  85. package/abis/IERC721Metadata.abi.json +0 -332
  86. package/abis/IERC721Namespace.abi.json +0 -1778
  87. package/abis/IERC721Receiver.abi.json +0 -36
  88. package/abis/IERC721ReceiverUpgradeable.abi.json +0 -36
  89. package/abis/IERC721TokenReceiver.abi.json +0 -36
  90. package/abis/IERC7572.abi.json +0 -21
  91. package/abis/IFeed.abi.json +0 -2132
  92. package/abis/IFeedRule.abi.json +0 -437
  93. package/abis/IFollowRule.abi.json +0 -99
  94. package/abis/IGraph.abi.json +0 -1298
  95. package/abis/IGraphRule.abi.json +0 -259
  96. package/abis/IGroup.abi.json +0 -1107
  97. package/abis/IGroupRule.abi.json +0 -250
  98. package/abis/ILensCreate2.abi.json +0 -60
  99. package/abis/ILensFees.abi.json +0 -53
  100. package/abis/ILock.abi.json +0 -15
  101. package/abis/IMetadataBased.abi.json +0 -28
  102. package/abis/IMigrationNamespace.abi.json +0 -20
  103. package/abis/IMulticall3.abi.json +0 -440
  104. package/abis/INamespace.abi.json +0 -1411
  105. package/abis/INamespaceRule.abi.json +0 -275
  106. package/abis/IOwnable.abi.json +0 -28
  107. package/abis/IPostAction.abi.json +0 -145
  108. package/abis/IPostRule.abi.json +0 -297
  109. package/abis/IRequestBasedGroupRule.abi.json +0 -320
  110. package/abis/IRoleBasedAccessControl.abi.json +0 -360
  111. package/abis/ISimpleCollectAction.abi.json +0 -238
  112. package/abis/ISource.abi.json +0 -60
  113. package/abis/IToken.abi.json +0 -21
  114. package/abis/ITokenURIProvider.abi.json +0 -21
  115. package/abis/ITransparentUpgradeableProxy.abi.json +0 -117
  116. package/abis/IVersionedBeacon.abi.json +0 -34
  117. package/abis/Initializable.abi.json +0 -1
  118. package/abis/KeyValueLib.abi.json +0 -1
  119. package/abis/KeyValueStorageLib.abi.json +0 -1
  120. package/abis/LensCollectedPost.abi.json +0 -490
  121. package/abis/LensCreate2.abi.json +0 -190
  122. package/abis/LensERC721.abi.json +0 -397
  123. package/abis/LensFactory.abi.json +0 -1330
  124. package/abis/LensFees.abi.json +0 -69
  125. package/abis/LensPaymentHandler.abi.json +0 -1
  126. package/abis/LensUsernameTokenURIProvider.abi.json +0 -64
  127. package/abis/LibBytes.abi.json +0 -1
  128. package/abis/LibString.abi.json +0 -17
  129. package/abis/Lock.abi.json +0 -274
  130. package/abis/Math.abi.json +0 -1
  131. package/abis/MembershipApprovalGroupRule.abi.json +0 -653
  132. package/abis/MetadataBased.abi.json +0 -52
  133. package/abis/MigrationAccessControlFactory.abi.json +0 -186
  134. package/abis/MigrationAccount.abi.json +0 -1202
  135. package/abis/MigrationAccountFactory.abi.json +0 -341
  136. package/abis/MigrationApp.abi.json +0 -1177
  137. package/abis/MigrationAppFactory.abi.json +0 -283
  138. package/abis/MigrationFeed.abi.json +0 -2393
  139. package/abis/MigrationFeedFactory.abi.json +0 -291
  140. package/abis/MigrationGraph.abi.json +0 -1681
  141. package/abis/MigrationGraphFactory.abi.json +0 -291
  142. package/abis/MigrationLensFactory.abi.json +0 -1460
  143. package/abis/MigrationNamespace.abi.json +0 -2400
  144. package/abis/MigrationNamespaceFactory.abi.json +0 -317
  145. package/abis/MockERC20.abi.json +0 -322
  146. package/abis/MockERC721.abi.json +0 -350
  147. package/abis/MultiPoke.abi.json +0 -29
  148. package/abis/MyScript.abi.json +0 -29
  149. package/abis/Namespace.abi.json +0 -2275
  150. package/abis/NamespaceCore.abi.json +0 -1
  151. package/abis/NamespaceFactory.abi.json +0 -187
  152. package/abis/Namespace_SetNameAndSymbol.abi.json +0 -29
  153. package/abis/Ownable.abi.json +0 -52
  154. package/abis/OwnableMetadataBasedAccountAction.abi.json +0 -253
  155. package/abis/OwnableMetadataBasedPostAction.abi.json +0 -268
  156. package/abis/OwnableMetadataBasedRule.abi.json +0 -110
  157. package/abis/OwnerAdminOnlyAccessControl.abi.json +0 -460
  158. package/abis/PermissionlessAccessControl.abi.json +0 -68
  159. package/abis/PermissionsHelper.abi.json +0 -1
  160. package/abis/PrimitiveFactory.abi.json +0 -23
  161. package/abis/Proxy.abi.json +0 -10
  162. package/abis/ProxyAdmin.abi.json +0 -107
  163. package/abis/Query.abi.json +0 -29
  164. package/abis/RoleBasedAccessControl.abi.json +0 -450
  165. package/abis/RuleBasedFeed.abi.json +0 -2182
  166. package/abis/RuleBasedGraph.abi.json +0 -1348
  167. package/abis/RuleBasedGroup.abi.json +0 -1147
  168. package/abis/RuleBasedNamespace.abi.json +0 -1451
  169. package/abis/RuleBasedPrimitive.abi.json +0 -1
  170. package/abis/RulesLib.abi.json +0 -1
  171. package/abis/SafeERC20.abi.json +0 -1
  172. package/abis/Script.abi.json +0 -15
  173. package/abis/ScriptBase.abi.json +0 -1
  174. package/abis/SignedMath.abi.json +0 -1
  175. package/abis/SimpleCollectAction.abi.json +0 -430
  176. package/abis/SimplePaymentFeedRule.abi.json +0 -663
  177. package/abis/SimplePaymentFollowRule.abi.json +0 -306
  178. package/abis/SimplePaymentGroupRule.abi.json +0 -476
  179. package/abis/SimplePaymentRule.abi.json +0 -166
  180. package/abis/SourceStampBased.abi.json +0 -39
  181. package/abis/StdChains.abi.json +0 -1
  182. package/abis/StdCheats.abi.json +0 -1
  183. package/abis/StdCheatsSafe.abi.json +0 -1
  184. package/abis/StdStyle.abi.json +0 -1
  185. package/abis/StdUtils.abi.json +0 -1
  186. package/abis/StorageSlot.abi.json +0 -1
  187. package/abis/Strings.abi.json +0 -1
  188. package/abis/TestBase.abi.json +0 -1
  189. package/abis/TippingAccountAction.abi.json +0 -300
  190. package/abis/TippingPostAction.abi.json +0 -302
  191. package/abis/TokenGatedFeedRule.abi.json +0 -607
  192. package/abis/TokenGatedFollowRule.abi.json +0 -250
  193. package/abis/TokenGatedGraphRule.abi.json +0 -429
  194. package/abis/TokenGatedGroupRule.abi.json +0 -420
  195. package/abis/TokenGatedNamespaceRule.abi.json +0 -440
  196. package/abis/TokenGatedRule.abi.json +0 -110
  197. package/abis/TransparentUpgradeableProxy.abi.json +0 -76
  198. package/abis/TrustBasedRule.abi.json +0 -58
  199. package/abis/UsernameLengthNamespaceRule.abi.json +0 -440
  200. package/abis/UsernamePricePerLengthNamespaceRule.abi.json +0 -496
  201. package/abis/UsernameReservedNamespaceRule.abi.json +0 -550
  202. package/abis/UsernameSimpleCharsetNamespaceRule.abi.json +0 -426
  203. package/abis/Vm.abi.json +0 -10330
  204. package/abis/VmSafe.abi.json +0 -8351
  205. package/abis/WhitelistedAddresses.abi.json +0 -1
  206. package/abis/console.abi.json +0 -1
  207. package/abis/safeconsole.abi.json +0 -1
  208. package/abis/stdJson.abi.json +0 -1
  209. package/abis/stdMath.abi.json +0 -1
  210. package/abis/stdStorage.abi.json +0 -1
  211. package/abis/stdStorageSafe.abi.json +0 -52
  212. package/dist/lens-contracts.d.ts +0 -1446
  213. package/dist/lens-contracts.js +0 -1693
package/LICENSE CHANGED
@@ -1,7 +1,5 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2023 Avara Labs Ltd
4
-
5
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
4
  of this software and associated documentation files (the "Software"), to deal
7
5
  in the Software without restriction, including without limitation the rights
package/README.md CHANGED
@@ -1,8 +1,10 @@
1
- # Lens Module Contracts
1
+ # Lens Modules
2
2
 
3
- This repository contains the module contracts from the core Lens Protocol repo ([link](https://github.com/lens-protocol/core/tree/5454b58664fab805b6888a68ff40915d251f32f3/contracts)) as a standalone library, useful in Hardhat and Foundry projects.
3
+ This repository contains the contracts from the core Lens Protocol repo ([link](https://github.com/lens-protocol/lens-v3/tree/latest-mainnet)) as a standalone library, useful in Hardhat and Foundry projects.
4
4
 
5
- It provides all the libraries, interfaces, and base contracts required when creating follow, collect, and Open Action modules.
5
+ It includes the Solidity source code of the contracts, their ABIs, and deployment addresses for Lens Chain mainnet and testnet.
6
+
7
+ The files are kept in sync with the `latest-mainnet` tag.
6
8
 
7
9
  ## Installation
8
10
 
@@ -12,138 +14,39 @@ npm i lens-modules
12
14
 
13
15
  ## Usage
14
16
 
15
- Boilerplate for an Open Action module:
17
+ #### Contracts
18
+
19
+ Import Lens contracts you want to use in your Solidity project. The paths mirror the `lens-v3` repo structure. Eg:
16
20
 
17
21
  ```solidity
18
- pragma solidity ^0.8.21;
19
-
20
- import {HubRestricted} from "lens-modules/contracts/base/HubRestricted.sol";
21
- import {IPublicationActionModule} from "lens-modules/contracts/interfaces/IPublicationActionModule.sol";
22
- import {Types} from "lens-modules/contracts/libraries/constants/Types.sol";
23
- import {LensModuleMetadata} from "lens-modules/contracts/modules/LensModuleMetadata.sol";
24
-
25
- contract OpenActionModule is
26
- HubRestricted,
27
- IPublicationActionModule,
28
- LensModuleMetadata
29
- {
30
- constructor(
31
- address owner,
32
- address hub
33
- )
34
- Ownable(owner)
35
- HubRestricted(hub)
36
- LensModuleMetadata()
37
- {
38
- // ...
39
- }
40
-
41
- function supportsInterface(
42
- bytes4 interfaceID
43
- ) public pure virtual override returns (bool) {
44
- return
45
- interfaceID == type(IPublicationActionModule).interfaceId ||
46
- super.supportsInterface(interfaceID);
47
- }
48
-
49
- function initializePublicationAction(
50
- uint256 profileId,
51
- uint256 pubId,
52
- address /* transactionExecutor */,
53
- bytes calldata data
54
- ) external override onlyHub returns (bytes memory) {
55
- // ...
56
- }
57
-
58
- function processPublicationAction(
59
- Types.ProcessActionParams calldata params
60
- ) external override onlyHub returns (bytes memory) {
61
- // ...
62
- }
63
- }
22
+ import {Account} from "lens-modules/contracts/extensions/account/Account.sol";
23
+ import {IGraph} from "lens-modules/contracts/core/interfaces/IGraph.sol";
24
+ import {KeyValue} from "lens-modules/contracts/core/types/Types.sol";
64
25
  ```
65
26
 
66
- The library also has the contracts needed to create a Follow or Collect Module. Here's a basic example of a `CollectModule` that can be registered with the platform `CollectPublicationAction` contract.
27
+ #### Deployments
67
28
 
68
- ```solidity
69
- // SPDX-License-Identifier: MIT
70
- pragma solidity 0.8.23;
71
-
72
- import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
73
- import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
74
- import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
75
- import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
76
-
77
- import {Types} from "lens-modules/contracts/libraries/constants/Types.sol";
78
- import {IPublicationActionModule} from "lens-modules/contracts/interfaces/IPublicationActionModule.sol";
79
- import {HubRestricted} from "lens-modules/contracts/base/HubRestricted.sol";
80
- import {IModuleRegistry} from "lens-modules/contracts/interfaces/IModuleRegistry.sol";
81
- import {LensModuleMetadata} from "lens-modules/contracts/modules/LensModuleMetadata.sol";
82
- import {LensModuleRegistrant} from "lens-modules/contracts/modules/base/LensModuleRegistrant.sol";
83
- import {ICollectModule} from "lens-modules/contracts/modules/interfaces/ICollectModule.sol";
84
- import {BaseFeeCollectModule} from "lens-modules/contracts/modules/act/collect/base/BaseFeeCollectModule.sol";
85
- import {IBaseFeeCollectModule, BaseFeeCollectModuleInitData} from "lens-modules/contracts/modules/interfaces/IBaseFeeCollectModule.sol";
86
- import {ModuleTypes} from "lens-modules/contracts/modules/libraries/constants/ModuleTypes.sol";
87
- import {LensModule} from "lens-modules/contracts/modules/LensModule.sol";
88
-
89
- contract YourCollectModule is Ownable, BaseFeeCollectModule, LensModuleMetadata {
90
- using SafeERC20 for IERC20;
91
-
92
- constructor(
93
- address hub,
94
- address actionModule,
95
- address moduleRegistry,
96
- address moduleOwner
97
- )
98
- Ownable(moduleOwner)
99
- BaseFeeCollectModule(hub, actionModule, moduleRegistry)
100
- LensModuleMetadata()
101
- {}
102
-
103
- function supportsInterface(
104
- bytes4 interfaceID
105
- ) public pure override(BaseFeeCollectModule, LensModule) returns (bool) {
106
- return
107
- BaseFeeCollectModule.supportsInterface(interfaceID) ||
108
- LensModule.supportsInterface(interfaceID);
109
- }
110
-
111
- function initializePublicationCollectModule(
112
- uint256 profileId,
113
- uint256 pubId,
114
- address /* transactionExecutor */,
115
- bytes calldata data
116
- ) external override onlyActionModule returns (bytes memory) {
117
- BaseFeeCollectModuleInitData memory baseInitData = abi.decode(
118
- data,
119
- (BaseFeeCollectModuleInitData)
120
- );
121
- _validateBaseInitData(baseInitData);
122
- _storeBasePublicationCollectParameters(profileId, pubId, baseInitData);
123
- return data;
124
- }
125
-
126
- function calculateFee(
127
- ModuleTypes.ProcessCollectParams calldata processCollectParams
128
- ) public view virtual override returns (uint160) {
129
- // Override calculateFee to add custom logic to calculate the fee
130
- return
131
- _dataByPublicationByProfile[processCollectParams.profileId][
132
- processCollectParams.pubId
133
- ].amount;
134
- }
135
-
136
- function processCollect(
137
- ModuleTypes.ProcessCollectParams calldata processCollectParams
138
- ) external override returns (bytes memory) {
139
- _validateAndStoreCollect(processCollectParams);
140
- // Override processCollect to add custom logic to process the collect
141
- if (processCollectParams.referrerProfileIds.length == 0) {
142
- _processCollect(processCollectParams);
143
- } else {
144
- _processCollectWithReferral(processCollectParams);
145
- }
146
- return processCollectParams.data;
147
- }
148
- }
29
+ Use the `Deployments` helper JavaScript class to get the contract addresses of the Lens deployments on mainnet and testnet. Eg:
30
+
31
+ ```javascript
32
+ import { lensDeployments } from "lens-modules/deployments";
33
+
34
+ const lensFactoryAddress = lensDeployments.mainnet.LensFactory.address;
35
+ ```
36
+
37
+ #### ABIs
38
+
39
+ Use the `ABIs` helper JavaScript class to get the ABI of any Lens contract. Eg:
40
+
41
+ ```javascript
42
+ import { accountAbi } from "lens-modules/abis";
43
+
44
+ await walletClient.writeContract({
45
+ address: "0xYourAccountContractAddress",
46
+ abi: accountAbi,
47
+ functionName: "executeTransaction",
48
+ args: [
49
+ // ... your function arguments
50
+ ],
51
+ });
149
52
  ```