@towns-protocol/contracts 0.0.302

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 (396) hide show
  1. package/LICENSE.txt +21 -0
  2. package/README.md +206 -0
  3. package/docs/permitAndStake_integration_guide.md +266 -0
  4. package/docs/swap_integration_guide.md +591 -0
  5. package/package.json +57 -0
  6. package/scripts/common/DeployBase.s.sol +26 -0
  7. package/scripts/common/DeployFacet.s.sol +7 -0
  8. package/scripts/common/Deployer.s.sol +33 -0
  9. package/scripts/common/Interaction.s.sol +51 -0
  10. package/scripts/deployments/diamonds/DeployAppRegistry.s.sol +168 -0
  11. package/scripts/deployments/diamonds/DeployBaseRegistry.s.sol +263 -0
  12. package/scripts/deployments/diamonds/DeployRiverAirdrop.s.sol +203 -0
  13. package/scripts/deployments/diamonds/DeployRiverMigration.s.sol +129 -0
  14. package/scripts/deployments/diamonds/DeployRiverRegistry.s.sol +175 -0
  15. package/scripts/deployments/diamonds/DeploySpace.s.sol +285 -0
  16. package/scripts/deployments/diamonds/DeploySpaceFactory.s.sol +416 -0
  17. package/scripts/deployments/diamonds/DeploySpaceOwner.s.sol +183 -0
  18. package/scripts/deployments/diamonds/DeploySwapRouter.s.sol +176 -0
  19. package/scripts/deployments/diamonds/IDiamondInitHelper.sol +11 -0
  20. package/scripts/deployments/facets/DeployAppAccount.s.sol +51 -0
  21. package/scripts/deployments/facets/DeployAppRegistryFacet.s.sol +69 -0
  22. package/scripts/deployments/facets/DeployArchitect.s.sol +51 -0
  23. package/scripts/deployments/facets/DeployAttestationRegistry.s.sol +36 -0
  24. package/scripts/deployments/facets/DeployBanning.s.sol +30 -0
  25. package/scripts/deployments/facets/DeployChannels.s.sol +35 -0
  26. package/scripts/deployments/facets/DeployCreateSpace.s.sol +42 -0
  27. package/scripts/deployments/facets/DeployDropFacet.s.sol +49 -0
  28. package/scripts/deployments/facets/DeployERC721A.s.sol +48 -0
  29. package/scripts/deployments/facets/DeployERC721ANonTransferable.s.sol +49 -0
  30. package/scripts/deployments/facets/DeployERC721AQueryable.s.sol +30 -0
  31. package/scripts/deployments/facets/DeployEntitlementChecker.s.sol +49 -0
  32. package/scripts/deployments/facets/DeployEntitlementDataQueryable.s.sol +29 -0
  33. package/scripts/deployments/facets/DeployEntitlementsManager.s.sol +33 -0
  34. package/scripts/deployments/facets/DeployExecutorFacet.s.sol +60 -0
  35. package/scripts/deployments/facets/DeployFeatureManager.s.sol +38 -0
  36. package/scripts/deployments/facets/DeployGuardianFacet.s.sol +39 -0
  37. package/scripts/deployments/facets/DeployImplementationRegistry.s.sol +36 -0
  38. package/scripts/deployments/facets/DeployMainnetDelegation.s.sol +43 -0
  39. package/scripts/deployments/facets/DeployMembership.s.sol +77 -0
  40. package/scripts/deployments/facets/DeployMembershipMetadata.s.sol +30 -0
  41. package/scripts/deployments/facets/DeployMembershipToken.s.sol +47 -0
  42. package/scripts/deployments/facets/DeployMerkleAirdrop.s.sol +37 -0
  43. package/scripts/deployments/facets/DeployMetadata.s.sol +39 -0
  44. package/scripts/deployments/facets/DeployMockLegacyArchitect.s.sol +33 -0
  45. package/scripts/deployments/facets/DeployNodeOperator.s.sol +49 -0
  46. package/scripts/deployments/facets/DeployNodeRegistry.s.sol +37 -0
  47. package/scripts/deployments/facets/DeployOperatorRegistry.s.sol +36 -0
  48. package/scripts/deployments/facets/DeployPartnerRegistry.s.sol +41 -0
  49. package/scripts/deployments/facets/DeployPlatformRequirements.s.sol +75 -0
  50. package/scripts/deployments/facets/DeployPrepayFacet.s.sol +31 -0
  51. package/scripts/deployments/facets/DeployPricingModules.s.sol +36 -0
  52. package/scripts/deployments/facets/DeployReferrals.s.sol +34 -0
  53. package/scripts/deployments/facets/DeployReviewFacet.s.sol +31 -0
  54. package/scripts/deployments/facets/DeployRewardsDistributionV2.s.sol +76 -0
  55. package/scripts/deployments/facets/DeployRiverConfig.s.sol +41 -0
  56. package/scripts/deployments/facets/DeployRoles.s.sol +48 -0
  57. package/scripts/deployments/facets/DeploySchemaRegistry.s.sol +35 -0
  58. package/scripts/deployments/facets/DeploySignerFacet.s.sol +47 -0
  59. package/scripts/deployments/facets/DeploySimpleApp.s.sol +10 -0
  60. package/scripts/deployments/facets/DeploySpaceDelegation.s.sol +43 -0
  61. package/scripts/deployments/facets/DeploySpaceEntitlementGated.s.sol +31 -0
  62. package/scripts/deployments/facets/DeploySpaceFactoryInit.s.sol +33 -0
  63. package/scripts/deployments/facets/DeploySpaceOwnerFacet.s.sol +71 -0
  64. package/scripts/deployments/facets/DeployStreamRegistry.s.sol +50 -0
  65. package/scripts/deployments/facets/DeploySwapFacet.s.sol +33 -0
  66. package/scripts/deployments/facets/DeploySwapRouterFacet.s.sol +38 -0
  67. package/scripts/deployments/facets/DeployTipping.s.sol +31 -0
  68. package/scripts/deployments/facets/DeployTokenMigration.s.sol +40 -0
  69. package/scripts/deployments/facets/DeployTownsPoints.s.sol +53 -0
  70. package/scripts/deployments/facets/DeployTreasury.s.sol +30 -0
  71. package/scripts/deployments/facets/DeployUpgradeableBeacon.s.sol +34 -0
  72. package/scripts/deployments/facets/DeployWalletLink.s.sol +56 -0
  73. package/scripts/deployments/facets/DeployXChain.s.sol +35 -0
  74. package/scripts/deployments/utils/DeployAccountFactory.s.sol +40 -0
  75. package/scripts/deployments/utils/DeployEntitlementGatedExample.s.sol +23 -0
  76. package/scripts/deployments/utils/DeployEntrypoint.s.sol +28 -0
  77. package/scripts/deployments/utils/DeployMember.s.sol +95 -0
  78. package/scripts/deployments/utils/DeployMockDiamond.s.sol +7 -0
  79. package/scripts/deployments/utils/DeployMockERC20.s.sol +24 -0
  80. package/scripts/deployments/utils/DeployMockERC721A.s.sol +45 -0
  81. package/scripts/deployments/utils/DeployMockLegacyMembership.s.sol +29 -0
  82. package/scripts/deployments/utils/DeployMockMessenger.s.sol +42 -0
  83. package/scripts/deployments/utils/DeployMockNFT.s.sol +86 -0
  84. package/scripts/deployments/utils/DeployPoapEntitlement.s.sol +16 -0
  85. package/scripts/deployments/utils/DeployProxyBatchDelegation.s.sol +112 -0
  86. package/scripts/deployments/utils/DeploySpaceProxyInitializer.s.sol +28 -0
  87. package/scripts/deployments/utils/DeployTieredLogPricingV2.s.sol +23 -0
  88. package/scripts/deployments/utils/DeployTieredLogPricingV3.s.sol +23 -0
  89. package/scripts/deployments/utils/DeployTownsBase.s.sol +95 -0
  90. package/scripts/deployments/utils/DeployTownsMainnet.s.sol +66 -0
  91. package/scripts/deployments/utils/DeployTownsMulti.s.sol +53 -0
  92. package/scripts/deployments/utils/DeployWrappedTowns.s.sol +52 -0
  93. package/scripts/deployments/utils/LibLayerZeroValues.sol +34 -0
  94. package/scripts/deployments/utils/pricing/TieredLogPricing.s.sol +45 -0
  95. package/scripts/interactions/InteractAirdrop.s.sol +57 -0
  96. package/scripts/interactions/InteractAlphaPost.s.sol +32 -0
  97. package/scripts/interactions/InteractAlphaSparse.s.sol +173 -0
  98. package/scripts/interactions/InteractBaseAlpha.s.sol +84 -0
  99. package/scripts/interactions/InteractBaseBridge.s.sol +48 -0
  100. package/scripts/interactions/InteractBridgeLayerZero.s.sol +102 -0
  101. package/scripts/interactions/InteractClaimCondition.s.sol +56 -0
  102. package/scripts/interactions/InteractCreateSpace.s.sol +50 -0
  103. package/scripts/interactions/InteractDiamondCut.s.sol +47 -0
  104. package/scripts/interactions/InteractDropFacet.s.sol +32 -0
  105. package/scripts/interactions/InteractEnableNewSnapshotFormat.s.sol +27 -0
  106. package/scripts/interactions/InteractEnableNode2NodeAuth.s.sol +27 -0
  107. package/scripts/interactions/InteractMembership.s.sol +42 -0
  108. package/scripts/interactions/InteractMockERC721A.s.sol +20 -0
  109. package/scripts/interactions/InteractNodeOperators.s.sol +41 -0
  110. package/scripts/interactions/InteractPostDeploy.s.sol +59 -0
  111. package/scripts/interactions/InteractPrepay.s.sol +30 -0
  112. package/scripts/interactions/InteractRegisterApp.s.sol +61 -0
  113. package/scripts/interactions/InteractRiverAlpha.s.sol +30 -0
  114. package/scripts/interactions/InteractRiverAlphaSparse.s.sol +117 -0
  115. package/scripts/interactions/InteractRiverMainnet.s.sol +27 -0
  116. package/scripts/interactions/InteractRiverRegistry.s.sol +36 -0
  117. package/scripts/interactions/InteractRiverRegistrySetBlocklist.s.sol +30 -0
  118. package/scripts/interactions/InteractRiverRegistrySetFreq.s.sol +27 -0
  119. package/scripts/interactions/InteractRiverRegistrySetRepl.s.sol +30 -0
  120. package/scripts/interactions/InteractSetDefaultUri.s.sol +20 -0
  121. package/scripts/interactions/InteractSetDefaultUriLocalhost.s.sol +19 -0
  122. package/scripts/interactions/InteractTransferOwnership.s.sol +21 -0
  123. package/scripts/interactions/InteractUpdateMbRecencyCheck.s.sol +27 -0
  124. package/scripts/interactions/InteractUpdateMediaChunkCount.s.sol +27 -0
  125. package/scripts/interactions/InteractUpdateMediaChunkSize.s.sol +27 -0
  126. package/scripts/interactions/helpers/AlphaHelper.sol +149 -0
  127. package/scripts/interactions/helpers/RiverConfigValues.sol +22 -0
  128. package/scripts/interactions/interfaces/IL1StandardBridge.sol +35 -0
  129. package/scripts/interactions/interfaces/IL2StandardBridge.sol +69 -0
  130. package/src/airdrop/drop/DropBase.sol +210 -0
  131. package/src/airdrop/drop/DropClaim.sol +55 -0
  132. package/src/airdrop/drop/DropFacet.sol +176 -0
  133. package/src/airdrop/drop/DropGroup.sol +111 -0
  134. package/src/airdrop/drop/DropStorage.sol +23 -0
  135. package/src/airdrop/drop/IDropFacet.sol +136 -0
  136. package/src/airdrop/points/CheckIn.sol +71 -0
  137. package/src/airdrop/points/ITownsPoints.sol +64 -0
  138. package/src/airdrop/points/TownsPoints.sol +196 -0
  139. package/src/airdrop/points/TownsPointsStorage.sol +22 -0
  140. package/src/apps/BaseApp.sol +62 -0
  141. package/src/apps/ITownsApp.sol +28 -0
  142. package/src/apps/SchemaResolver.sol +170 -0
  143. package/src/apps/facets/attest/AttestationBase.sol +335 -0
  144. package/src/apps/facets/attest/AttestationLib.sol +64 -0
  145. package/src/apps/facets/attest/AttestationRegistry.sol +39 -0
  146. package/src/apps/facets/attest/AttestationStorage.sol +35 -0
  147. package/src/apps/facets/attest/IAttestationRegistry.sol +43 -0
  148. package/src/apps/facets/registry/AppRegistryBase.sol +403 -0
  149. package/src/apps/facets/registry/AppRegistryFacet.sol +173 -0
  150. package/src/apps/facets/registry/AppRegistryStorage.sol +53 -0
  151. package/src/apps/facets/registry/IAppRegistry.sol +159 -0
  152. package/src/apps/facets/schema/ISchema.sol +14 -0
  153. package/src/apps/facets/schema/SchemaBase.sol +88 -0
  154. package/src/apps/facets/schema/SchemaLib.sol +14 -0
  155. package/src/apps/facets/schema/SchemaRegistry.sol +51 -0
  156. package/src/apps/facets/schema/SchemaStorage.sol +34 -0
  157. package/src/apps/helpers/ISimpleApp.sol +51 -0
  158. package/src/apps/helpers/SimpleApp.sol +97 -0
  159. package/src/apps/helpers/SimpleAppStorage.sol +27 -0
  160. package/src/base/registry/facets/checker/EntitlementChecker.sol +237 -0
  161. package/src/base/registry/facets/checker/EntitlementCheckerStorage.sol +28 -0
  162. package/src/base/registry/facets/checker/IEntitlementChecker.sol +95 -0
  163. package/src/base/registry/facets/delegation/ISpaceDelegation.sol +69 -0
  164. package/src/base/registry/facets/delegation/SpaceDelegationFacet.sol +250 -0
  165. package/src/base/registry/facets/delegation/SpaceDelegationStorage.sol +35 -0
  166. package/src/base/registry/facets/distribution/v1/IRewardsDistribution.sol +51 -0
  167. package/src/base/registry/facets/distribution/v1/RewardsDistribution.sol +439 -0
  168. package/src/base/registry/facets/distribution/v1/RewardsDistributionStorage.sol +32 -0
  169. package/src/base/registry/facets/distribution/v2/DelegationProxy.sol +53 -0
  170. package/src/base/registry/facets/distribution/v2/IRewardsDistribution.sol +372 -0
  171. package/src/base/registry/facets/distribution/v2/RewardsDistributionBase.sol +299 -0
  172. package/src/base/registry/facets/distribution/v2/RewardsDistributionStorage.sol +37 -0
  173. package/src/base/registry/facets/distribution/v2/RewardsDistributionV2.sol +392 -0
  174. package/src/base/registry/facets/distribution/v2/StakingRewards.sol +466 -0
  175. package/src/base/registry/facets/mainnet/ICrossDomainMessenger.sol +58 -0
  176. package/src/base/registry/facets/mainnet/IMainnetDelegation.sol +127 -0
  177. package/src/base/registry/facets/mainnet/MainnetDelegation.sol +119 -0
  178. package/src/base/registry/facets/mainnet/MainnetDelegationBase.sol +274 -0
  179. package/src/base/registry/facets/mainnet/MainnetDelegationStorage.sol +36 -0
  180. package/src/base/registry/facets/operator/INodeOperator.sol +91 -0
  181. package/src/base/registry/facets/operator/NodeOperatorFacet.sol +189 -0
  182. package/src/base/registry/facets/operator/NodeOperatorStorage.sol +39 -0
  183. package/src/base/registry/facets/xchain/IXChain.sol +54 -0
  184. package/src/base/registry/facets/xchain/XChain.sol +158 -0
  185. package/src/base/registry/facets/xchain/XChainCheckLib.sol +105 -0
  186. package/src/base/registry/facets/xchain/XChainLib.sol +46 -0
  187. package/src/diamond/facets/beacon/UpgradeableBeacon.sol +38 -0
  188. package/src/diamond/facets/beacon/UpgradeableBeaconFacet.sol +34 -0
  189. package/src/diamond/facets/governance/votes/Checkpoints.sol +642 -0
  190. package/src/diamond/facets/governance/votes/Votes.sol +63 -0
  191. package/src/diamond/facets/governance/votes/VotesBase.sol +274 -0
  192. package/src/diamond/facets/governance/votes/VotesStorage.sol +21 -0
  193. package/src/diamond/facets/governance/votes/enumerable/IVotesEnumerable.sol +38 -0
  194. package/src/diamond/facets/governance/votes/enumerable/VotesEnumerable.sol +39 -0
  195. package/src/diamond/facets/governance/votes/enumerable/VotesEnumerableLib.sol +102 -0
  196. package/src/diamond/facets/metadata/IMetadata.sol +27 -0
  197. package/src/diamond/facets/metadata/MetadataFacet.sol +71 -0
  198. package/src/diamond/facets/token/ERC5643/ERC5643.sol +51 -0
  199. package/src/diamond/facets/token/ERC5643/ERC5643Base.sol +48 -0
  200. package/src/diamond/facets/token/ERC5643/ERC5643Storage.sol +26 -0
  201. package/src/diamond/facets/token/ERC5643/IERC5643.sol +44 -0
  202. package/src/diamond/facets/token/ERC721A/ERC721A.sol +270 -0
  203. package/src/diamond/facets/token/ERC721A/ERC721ABase.sol +829 -0
  204. package/src/diamond/facets/token/ERC721A/ERC721ANonTransferable.sol +21 -0
  205. package/src/diamond/facets/token/ERC721A/ERC721AStorage.sol +115 -0
  206. package/src/diamond/facets/token/ERC721A/IERC721A.sol +283 -0
  207. package/src/diamond/facets/token/ERC721A/extensions/ERC721AQueryable.sol +134 -0
  208. package/src/diamond/facets/token/ERC721A/extensions/IERC721AQueryable.sol +83 -0
  209. package/src/diamond/utils/Context.sol +19 -0
  210. package/src/factory/SpaceFactoryInit.sol +17 -0
  211. package/src/factory/facets/architect/Architect.sol +98 -0
  212. package/src/factory/facets/architect/ArchitectBase.sol +95 -0
  213. package/src/factory/facets/architect/ArchitectStorage.sol +28 -0
  214. package/src/factory/facets/architect/IArchitect.sol +155 -0
  215. package/src/factory/facets/architect/ImplementationStorage.sol +42 -0
  216. package/src/factory/facets/architect/pricing/IPricingModules.sol +41 -0
  217. package/src/factory/facets/architect/pricing/PricingModulesBase.sol +89 -0
  218. package/src/factory/facets/architect/pricing/PricingModulesFacet.sol +40 -0
  219. package/src/factory/facets/architect/pricing/PricingModulesStorage.sol +30 -0
  220. package/src/factory/facets/create/CreateSpace.sol +107 -0
  221. package/src/factory/facets/create/CreateSpaceLib.sol +335 -0
  222. package/src/factory/facets/create/ICreateSpace.sol +70 -0
  223. package/src/factory/facets/feature/FeatureConditionLib.sol +53 -0
  224. package/src/factory/facets/feature/FeatureManagerFacet.sol +66 -0
  225. package/src/factory/facets/feature/FeatureManagerLib.sol +168 -0
  226. package/src/factory/facets/feature/IFeatureManagerFacet.sol +73 -0
  227. package/src/factory/facets/partner/IPartnerRegistry.sol +56 -0
  228. package/src/factory/facets/partner/PartnerRegistry.sol +57 -0
  229. package/src/factory/facets/partner/PartnerRegistryBase.sol +132 -0
  230. package/src/factory/facets/partner/PartnerRegistryStorage.sol +40 -0
  231. package/src/factory/facets/platform/requirements/IPlatformRequirements.sol +143 -0
  232. package/src/factory/facets/platform/requirements/PlatformRequirementsBase.sol +124 -0
  233. package/src/factory/facets/platform/requirements/PlatformRequirementsFacet.sol +122 -0
  234. package/src/factory/facets/platform/requirements/PlatformRequirementsStorage.sol +41 -0
  235. package/src/factory/facets/registry/IImplementationRegistry.sol +46 -0
  236. package/src/factory/facets/registry/ImplementationRegistry.sol +64 -0
  237. package/src/factory/facets/registry/ImplementationRegistryStorage.sol +28 -0
  238. package/src/factory/facets/wallet-link/IWalletLink.sol +218 -0
  239. package/src/factory/facets/wallet-link/WalletLink.sol +108 -0
  240. package/src/factory/facets/wallet-link/WalletLinkBase.sol +492 -0
  241. package/src/factory/facets/wallet-link/interfaces/IDelegateRegistry.sol +63 -0
  242. package/src/factory/facets/wallet-link/interfaces/IDelegateRegistryV1.sol +35 -0
  243. package/src/factory/facets/wallet-link/interfaces/ISCL_EIP6565.sol +24 -0
  244. package/src/factory/facets/wallet-link/libraries/SolanaUtils.sol +161 -0
  245. package/src/factory/facets/wallet-link/libraries/WalletLib.sol +62 -0
  246. package/src/river/registry/facets/config/IRiverConfig.sol +117 -0
  247. package/src/river/registry/facets/config/RiverConfig.sol +174 -0
  248. package/src/river/registry/facets/node/INodeRegistry.sol +69 -0
  249. package/src/river/registry/facets/node/NodeRegistry.sol +143 -0
  250. package/src/river/registry/facets/operator/IOperatorRegistry.sol +28 -0
  251. package/src/river/registry/facets/operator/OperatorRegistry.sol +86 -0
  252. package/src/river/registry/facets/stream/IStreamRegistry.sol +184 -0
  253. package/src/river/registry/facets/stream/StreamRegistry.sol +396 -0
  254. package/src/river/registry/libraries/RegistryErrors.sol +24 -0
  255. package/src/river/registry/libraries/RegistryStorage.sol +181 -0
  256. package/src/router/ISwapRouter.sol +226 -0
  257. package/src/router/Permit2Hash.sol +92 -0
  258. package/src/router/SwapRouter.sol +463 -0
  259. package/src/router/SwapRouterStorage.sol +21 -0
  260. package/src/spaces/entitlements/ICrossChainEntitlement.sol +22 -0
  261. package/src/spaces/entitlements/IEntitlement.sol +61 -0
  262. package/src/spaces/entitlements/PolymarketEntitlement.sol +79 -0
  263. package/src/spaces/entitlements/poap/IPOAP.sol +26 -0
  264. package/src/spaces/entitlements/poap/PoapEntitlement.sol +56 -0
  265. package/src/spaces/entitlements/rule/IRuleEntitlement.sol +174 -0
  266. package/src/spaces/entitlements/rule/RuleEntitlement.sol +183 -0
  267. package/src/spaces/entitlements/rule/RuleEntitlementV2.sol +219 -0
  268. package/src/spaces/entitlements/user/IUserEntitlement.sol +24 -0
  269. package/src/spaces/entitlements/user/UserEntitlement.sol +273 -0
  270. package/src/spaces/facets/DependencyLib.sol +60 -0
  271. package/src/spaces/facets/Entitled.sol +172 -0
  272. package/src/spaces/facets/Permissions.sol +21 -0
  273. package/src/spaces/facets/account/AppAccount.sol +93 -0
  274. package/src/spaces/facets/account/AppAccountBase.sol +275 -0
  275. package/src/spaces/facets/account/AppAccountStorage.sol +63 -0
  276. package/src/spaces/facets/account/IAppAccount.sol +71 -0
  277. package/src/spaces/facets/account/SignerFacet.sol +26 -0
  278. package/src/spaces/facets/banning/Banning.sol +41 -0
  279. package/src/spaces/facets/banning/BanningBase.sol +33 -0
  280. package/src/spaces/facets/banning/BanningStorage.sol +23 -0
  281. package/src/spaces/facets/banning/IBanning.sol +35 -0
  282. package/src/spaces/facets/channels/ChannelBase.sol +87 -0
  283. package/src/spaces/facets/channels/ChannelService.sol +177 -0
  284. package/src/spaces/facets/channels/ChannelStorage.sol +34 -0
  285. package/src/spaces/facets/channels/Channels.sol +80 -0
  286. package/src/spaces/facets/channels/IChannel.sol +98 -0
  287. package/src/spaces/facets/dispatcher/DispatcherBase.sol +86 -0
  288. package/src/spaces/facets/dispatcher/DispatcherStorage.sol +21 -0
  289. package/src/spaces/facets/dispatcher/IDispatcher.sol +6 -0
  290. package/src/spaces/facets/entitlements/EntitlementsManager.sol +49 -0
  291. package/src/spaces/facets/entitlements/EntitlementsManagerBase.sol +87 -0
  292. package/src/spaces/facets/entitlements/EntitlementsManagerService.sol +142 -0
  293. package/src/spaces/facets/entitlements/EntitlementsManagerStorage.sol +34 -0
  294. package/src/spaces/facets/entitlements/IEntitlementsManager.sol +67 -0
  295. package/src/spaces/facets/entitlements/extensions/EntitlementDataQueryable.sol +153 -0
  296. package/src/spaces/facets/entitlements/extensions/IEntitlementDataQueryable.sol +32 -0
  297. package/src/spaces/facets/executor/ExecutorBase.sol +564 -0
  298. package/src/spaces/facets/executor/ExecutorFacet.sol +178 -0
  299. package/src/spaces/facets/executor/ExecutorStorage.sol +99 -0
  300. package/src/spaces/facets/executor/GroupLib.sol +128 -0
  301. package/src/spaces/facets/executor/IExecutor.sol +287 -0
  302. package/src/spaces/facets/executor/hooks/HookBase.sol +172 -0
  303. package/src/spaces/facets/executor/hooks/HookLib.sol +38 -0
  304. package/src/spaces/facets/executor/hooks/IHookBase.sol +48 -0
  305. package/src/spaces/facets/gated/EntitlementGated.sol +59 -0
  306. package/src/spaces/facets/gated/EntitlementGatedBase.sol +324 -0
  307. package/src/spaces/facets/gated/EntitlementGatedStorage.sol +29 -0
  308. package/src/spaces/facets/gated/IEntitlementGated.sol +55 -0
  309. package/src/spaces/facets/guardian/GuardianBase.sol +80 -0
  310. package/src/spaces/facets/guardian/GuardianFacet.sol +43 -0
  311. package/src/spaces/facets/guardian/GuardianStorage.sol +27 -0
  312. package/src/spaces/facets/guardian/IGuardian.sol +54 -0
  313. package/src/spaces/facets/membership/IMembership.sol +216 -0
  314. package/src/spaces/facets/membership/MembershipBase.sol +272 -0
  315. package/src/spaces/facets/membership/MembershipFacet.sol +191 -0
  316. package/src/spaces/facets/membership/MembershipStorage.sol +40 -0
  317. package/src/spaces/facets/membership/join/MembershipJoin.sol +547 -0
  318. package/src/spaces/facets/membership/metadata/IMembershipMetadata.sol +9 -0
  319. package/src/spaces/facets/membership/metadata/MembershipMetadata.sol +32 -0
  320. package/src/spaces/facets/membership/pricing/IMembershipPricing.sol +18 -0
  321. package/src/spaces/facets/membership/pricing/fixed/FixedPricing.sol +29 -0
  322. package/src/spaces/facets/membership/pricing/fixed/FixedPricingStorage.sol +27 -0
  323. package/src/spaces/facets/membership/pricing/tiered/TieredLogPricingOracleV2.sol +148 -0
  324. package/src/spaces/facets/membership/pricing/tiered/TieredLogPricingOracleV3.sol +137 -0
  325. package/src/spaces/facets/membership/token/MembershipToken.sol +25 -0
  326. package/src/spaces/facets/owner/ISpaceOwner.sol +85 -0
  327. package/src/spaces/facets/owner/SpaceOwner.sol +174 -0
  328. package/src/spaces/facets/owner/SpaceOwnerBase.sol +121 -0
  329. package/src/spaces/facets/owner/SpaceOwnerStorage.sol +41 -0
  330. package/src/spaces/facets/owner/SpaceOwnerUriBase.sol +54 -0
  331. package/src/spaces/facets/points/PointsBase.sol +35 -0
  332. package/src/spaces/facets/prepay/IPrepay.sol +43 -0
  333. package/src/spaces/facets/prepay/PrepayBase.sol +27 -0
  334. package/src/spaces/facets/prepay/PrepayFacet.sol +59 -0
  335. package/src/spaces/facets/prepay/PrepayStorage.sol +26 -0
  336. package/src/spaces/facets/proxy/ISpaceProxyInitializer.sol +21 -0
  337. package/src/spaces/facets/proxy/SpaceProxy.sol +15 -0
  338. package/src/spaces/facets/proxy/SpaceProxyInitializer.sol +55 -0
  339. package/src/spaces/facets/referrals/IReferrals.sol +98 -0
  340. package/src/spaces/facets/referrals/ReferralsBase.sol +81 -0
  341. package/src/spaces/facets/referrals/ReferralsFacet.sol +65 -0
  342. package/src/spaces/facets/referrals/ReferralsStorage.sol +36 -0
  343. package/src/spaces/facets/review/IReview.sol +50 -0
  344. package/src/spaces/facets/review/ReviewFacet.sol +105 -0
  345. package/src/spaces/facets/review/ReviewStorage.sol +29 -0
  346. package/src/spaces/facets/roles/IRoles.sol +197 -0
  347. package/src/spaces/facets/roles/Roles.sol +123 -0
  348. package/src/spaces/facets/roles/RolesBase.sol +420 -0
  349. package/src/spaces/facets/roles/RolesStorage.sol +132 -0
  350. package/src/spaces/facets/swap/ISwapFacet.sol +91 -0
  351. package/src/spaces/facets/swap/SwapFacet.sol +290 -0
  352. package/src/spaces/facets/swap/SwapFacetStorage.sol +24 -0
  353. package/src/spaces/facets/tipping/ITipping.sol +80 -0
  354. package/src/spaces/facets/tipping/TippingBase.sol +73 -0
  355. package/src/spaces/facets/tipping/TippingFacet.sol +123 -0
  356. package/src/spaces/facets/treasury/ITreasury.sol +64 -0
  357. package/src/spaces/facets/treasury/Treasury.sol +82 -0
  358. package/src/spaces/facets/xchain/SpaceEntitlementGated.sol +62 -0
  359. package/src/tokens/Member.sol +246 -0
  360. package/src/tokens/lock/ILock.sol +42 -0
  361. package/src/tokens/lock/LockBase.sol +64 -0
  362. package/src/tokens/lock/LockFacet.sol +44 -0
  363. package/src/tokens/lock/LockStorage.sol +26 -0
  364. package/src/tokens/mainnet/claimer/AuthorizedClaimerStorage.sol +26 -0
  365. package/src/tokens/mainnet/claimer/AuthorizedClaimers.sol +84 -0
  366. package/src/tokens/mainnet/claimer/IAuthorizedClaimers.sol +36 -0
  367. package/src/tokens/mainnet/delegation/ProxyBatchDelegation.sol +86 -0
  368. package/src/tokens/migration/ITokenMigration.sol +35 -0
  369. package/src/tokens/migration/TokenMigrationFacet.sol +86 -0
  370. package/src/tokens/migration/TokenMigrationStorage.sol +27 -0
  371. package/src/tokens/towns/base/IERC7802.sol +30 -0
  372. package/src/tokens/towns/base/IOptimismMintableERC20.sol +31 -0
  373. package/src/tokens/towns/base/ISemver.sol +13 -0
  374. package/src/tokens/towns/base/Towns.sol +283 -0
  375. package/src/tokens/towns/base/TownsDeployer.sol +32 -0
  376. package/src/tokens/towns/base/TownsLib.sol +31 -0
  377. package/src/tokens/towns/base/versions/TownsV2.sol +15 -0
  378. package/src/tokens/towns/mainnet/ITowns.sol +56 -0
  379. package/src/tokens/towns/mainnet/Towns.sol +220 -0
  380. package/src/tokens/towns/mainnet/libs/TokenInflationLib.sol +89 -0
  381. package/src/tokens/towns/multichain/Towns.sol +19 -0
  382. package/src/tokens/towns/multichain/wTowns.sol +18 -0
  383. package/src/utils/Airdrop.sol +156 -0
  384. package/src/utils/airdrop/merkle/IMerkleAirdrop.sol +55 -0
  385. package/src/utils/airdrop/merkle/MerkleAirdrop.sol +118 -0
  386. package/src/utils/airdrop/merkle/MerkleAirdropStorage.sol +29 -0
  387. package/src/utils/interfaces/AggregatorV3Interface.sol +37 -0
  388. package/src/utils/interfaces/IMulticall.sol +10 -0
  389. package/src/utils/interfaces/IWETH.sol +10 -0
  390. package/src/utils/libraries/BasisPoints.sol +24 -0
  391. package/src/utils/libraries/Create2Utils.sol +74 -0
  392. package/src/utils/libraries/CurrencyTransfer.sol +99 -0
  393. package/src/utils/libraries/CustomRevert.sol +49 -0
  394. package/src/utils/libraries/Factory.sol +66 -0
  395. package/src/utils/libraries/StringSet.sol +190 -0
  396. package/src/utils/libraries/Validator.sol +31 -0
