lens-modules 3.0.0 → 3.0.1

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 (207) hide show
  1. package/LICENSE +0 -2
  2. package/README.md +35 -132
  3. package/dist/abis.d.ts +38900 -0
  4. package/dist/abis.js +1 -0
  5. package/dist/deployments.d.ts +758 -0
  6. package/dist/deployments.js +1 -0
  7. package/dist/index.d.ts +2 -1
  8. package/dist/index.js +2 -17
  9. package/package.json +36 -7
  10. package/abis/AccessControlFactory.abi.json +0 -56
  11. package/abis/AccessControlLib.abi.json +0 -1
  12. package/abis/AccessControlled.abi.json +0 -71
  13. package/abis/Account.abi.json +0 -1077
  14. package/abis/AccountBlockingRule.abi.json +0 -918
  15. package/abis/AccountFactory.abi.json +0 -211
  16. package/abis/ActionHub.abi.json +0 -1064
  17. package/abis/AdditionRemovalPidGroupRule.abi.json +0 -428
  18. package/abis/Address.abi.json +0 -1
  19. package/abis/AddressUpgradeable.abi.json +0 -1
  20. package/abis/App.abi.json +0 -1052
  21. package/abis/AppCore.abi.json +0 -1
  22. package/abis/AppFactory.abi.json +0 -153
  23. package/abis/BanMemberGroupRule.abi.json +0 -727
  24. package/abis/Base64.abi.json +0 -1
  25. package/abis/BaseAccountAction.abi.json +0 -150
  26. package/abis/BaseAction.abi.json +0 -1
  27. package/abis/BasePostAction.abi.json +0 -165
  28. package/abis/BaseSource.abi.json +0 -116
  29. package/abis/Beacon.abi.json +0 -303
  30. package/abis/BeaconProxy.abi.json +0 -219
  31. package/abis/CallLib.abi.json +0 -1
  32. package/abis/CommonBase.abi.json +0 -1
  33. package/abis/ConfigurePrimitiveRules.abi.json +0 -29
  34. package/abis/DeployAndSetAccessControls.abi.json +0 -29
  35. package/abis/EIP712EncodingLib.abi.json +0 -1
  36. package/abis/ERC1155Holder.abi.json +0 -99
  37. package/abis/ERC1155Receiver.abi.json +0 -99
  38. package/abis/ERC165.abi.json +0 -21
  39. package/abis/ERC1967Proxy.abi.json +0 -71
  40. package/abis/ERC1967Upgrade.abi.json +0 -47
  41. package/abis/ERC721Holder.abi.json +0 -36
  42. package/abis/EmptyImplementation.abi.json +0 -1
  43. package/abis/EntityExtraDataBased.abi.json +0 -39
  44. package/abis/Errors.abi.json +0 -212
  45. package/abis/EventEmitter.abi.json +0 -132
  46. package/abis/EventEmitterEarly.abi.json +0 -132
  47. package/abis/Events.abi.json +0 -40
  48. package/abis/ExtraDataBased.abi.json +0 -39
  49. package/abis/ExtraStorageBased.abi.json +0 -39
  50. package/abis/Feed.abi.json +0 -2380
  51. package/abis/FeedCore.abi.json +0 -1
  52. package/abis/FeedFactory.abi.json +0 -161
  53. package/abis/FollowersOnlyPostRule.abi.json +0 -448
  54. package/abis/Graph.abi.json +0 -1556
  55. package/abis/GraphCore.abi.json +0 -1
  56. package/abis/GraphFactory.abi.json +0 -161
  57. package/abis/Group.abi.json +0 -1526
  58. package/abis/GroupCore.abi.json +0 -1
  59. package/abis/GroupFactory.abi.json +0 -166
  60. package/abis/GroupGatedFeedRule.abi.json +0 -583
  61. package/abis/GroupGatedGraphRule.abi.json +0 -424
  62. package/abis/IAccessControl.abi.json +0 -68
  63. package/abis/IAccessControlled.abi.json +0 -15
  64. package/abis/IAccount.abi.json +0 -753
  65. package/abis/IAccountAction.abi.json +0 -130
  66. package/abis/IAccountGroupAdditionSettings.abi.json +0 -43
  67. package/abis/IApp.abi.json +0 -768
  68. package/abis/IBeacon.abi.json +0 -15
  69. package/abis/IERC1155.abi.json +0 -295
  70. package/abis/IERC1155Receiver.abi.json +0 -99
  71. package/abis/IERC165.abi.json +0 -21
  72. package/abis/IERC1822Proxiable.abi.json +0 -15
  73. package/abis/IERC1967.abi.json +0 -47
  74. package/abis/IERC20.abi.json +0 -224
  75. package/abis/IERC20Permit.abi.json +0 -77
  76. package/abis/IERC4906Events.abi.json +0 -34
  77. package/abis/IERC721.abi.json +0 -287
  78. package/abis/IERC721Enumerable.abi.json +0 -343
  79. package/abis/IERC721Metadata.abi.json +0 -332
  80. package/abis/IERC721Namespace.abi.json +0 -1778
  81. package/abis/IERC721Receiver.abi.json +0 -36
  82. package/abis/IERC721ReceiverUpgradeable.abi.json +0 -36
  83. package/abis/IERC721TokenReceiver.abi.json +0 -36
  84. package/abis/IERC7572.abi.json +0 -21
  85. package/abis/IFeed.abi.json +0 -2132
  86. package/abis/IFeedRule.abi.json +0 -437
  87. package/abis/IFollowRule.abi.json +0 -99
  88. package/abis/IGraph.abi.json +0 -1298
  89. package/abis/IGraphRule.abi.json +0 -259
  90. package/abis/IGroup.abi.json +0 -1107
  91. package/abis/IGroupRule.abi.json +0 -250
  92. package/abis/ILensCreate2.abi.json +0 -60
  93. package/abis/ILensFees.abi.json +0 -53
  94. package/abis/ILock.abi.json +0 -15
  95. package/abis/IMetadataBased.abi.json +0 -28
  96. package/abis/IMigrationNamespace.abi.json +0 -20
  97. package/abis/IMulticall3.abi.json +0 -440
  98. package/abis/INamespace.abi.json +0 -1411
  99. package/abis/INamespaceRule.abi.json +0 -275
  100. package/abis/IOwnable.abi.json +0 -28
  101. package/abis/IPostAction.abi.json +0 -145
  102. package/abis/IPostRule.abi.json +0 -297
  103. package/abis/IRequestBasedGroupRule.abi.json +0 -320
  104. package/abis/IRoleBasedAccessControl.abi.json +0 -360
  105. package/abis/ISimpleCollectAction.abi.json +0 -238
  106. package/abis/ISource.abi.json +0 -60
  107. package/abis/IToken.abi.json +0 -21
  108. package/abis/ITokenURIProvider.abi.json +0 -21
  109. package/abis/ITransparentUpgradeableProxy.abi.json +0 -117
  110. package/abis/IVersionedBeacon.abi.json +0 -34
  111. package/abis/Initializable.abi.json +0 -1
  112. package/abis/KeyValueLib.abi.json +0 -1
  113. package/abis/KeyValueStorageLib.abi.json +0 -1
  114. package/abis/LensCollectedPost.abi.json +0 -490
  115. package/abis/LensCreate2.abi.json +0 -190
  116. package/abis/LensERC721.abi.json +0 -397
  117. package/abis/LensFactory.abi.json +0 -1330
  118. package/abis/LensFees.abi.json +0 -69
  119. package/abis/LensPaymentHandler.abi.json +0 -1
  120. package/abis/LensUsernameTokenURIProvider.abi.json +0 -64
  121. package/abis/LibBytes.abi.json +0 -1
  122. package/abis/LibString.abi.json +0 -17
  123. package/abis/Lock.abi.json +0 -274
  124. package/abis/Math.abi.json +0 -1
  125. package/abis/MembershipApprovalGroupRule.abi.json +0 -653
  126. package/abis/MetadataBased.abi.json +0 -52
  127. package/abis/MigrationAccessControlFactory.abi.json +0 -186
  128. package/abis/MigrationAccount.abi.json +0 -1202
  129. package/abis/MigrationAccountFactory.abi.json +0 -341
  130. package/abis/MigrationApp.abi.json +0 -1177
  131. package/abis/MigrationAppFactory.abi.json +0 -283
  132. package/abis/MigrationFeed.abi.json +0 -2393
  133. package/abis/MigrationFeedFactory.abi.json +0 -291
  134. package/abis/MigrationGraph.abi.json +0 -1681
  135. package/abis/MigrationGraphFactory.abi.json +0 -291
  136. package/abis/MigrationLensFactory.abi.json +0 -1460
  137. package/abis/MigrationNamespace.abi.json +0 -2400
  138. package/abis/MigrationNamespaceFactory.abi.json +0 -317
  139. package/abis/MockERC20.abi.json +0 -322
  140. package/abis/MockERC721.abi.json +0 -350
  141. package/abis/MultiPoke.abi.json +0 -29
  142. package/abis/MyScript.abi.json +0 -29
  143. package/abis/Namespace.abi.json +0 -2275
  144. package/abis/NamespaceCore.abi.json +0 -1
  145. package/abis/NamespaceFactory.abi.json +0 -187
  146. package/abis/Namespace_SetNameAndSymbol.abi.json +0 -29
  147. package/abis/Ownable.abi.json +0 -52
  148. package/abis/OwnableMetadataBasedAccountAction.abi.json +0 -253
  149. package/abis/OwnableMetadataBasedPostAction.abi.json +0 -268
  150. package/abis/OwnableMetadataBasedRule.abi.json +0 -110
  151. package/abis/OwnerAdminOnlyAccessControl.abi.json +0 -460
  152. package/abis/PermissionlessAccessControl.abi.json +0 -68
  153. package/abis/PermissionsHelper.abi.json +0 -1
  154. package/abis/PrimitiveFactory.abi.json +0 -23
  155. package/abis/Proxy.abi.json +0 -10
  156. package/abis/ProxyAdmin.abi.json +0 -107
  157. package/abis/Query.abi.json +0 -29
  158. package/abis/RoleBasedAccessControl.abi.json +0 -450
  159. package/abis/RuleBasedFeed.abi.json +0 -2182
  160. package/abis/RuleBasedGraph.abi.json +0 -1348
  161. package/abis/RuleBasedGroup.abi.json +0 -1147
  162. package/abis/RuleBasedNamespace.abi.json +0 -1451
  163. package/abis/RuleBasedPrimitive.abi.json +0 -1
  164. package/abis/RulesLib.abi.json +0 -1
  165. package/abis/SafeERC20.abi.json +0 -1
  166. package/abis/Script.abi.json +0 -15
  167. package/abis/ScriptBase.abi.json +0 -1
  168. package/abis/SignedMath.abi.json +0 -1
  169. package/abis/SimpleCollectAction.abi.json +0 -430
  170. package/abis/SimplePaymentFeedRule.abi.json +0 -663
  171. package/abis/SimplePaymentFollowRule.abi.json +0 -306
  172. package/abis/SimplePaymentGroupRule.abi.json +0 -476
  173. package/abis/SimplePaymentRule.abi.json +0 -166
  174. package/abis/SourceStampBased.abi.json +0 -39
  175. package/abis/StdChains.abi.json +0 -1
  176. package/abis/StdCheats.abi.json +0 -1
  177. package/abis/StdCheatsSafe.abi.json +0 -1
  178. package/abis/StdStyle.abi.json +0 -1
  179. package/abis/StdUtils.abi.json +0 -1
  180. package/abis/StorageSlot.abi.json +0 -1
  181. package/abis/Strings.abi.json +0 -1
  182. package/abis/TestBase.abi.json +0 -1
  183. package/abis/TippingAccountAction.abi.json +0 -300
  184. package/abis/TippingPostAction.abi.json +0 -302
  185. package/abis/TokenGatedFeedRule.abi.json +0 -607
  186. package/abis/TokenGatedFollowRule.abi.json +0 -250
  187. package/abis/TokenGatedGraphRule.abi.json +0 -429
  188. package/abis/TokenGatedGroupRule.abi.json +0 -420
  189. package/abis/TokenGatedNamespaceRule.abi.json +0 -440
  190. package/abis/TokenGatedRule.abi.json +0 -110
  191. package/abis/TransparentUpgradeableProxy.abi.json +0 -76
  192. package/abis/TrustBasedRule.abi.json +0 -58
  193. package/abis/UsernameLengthNamespaceRule.abi.json +0 -440
  194. package/abis/UsernamePricePerLengthNamespaceRule.abi.json +0 -496
  195. package/abis/UsernameReservedNamespaceRule.abi.json +0 -550
  196. package/abis/UsernameSimpleCharsetNamespaceRule.abi.json +0 -426
  197. package/abis/Vm.abi.json +0 -10330
  198. package/abis/VmSafe.abi.json +0 -8351
  199. package/abis/WhitelistedAddresses.abi.json +0 -1
  200. package/abis/console.abi.json +0 -1
  201. package/abis/safeconsole.abi.json +0 -1
  202. package/abis/stdJson.abi.json +0 -1
  203. package/abis/stdMath.abi.json +0 -1
  204. package/abis/stdStorage.abi.json +0 -1
  205. package/abis/stdStorageSafe.abi.json +0 -52
  206. package/dist/lens-contracts.d.ts +0 -1446
  207. 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
  ```