@@ -0,0 +1,30 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.23;
3
+
4
+ // interfaces
5
+ import {IDiamond} from "@towns-protocol/diamond/src/Diamond.sol";
6
+ import {IERC721AQueryable} from "src/diamond/facets/token/ERC721A/extensions/IERC721AQueryable.sol";
7
+
8
+ // libraries
9
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
10
+
11
+ library DeployERC721AQueryable {
12
+ function selectors() internal pure returns (bytes4[] memory res) {
13
+ res = new bytes4[](4);
14
+ res[0] = IERC721AQueryable.explicitOwnershipOf.selector;
15
+ res[1] = IERC721AQueryable.explicitOwnershipsOf.selector;
16
+ res[2] = IERC721AQueryable.tokensOfOwnerIn.selector;
17
+ res[3] = IERC721AQueryable.tokensOfOwner.selector;
18
+ }
19
+
20
+ function makeCut(
21
+ address facetAddress,
22
+ IDiamond.FacetCutAction action
23
+ ) internal pure returns (IDiamond.FacetCut memory) {
24
+ return IDiamond.FacetCut(facetAddress, action, selectors());
25
+ }
26
+
27
+ function deploy() internal returns (address) {
28
+ return LibDeploy.deployCode("ERC721AQueryable.sol", "");
29
+ }
30
+ }
@@ -0,0 +1,49 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity ^0.8.23;
3
+
4
+ // interfaces
5
+ import {IDiamond} from "@towns-protocol/diamond/src/IDiamond.sol";
6
+
7
+ // libraries
8
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
9
+ import {DynamicArrayLib} from "solady/utils/DynamicArrayLib.sol";
10
+
11
+ // contracts
12
+ import {EntitlementChecker} from "src/base/registry/facets/checker/EntitlementChecker.sol";
13
+
14
+ library DeployEntitlementChecker {
15
+ using DynamicArrayLib for DynamicArrayLib.DynamicArray;
16
+
17
+ function selectors() internal pure returns (bytes4[] memory res) {
18
+ DynamicArrayLib.DynamicArray memory arr = DynamicArrayLib.p().reserve(9);
19
+ arr.p(EntitlementChecker.registerNode.selector);
20
+ arr.p(EntitlementChecker.unregisterNode.selector);
21
+ arr.p(EntitlementChecker.isValidNode.selector);
22
+ arr.p(EntitlementChecker.getNodeCount.selector);
23
+ arr.p(EntitlementChecker.getNodeAtIndex.selector);
24
+ arr.p(EntitlementChecker.getRandomNodes.selector);
25
+ arr.p(EntitlementChecker.requestEntitlementCheck.selector);
26
+ arr.p(EntitlementChecker.requestEntitlementCheckV2.selector);
27
+ arr.p(EntitlementChecker.getNodesByOperator.selector);
28
+
29
+ bytes32[] memory selectors_ = arr.asBytes32Array();
30
+ assembly ("memory-safe") {
31
+ res := selectors_
32
+ }
33
+ }
34
+
35
+ function makeCut(
36
+ address facetAddress,
37
+ IDiamond.FacetCutAction action
38
+ ) internal pure returns (IDiamond.FacetCut memory) {
39
+ return IDiamond.FacetCut(facetAddress, action, selectors());
40
+ }
41
+
42
+ function makeInitData() internal pure returns (bytes memory) {
43
+ return abi.encodeCall(EntitlementChecker.__EntitlementChecker_init, ());
44
+ }
45
+
46
+ function deploy() internal returns (address) {
47
+ return LibDeploy.deployCode("EntitlementChecker.sol", "");
48
+ }
49
+ }
@@ -0,0 +1,29 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.23;
3
+
4
+ // interfaces
5
+ import {IDiamond} from "@towns-protocol/diamond/src/Diamond.sol";
6
+ import {IEntitlementDataQueryable} from "src/spaces/facets/entitlements/extensions/IEntitlementDataQueryable.sol";
7
+
8
+ // libraries
9
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
10
+
11
+ library DeployEntitlementDataQueryable {
12
+ function selectors() internal pure returns (bytes4[] memory res) {
13
+ res = new bytes4[](3);
14
+ res[0] = IEntitlementDataQueryable.getEntitlementDataByPermission.selector;
15
+ res[1] = IEntitlementDataQueryable.getChannelEntitlementDataByPermission.selector;
16
+ res[2] = IEntitlementDataQueryable.getCrossChainEntitlementData.selector;
17
+ }
18
+
19
+ function makeCut(
20
+ address facetAddress,
21
+ IDiamond.FacetCutAction action
22
+ ) internal pure returns (IDiamond.FacetCut memory) {
23
+ return IDiamond.FacetCut(facetAddress, action, selectors());
24
+ }
25
+
26
+ function deploy() internal returns (address) {
27
+ return LibDeploy.deployCode("EntitlementDataQueryable.sol", "");
28
+ }
29
+ }
@@ -0,0 +1,33 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.23;
3
+
4
+ // interfaces
5
+ import {IDiamond} from "@towns-protocol/diamond/src/Diamond.sol";
6
+ import {IEntitlementsManager} from "src/spaces/facets/entitlements/IEntitlementsManager.sol";
7
+
8
+ // libraries
9
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
10
+
11
+ library DeployEntitlementsManager {
12
+ function selectors() internal pure returns (bytes4[] memory res) {
13
+ res = new bytes4[](7);
14
+ res[0] = IEntitlementsManager.addImmutableEntitlements.selector;
15
+ res[1] = IEntitlementsManager.addEntitlementModule.selector;
16
+ res[2] = IEntitlementsManager.removeEntitlementModule.selector;
17
+ res[3] = IEntitlementsManager.getEntitlements.selector;
18
+ res[4] = IEntitlementsManager.getEntitlement.selector;
19
+ res[5] = IEntitlementsManager.isEntitledToSpace.selector;
20
+ res[6] = IEntitlementsManager.isEntitledToChannel.selector;
21
+ }
22
+
23
+ function makeCut(
24
+ address facetAddress,
25
+ IDiamond.FacetCutAction action
26
+ ) internal pure returns (IDiamond.FacetCut memory) {
27
+ return IDiamond.FacetCut(facetAddress, action, selectors());
28
+ }
29
+
30
+ function deploy() internal returns (address) {
31
+ return LibDeploy.deployCode("EntitlementsManager.sol", "");
32
+ }
33
+ }
@@ -0,0 +1,60 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.23;
3
+
4
+ // interfaces
5
+ import {IDiamond} from "@towns-protocol/diamond/src/Diamond.sol";
6
+ import {IExecutor} from "src/spaces/facets/executor/IExecutor.sol";
7
+
8
+ // libraries
9
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
10
+ import {DynamicArrayLib} from "solady/utils/DynamicArrayLib.sol";
11
+
12
+ library DeployExecutorFacet {
13
+ using DynamicArrayLib for DynamicArrayLib.DynamicArray;
14
+
15
+ function selectors() internal pure returns (bytes4[] memory res) {
16
+ DynamicArrayLib.DynamicArray memory arr = DynamicArrayLib.p().reserve(18);
17
+
18
+ // Access Management
19
+ arr.p(IExecutor.grantAccess.selector);
20
+ arr.p(IExecutor.revokeAccess.selector);
21
+ arr.p(IExecutor.renounceAccess.selector);
22
+ arr.p(IExecutor.setGuardian.selector);
23
+ arr.p(IExecutor.setGroupDelay.selector);
24
+ arr.p(IExecutor.setGroupExpiration.selector);
25
+ arr.p(IExecutor.grantAccessWithExpiration.selector);
26
+
27
+ // Target Management
28
+ arr.p(IExecutor.setTargetFunctionGroup.selector);
29
+ arr.p(IExecutor.setTargetDisabled.selector);
30
+
31
+ // Operation Management
32
+ arr.p(IExecutor.scheduleOperation.selector);
33
+ arr.p(IExecutor.execute.selector);
34
+ arr.p(IExecutor.cancel.selector);
35
+
36
+ // Getters
37
+ arr.p(IExecutor.hasAccess.selector);
38
+ arr.p(IExecutor.getAccess.selector);
39
+ arr.p(IExecutor.getGroupDelay.selector);
40
+ arr.p(IExecutor.getScheduleTimepoint.selector);
41
+ arr.p(IExecutor.onExecution.selector);
42
+ arr.p(IExecutor.hashOperation.selector);
43
+
44
+ bytes32[] memory selectors_ = arr.asBytes32Array();
45
+ assembly ("memory-safe") {
46
+ res := selectors_
47
+ }
48
+ }
49
+
50
+ function makeCut(
51
+ address facetAddress,
52
+ IDiamond.FacetCutAction action
53
+ ) internal pure returns (IDiamond.FacetCut memory) {
54
+ return IDiamond.FacetCut(facetAddress, action, selectors());
55
+ }
56
+
57
+ function deploy() internal returns (address) {
58
+ return LibDeploy.deployCode("ExecutorFacet.sol", "");
59
+ }
60
+ }
@@ -0,0 +1,38 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.23;
3
+
4
+ //interfaces
5
+ import {IDiamond} from "@towns-protocol/diamond/src/IDiamond.sol";
6
+
7
+ //libraries
8
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
9
+
10
+ //contracts
11
+ import {FeatureManagerFacet} from "src/factory/facets/feature/FeatureManagerFacet.sol";
12
+
13
+ library DeployFeatureManager {
14
+ function selectors() internal pure returns (bytes4[] memory _selectors) {
15
+ _selectors = new bytes4[](6);
16
+ _selectors[0] = FeatureManagerFacet.setFeatureCondition.selector;
17
+ _selectors[1] = FeatureManagerFacet.getFeatureCondition.selector;
18
+ _selectors[2] = FeatureManagerFacet.getFeatureConditions.selector;
19
+ _selectors[3] = FeatureManagerFacet.getFeatureConditionsForSpace.selector;
20
+ _selectors[4] = FeatureManagerFacet.checkFeatureCondition.selector;
21
+ _selectors[5] = FeatureManagerFacet.disableFeatureCondition.selector;
22
+ }
23
+
24
+ function makeCut(
25
+ address facetAddress,
26
+ IDiamond.FacetCutAction action
27
+ ) internal pure returns (IDiamond.FacetCut memory) {
28
+ return IDiamond.FacetCut(facetAddress, action, selectors());
29
+ }
30
+
31
+ function makeInitData() internal pure returns (bytes memory) {
32
+ return abi.encodeCall(FeatureManagerFacet.__FeatureManagerFacet_init, ());
33
+ }
34
+
35
+ function deploy() internal returns (address) {
36
+ return LibDeploy.deployCode("FeatureManagerFacet.sol", "");
37
+ }
38
+ }
@@ -0,0 +1,39 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.23;
3
+
4
+ // interfaces
5
+ import {IDiamond} from "@towns-protocol/diamond/src/Diamond.sol";
6
+ import {IGuardian} from "src/spaces/facets/guardian/IGuardian.sol";
7
+
8
+ // libraries
9
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
10
+
11
+ // contracts
12
+ import {GuardianFacet} from "src/spaces/facets/guardian/GuardianFacet.sol";
13
+
14
+ library DeployGuardianFacet {
15
+ function selectors() internal pure returns (bytes4[] memory res) {
16
+ res = new bytes4[](6);
17
+ res[0] = IGuardian.enableGuardian.selector;
18
+ res[1] = IGuardian.guardianCooldown.selector;
19
+ res[2] = IGuardian.disableGuardian.selector;
20
+ res[3] = IGuardian.isGuardianEnabled.selector;
21
+ res[4] = IGuardian.getDefaultCooldown.selector;
22
+ res[5] = IGuardian.setDefaultCooldown.selector;
23
+ }
24
+
25
+ function makeCut(
26
+ address facetAddress,
27
+ IDiamond.FacetCutAction action
28
+ ) internal pure returns (IDiamond.FacetCut memory) {
29
+ return IDiamond.FacetCut(facetAddress, action, selectors());
30
+ }
31
+
32
+ function makeInitData(uint256 cooldown) internal pure returns (bytes memory) {
33
+ return abi.encodeCall(GuardianFacet.__GuardianFacet_init, cooldown);
34
+ }
35
+
36
+ function deploy() internal returns (address) {
37
+ return LibDeploy.deployCode("GuardianFacet.sol", "");
38
+ }
39
+ }
@@ -0,0 +1,36 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.23;
3
+
4
+ // interfaces
5
+ import {IDiamond} from "@towns-protocol/diamond/src/IDiamond.sol";
6
+
7
+ // libraries
8
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
9
+
10
+ // contracts
11
+ import {ImplementationRegistryFacet} from "src/factory/facets/registry/ImplementationRegistry.sol";
12
+
13
+ library DeployImplementationRegistry {
14
+ function selectors() internal pure returns (bytes4[] memory _selectors) {
15
+ _selectors = new bytes4[](4);
16
+ _selectors[0] = ImplementationRegistryFacet.addImplementation.selector;
17
+ _selectors[1] = ImplementationRegistryFacet.approveImplementation.selector;
18
+ _selectors[2] = ImplementationRegistryFacet.getImplementation.selector;
19
+ _selectors[3] = ImplementationRegistryFacet.getLatestImplementation.selector;
20
+ }
21
+
22
+ function makeCut(
23
+ address facetAddress,
24
+ IDiamond.FacetCutAction action
25
+ ) internal pure returns (IDiamond.FacetCut memory) {
26
+ return IDiamond.FacetCut(facetAddress, action, selectors());
27
+ }
28
+
29
+ function makeInitData() internal pure returns (bytes memory) {
30
+ return abi.encodeCall(ImplementationRegistryFacet.__ImplementationRegistry_init, ());
31
+ }
32
+
33
+ function deploy() internal returns (address) {
34
+ return LibDeploy.deployCode("ImplementationRegistryFacet", "");
35
+ }
36
+ }
@@ -0,0 +1,43 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.23;
3
+
4
+ //interfaces
5
+
6
+ //libraries
7
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
8
+ import {DynamicArrayLib} from "solady/utils/DynamicArrayLib.sol";
9
+
10
+ //contracts
11
+ import {MainnetDelegation} from "src/base/registry/facets/mainnet/MainnetDelegation.sol";
12
+
13
+ library DeployMainnetDelegation {
14
+ using DynamicArrayLib for DynamicArrayLib.DynamicArray;
15
+
16
+ function selectors() internal pure returns (bytes4[] memory res) {
17
+ DynamicArrayLib.DynamicArray memory arr = DynamicArrayLib.p().reserve(11);
18
+ arr.p(MainnetDelegation.setProxyDelegation.selector);
19
+ arr.p(MainnetDelegation.setDelegationDigest.selector);
20
+ arr.p(MainnetDelegation.relayDelegations.selector);
21
+ arr.p(MainnetDelegation.getMainnetDelegators.selector);
22
+ arr.p(MainnetDelegation.getDepositIdByDelegator.selector);
23
+ arr.p(MainnetDelegation.getDelegationByDelegator.selector);
24
+ arr.p(MainnetDelegation.getMainnetDelegationsByOperator.selector);
25
+ arr.p(MainnetDelegation.getDelegatedStakeByOperator.selector);
26
+ arr.p(MainnetDelegation.getAuthorizedClaimer.selector);
27
+ arr.p(MainnetDelegation.getProxyDelegation.selector);
28
+ arr.p(MainnetDelegation.getMessenger.selector);
29
+
30
+ bytes32[] memory selectors_ = arr.asBytes32Array();
31
+ assembly ("memory-safe") {
32
+ res := selectors_
33
+ }
34
+ }
35
+
36
+ function makeInitData(address messenger) internal pure returns (bytes memory) {
37
+ return abi.encodeCall(MainnetDelegation.__MainnetDelegation_init, (messenger));
38
+ }
39
+
40
+ function deploy() internal returns (address) {
41
+ return LibDeploy.deployCode("MainnetDelegation.sol", "");
42
+ }
43
+ }
@@ -0,0 +1,77 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.23;
3
+
4
+ // interfaces
5
+ import {IDiamond} from "@towns-protocol/diamond/src/Diamond.sol";
6
+ import {IMembership} from "src/spaces/facets/membership/IMembership.sol";
7
+
8
+ // libraries
9
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
10
+ import {DynamicArrayLib} from "solady/utils/DynamicArrayLib.sol";
11
+
12
+ library DeployMembership {
13
+ using DynamicArrayLib for DynamicArrayLib.DynamicArray;
14
+
15
+ function selectors() internal pure returns (bytes4[] memory res) {
16
+ DynamicArrayLib.DynamicArray memory arr = DynamicArrayLib.p().reserve(22);
17
+
18
+ // Funds
19
+ arr.p(IMembership.revenue.selector);
20
+
21
+ // Minting
22
+ arr.p(bytes4(keccak256("joinSpace(uint8,bytes)"))); // Unified joinSpace
23
+ arr.p(bytes4(keccak256("joinSpace(address)"))); // Legacy joinSpace
24
+ arr.p(IMembership.joinSpaceWithReferral.selector);
25
+ arr.p(IMembership.renewMembership.selector);
26
+
27
+ arr.p(IMembership.expiresAt.selector);
28
+
29
+ // Duration
30
+ arr.p(IMembership.getMembershipDuration.selector);
31
+ arr.p(IMembership.setMembershipDuration.selector);
32
+
33
+ // Pricing Module
34
+ arr.p(IMembership.setMembershipPricingModule.selector);
35
+ arr.p(IMembership.getMembershipPricingModule.selector);
36
+
37
+ // Pricing
38
+ arr.p(IMembership.setMembershipPrice.selector);
39
+ arr.p(IMembership.getMembershipPrice.selector);
40
+ arr.p(IMembership.getMembershipRenewalPrice.selector);
41
+ arr.p(IMembership.getProtocolFee.selector);
42
+
43
+ // Allocation
44
+ arr.p(IMembership.setMembershipFreeAllocation.selector);
45
+ arr.p(IMembership.getMembershipFreeAllocation.selector);
46
+
47
+ // Limits
48
+ arr.p(IMembership.setMembershipLimit.selector);
49
+ arr.p(IMembership.getMembershipLimit.selector);
50
+
51
+ // Currency
52
+ arr.p(IMembership.getMembershipCurrency.selector);
53
+
54
+ // Image
55
+ arr.p(IMembership.setMembershipImage.selector);
56
+ arr.p(IMembership.getMembershipImage.selector);
57
+
58
+ // Factory
59
+ arr.p(IMembership.getSpaceFactory.selector);
60
+
61
+ bytes32[] memory selectors_ = arr.asBytes32Array();
62
+ assembly ("memory-safe") {
63
+ res := selectors_
64
+ }
65
+ }
66
+
67
+ function makeCut(
68
+ address facetAddress,
69
+ IDiamond.FacetCutAction action
70
+ ) internal pure returns (IDiamond.FacetCut memory) {
71
+ return IDiamond.FacetCut(facetAddress, action, selectors());
72
+ }
73
+
74
+ function deploy() internal returns (address) {
75
+ return LibDeploy.deployCode("MembershipFacet.sol", "");
76
+ }
77
+ }
@@ -0,0 +1,30 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.23;
3
+
4
+ //interfaces
5
+ import {IDiamond} from "@towns-protocol/diamond/src/Diamond.sol";
6
+ import {IMembershipMetadata} from "src/spaces/facets/membership/metadata/IMembershipMetadata.sol";
7
+
8
+ //libraries
9
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
10
+
11
+ //contracts
12
+
13
+ library DeployMembershipMetadata {
14
+ function selectors() internal pure returns (bytes4[] memory res) {
15
+ res = new bytes4[](2);
16
+ res[0] = IMembershipMetadata.refreshMetadata.selector;
17
+ res[1] = IMembershipMetadata.tokenURI.selector;
18
+ }
19
+
20
+ function makeCut(
21
+ address facetAddress,
22
+ IDiamond.FacetCutAction action
23
+ ) internal pure returns (IDiamond.FacetCut memory) {
24
+ return IDiamond.FacetCut(facetAddress, action, selectors());
25
+ }
26
+
27
+ function deploy() internal returns (address) {
28
+ return LibDeploy.deployCode("MembershipMetadata.sol", "");
29
+ }
30
+ }
@@ -0,0 +1,47 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.23;
3
+
4
+ // interfaces
5
+ import {IDiamond} from "@towns-protocol/diamond/src/Diamond.sol";
6
+ import {IERC721A} from "src/diamond/facets/token/ERC721A/IERC721A.sol";
7
+
8
+ // libraries
9
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
10
+ import {DynamicArrayLib} from "solady/utils/DynamicArrayLib.sol";
11
+
12
+ // contracts
13
+
14
+ library DeployMembershipToken {
15
+ using DynamicArrayLib for DynamicArrayLib.DynamicArray;
16
+
17
+ function selectorsExceptTokenURI() internal pure returns (bytes4[] memory res) {
18
+ DynamicArrayLib.DynamicArray memory arr = DynamicArrayLib.p().reserve(12);
19
+ arr.p(IERC721A.totalSupply.selector);
20
+ arr.p(IERC721A.balanceOf.selector);
21
+ arr.p(IERC721A.ownerOf.selector);
22
+ arr.p(IERC721A.transferFrom.selector);
23
+ arr.p(IERC721A.approve.selector);
24
+ arr.p(IERC721A.getApproved.selector);
25
+ arr.p(IERC721A.setApprovalForAll.selector);
26
+ arr.p(IERC721A.isApprovedForAll.selector);
27
+ arr.p(bytes4(keccak256("safeTransferFrom(address,address,uint256)")));
28
+ arr.p(bytes4(keccak256("safeTransferFrom(address,address,uint256,bytes)")));
29
+ arr.p(IERC721A.name.selector);
30
+ arr.p(IERC721A.symbol.selector);
31
+ bytes32[] memory selectors_ = arr.asBytes32Array();
32
+ assembly ("memory-safe") {
33
+ res := selectors_
34
+ }
35
+ }
36
+
37
+ function makeCut(
38
+ address facetAddress,
39
+ IDiamond.FacetCutAction action
40
+ ) internal pure returns (IDiamond.FacetCut memory) {
41
+ return IDiamond.FacetCut(facetAddress, action, selectorsExceptTokenURI());
42
+ }
43
+
44
+ function deploy() internal returns (address) {
45
+ return LibDeploy.deployCode("MembershipToken.sol", "");
46
+ }
47
+ }
@@ -0,0 +1,37 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.23;
3
+
4
+ //interfaces
5
+ import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
6
+ import {IDiamond} from "@towns-protocol/diamond/src/IDiamond.sol";
7
+
8
+ //libraries
9
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
10
+
11
+ //contracts
12
+ import {MerkleAirdrop} from "src/utils/airdrop/merkle/MerkleAirdrop.sol";
13
+
14
+ library DeployMerkleAirdrop {
15
+ function selectors() internal pure returns (bytes4[] memory res) {
16
+ res = new bytes4[](4);
17
+ res[0] = MerkleAirdrop.claim.selector;
18
+ res[1] = MerkleAirdrop.getMerkleRoot.selector;
19
+ res[2] = MerkleAirdrop.getToken.selector;
20
+ res[3] = MerkleAirdrop.getMessageHash.selector;
21
+ }
22
+
23
+ function makeCut(
24
+ address facetAddress,
25
+ IDiamond.FacetCutAction action
26
+ ) internal pure returns (IDiamond.FacetCut memory) {
27
+ return IDiamond.FacetCut(facetAddress, action, selectors());
28
+ }
29
+
30
+ function makeInitData(bytes32 merkleRoot, address token) internal pure returns (bytes memory) {
31
+ return abi.encodeCall(MerkleAirdrop.__MerkleAirdrop_init, (merkleRoot, IERC20(token)));
32
+ }
33
+
34
+ function deploy() internal returns (address) {
35
+ return LibDeploy.deployCode("MerkleAirdrop.sol", "");
36
+ }
37
+ }
@@ -0,0 +1,39 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.23;
3
+
4
+ //interfaces
5
+ import {IDiamond} from "@towns-protocol/diamond/src/IDiamond.sol";
6
+
7
+ //libraries
8
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
9
+
10
+ //contracts
11
+ import {MetadataFacet} from "src/diamond/facets/metadata/MetadataFacet.sol";
12
+
13
+ library DeployMetadata {
14
+ function selectors() internal pure returns (bytes4[] memory res) {
15
+ res = new bytes4[](4);
16
+ res[0] = MetadataFacet.contractType.selector;
17
+ res[1] = MetadataFacet.contractVersion.selector;
18
+ res[2] = MetadataFacet.contractURI.selector;
19
+ res[3] = MetadataFacet.setContractURI.selector;
20
+ }
21
+
22
+ function makeCut(
23
+ address facetAddress,
24
+ IDiamond.FacetCutAction action
25
+ ) internal pure returns (IDiamond.FacetCut memory) {
26
+ return IDiamond.FacetCut(facetAddress, action, selectors());
27
+ }
28
+
29
+ function makeInitData(
30
+ bytes32 contractType,
31
+ string memory contractURI
32
+ ) internal pure returns (bytes memory) {
33
+ return abi.encodeCall(MetadataFacet.__MetadataFacet_init, (contractType, contractURI));
34
+ }
35
+
36
+ function deploy() internal returns (address) {
37
+ return LibDeploy.deployCode("MetadataFacet.sol", "");
38
+ }
39
+ }
@@ -0,0 +1,33 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.23;
3
+
4
+ //interfaces
5
+ import {IDiamond} from "@towns-protocol/diamond/src/IDiamond.sol";
6
+
7
+ //libraries
8
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
9
+
10
+ //contracts
11
+ import {MockLegacyArchitect} from "test/mocks/legacy/MockLegacyArchitect.sol";
12
+
13
+ library DeployMockLegacyArchitect {
14
+ function selectors() internal pure returns (bytes4[] memory _selectors) {
15
+ _selectors = new bytes4[](1);
16
+ _selectors[0] = MockLegacyArchitect.createSpace.selector;
17
+ }
18
+
19
+ function makeCut(
20
+ address facetAddress,
21
+ IDiamond.FacetCutAction action
22
+ ) internal pure returns (IDiamond.FacetCut memory) {
23
+ return IDiamond.FacetCut(facetAddress, action, selectors());
24
+ }
25
+
26
+ function makeInitData() internal pure returns (bytes memory) {
27
+ return abi.encodeCall(MockLegacyArchitect.__Architect_init, ());
28
+ }
29
+
30
+ function deploy() internal returns (address) {
31
+ return LibDeploy.deployCode("MockLegacyArchitect.sol", "");
32
+ }
33
+ }