@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,49 @@
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
+ import {DynamicArrayLib} from "solady/utils/DynamicArrayLib.sol";
10
+
11
+ //contracts
12
+ import {NodeOperatorFacet} from "src/base/registry/facets/operator/NodeOperatorFacet.sol";
13
+
14
+ library DeployNodeOperator {
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(NodeOperatorFacet.registerOperator.selector);
20
+ arr.p(NodeOperatorFacet.isOperator.selector);
21
+ arr.p(NodeOperatorFacet.setOperatorStatus.selector);
22
+ arr.p(NodeOperatorFacet.getOperatorStatus.selector);
23
+ arr.p(NodeOperatorFacet.setCommissionRate.selector);
24
+ arr.p(NodeOperatorFacet.getCommissionRate.selector);
25
+ arr.p(NodeOperatorFacet.setClaimAddressForOperator.selector);
26
+ arr.p(NodeOperatorFacet.getClaimAddressForOperator.selector);
27
+ arr.p(NodeOperatorFacet.getOperators.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(NodeOperatorFacet.__NodeOperator_init, ());
44
+ }
45
+
46
+ function deploy() internal returns (address) {
47
+ return LibDeploy.deployCode("NodeOperatorFacet.sol", "");
48
+ }
49
+ }
@@ -0,0 +1,37 @@
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 {NodeRegistry} from "src/river/registry/facets/node/NodeRegistry.sol";
12
+
13
+ library DeployNodeRegistry {
14
+ function selectors() internal pure returns (bytes4[] memory res) {
15
+ res = new bytes4[](9);
16
+ res[0] = NodeRegistry.isNode.selector;
17
+ res[1] = NodeRegistry.registerNode.selector;
18
+ res[2] = NodeRegistry.removeNode.selector;
19
+ res[3] = NodeRegistry.updateNodeStatus.selector;
20
+ res[4] = NodeRegistry.updateNodeUrl.selector;
21
+ res[5] = NodeRegistry.getNode.selector;
22
+ res[6] = NodeRegistry.getNodeCount.selector;
23
+ res[7] = NodeRegistry.getAllNodeAddresses.selector;
24
+ res[8] = NodeRegistry.getAllNodes.selector;
25
+ }
26
+
27
+ function makeCut(
28
+ address facetAddress,
29
+ IDiamond.FacetCutAction action
30
+ ) internal pure returns (IDiamond.FacetCut memory) {
31
+ return IDiamond.FacetCut(facetAddress, action, selectors());
32
+ }
33
+
34
+ function deploy() internal returns (address) {
35
+ return LibDeploy.deployCode("NodeRegistry.sol", "");
36
+ }
37
+ }
@@ -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 {OperatorRegistry} from "src/river/registry/facets/operator/OperatorRegistry.sol";
12
+
13
+ library DeployOperatorRegistry {
14
+ function selectors() internal pure returns (bytes4[] memory res) {
15
+ res = new bytes4[](4);
16
+ res[0] = OperatorRegistry.approveOperator.selector;
17
+ res[1] = OperatorRegistry.isOperator.selector;
18
+ res[2] = OperatorRegistry.removeOperator.selector;
19
+ res[3] = OperatorRegistry.getAllOperators.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(address[] memory operators) internal pure returns (bytes memory) {
30
+ return abi.encodeCall(OperatorRegistry.__OperatorRegistry_init, (operators));
31
+ }
32
+
33
+ function deploy() internal returns (address) {
34
+ return LibDeploy.deployCode("OperatorRegistry.sol", "");
35
+ }
36
+ }
@@ -0,0 +1,41 @@
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 {PartnerRegistry} from "src/factory/facets/partner/PartnerRegistry.sol";
12
+
13
+ library DeployPartnerRegistry {
14
+ function selectors() internal pure returns (bytes4[] memory _selectors) {
15
+ _selectors = new bytes4[](9);
16
+ _selectors[0] = PartnerRegistry.registerPartner.selector;
17
+ _selectors[1] = PartnerRegistry.partnerInfo.selector;
18
+ _selectors[2] = PartnerRegistry.partnerFee.selector;
19
+ _selectors[3] = PartnerRegistry.updatePartner.selector;
20
+ _selectors[4] = PartnerRegistry.removePartner.selector;
21
+ _selectors[5] = PartnerRegistry.maxPartnerFee.selector;
22
+ _selectors[6] = PartnerRegistry.setMaxPartnerFee.selector;
23
+ _selectors[7] = PartnerRegistry.registryFee.selector;
24
+ _selectors[8] = PartnerRegistry.setRegistryFee.selector;
25
+ }
26
+
27
+ function makeCut(
28
+ address facetAddress,
29
+ IDiamond.FacetCutAction action
30
+ ) internal pure returns (IDiamond.FacetCut memory) {
31
+ return IDiamond.FacetCut(facetAddress, action, selectors());
32
+ }
33
+
34
+ function makeInitData() internal pure returns (bytes memory) {
35
+ return abi.encodeCall(PartnerRegistry.__PartnerRegistry_init, ());
36
+ }
37
+
38
+ function deploy() internal returns (address) {
39
+ return LibDeploy.deployCode("PartnerRegistry.sol", "");
40
+ }
41
+ }
@@ -0,0 +1,75 @@
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
+ import {DynamicArrayLib} from "solady/utils/DynamicArrayLib.sol";
10
+
11
+ // contracts
12
+ import {PlatformRequirementsFacet} from "src/factory/facets/platform/requirements/PlatformRequirementsFacet.sol";
13
+
14
+ library DeployPlatformRequirements {
15
+ using DynamicArrayLib for DynamicArrayLib.DynamicArray;
16
+
17
+ function selectors() internal pure returns (bytes4[] memory res) {
18
+ DynamicArrayLib.DynamicArray memory arr = DynamicArrayLib.p().reserve(17);
19
+ arr.p(PlatformRequirementsFacet.getFeeRecipient.selector);
20
+ arr.p(PlatformRequirementsFacet.getMembershipBps.selector);
21
+ arr.p(PlatformRequirementsFacet.getMembershipFee.selector);
22
+ arr.p(PlatformRequirementsFacet.getMembershipMintLimit.selector);
23
+ arr.p(PlatformRequirementsFacet.getMembershipDuration.selector);
24
+ arr.p(PlatformRequirementsFacet.setFeeRecipient.selector);
25
+ arr.p(PlatformRequirementsFacet.setMembershipBps.selector);
26
+ arr.p(PlatformRequirementsFacet.setMembershipFee.selector);
27
+ arr.p(PlatformRequirementsFacet.setMembershipMintLimit.selector);
28
+ arr.p(PlatformRequirementsFacet.setMembershipDuration.selector);
29
+ arr.p(PlatformRequirementsFacet.setMembershipMinPrice.selector);
30
+ arr.p(PlatformRequirementsFacet.getMembershipMinPrice.selector);
31
+ arr.p(PlatformRequirementsFacet.getDenominator.selector);
32
+ arr.p(PlatformRequirementsFacet.setSwapFees.selector);
33
+ arr.p(PlatformRequirementsFacet.getSwapFees.selector);
34
+ arr.p(PlatformRequirementsFacet.setRouterWhitelisted.selector);
35
+ arr.p(PlatformRequirementsFacet.isRouterWhitelisted.selector);
36
+
37
+ bytes32[] memory selectors_ = arr.asBytes32Array();
38
+ assembly ("memory-safe") {
39
+ res := selectors_
40
+ }
41
+ }
42
+
43
+ function makeCut(
44
+ address facetAddress,
45
+ IDiamond.FacetCutAction action
46
+ ) internal pure returns (IDiamond.FacetCut memory) {
47
+ return IDiamond.FacetCut(facetAddress, action, selectors());
48
+ }
49
+
50
+ function makeInitData(
51
+ address feeRecipient,
52
+ uint16 membershipBps,
53
+ uint256 membershipFee,
54
+ uint256 membershipMintLimit,
55
+ uint64 membershipDuration,
56
+ uint256 membershipMinPrice
57
+ ) internal pure returns (bytes memory) {
58
+ return
59
+ abi.encodeCall(
60
+ PlatformRequirementsFacet.__PlatformRequirements_init,
61
+ (
62
+ feeRecipient,
63
+ membershipBps,
64
+ membershipFee,
65
+ membershipMintLimit,
66
+ membershipDuration,
67
+ membershipMinPrice
68
+ )
69
+ );
70
+ }
71
+
72
+ function deploy() internal returns (address) {
73
+ return LibDeploy.deployCode("PlatformRequirementsFacet.sol", "");
74
+ }
75
+ }
@@ -0,0 +1,31 @@
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 {IPrepay} from "src/spaces/facets/prepay/IPrepay.sol";
7
+
8
+ //libraries
9
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
10
+
11
+ //contracts
12
+
13
+ library DeployPrepayFacet {
14
+ function selectors() internal pure returns (bytes4[] memory res) {
15
+ res = new bytes4[](3);
16
+ res[0] = IPrepay.prepayMembership.selector;
17
+ res[1] = IPrepay.prepaidMembershipSupply.selector;
18
+ res[2] = IPrepay.calculateMembershipPrepayFee.selector;
19
+ }
20
+
21
+ function makeCut(
22
+ address facetAddress,
23
+ IDiamond.FacetCutAction action
24
+ ) internal pure returns (IDiamond.FacetCut memory) {
25
+ return IDiamond.FacetCut(facetAddress, action, selectors());
26
+ }
27
+
28
+ function deploy() internal returns (address) {
29
+ return LibDeploy.deployCode("PrepayFacet.sol", "");
30
+ }
31
+ }
@@ -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 {PricingModulesFacet} from "src/factory/facets/architect/pricing/PricingModulesFacet.sol";
12
+
13
+ library DeployPricingModules {
14
+ function selectors() internal pure returns (bytes4[] memory _selectors) {
15
+ _selectors = new bytes4[](4);
16
+ _selectors[0] = PricingModulesFacet.addPricingModule.selector;
17
+ _selectors[1] = PricingModulesFacet.isPricingModule.selector;
18
+ _selectors[2] = PricingModulesFacet.removePricingModule.selector;
19
+ _selectors[3] = PricingModulesFacet.listPricingModules.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(address[] memory pricingModules) internal pure returns (bytes memory) {
30
+ return abi.encodeCall(PricingModulesFacet.__PricingModulesFacet_init, (pricingModules));
31
+ }
32
+
33
+ function deploy() internal returns (address) {
34
+ return LibDeploy.deployCode("PricingModulesFacet.sol", "");
35
+ }
36
+ }
@@ -0,0 +1,34 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ // interfaces
5
+ import {IDiamond} from "@towns-protocol/diamond/src/Diamond.sol";
6
+ import {IReferrals} from "src/spaces/facets/referrals/IReferrals.sol";
7
+
8
+ // libraries
9
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
10
+
11
+ library DeployReferrals {
12
+ function selectors() internal pure returns (bytes4[] memory res) {
13
+ res = new bytes4[](8);
14
+ res[0] = IReferrals.registerReferral.selector;
15
+ res[1] = IReferrals.referralInfo.selector;
16
+ res[2] = IReferrals.updateReferral.selector;
17
+ res[3] = IReferrals.removeReferral.selector;
18
+ res[4] = IReferrals.setMaxBpsFee.selector;
19
+ res[5] = IReferrals.maxBpsFee.selector;
20
+ res[6] = IReferrals.setDefaultBpsFee.selector;
21
+ res[7] = IReferrals.defaultBpsFee.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 deploy() internal returns (address) {
32
+ return LibDeploy.deployCode("ReferralsFacet.sol", "");
33
+ }
34
+ }
@@ -0,0 +1,31 @@
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 {IReview} from "src/spaces/facets/review/IReview.sol";
7
+
8
+ // libraries
9
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
10
+
11
+ // contracts
12
+
13
+ library DeployReviewFacet {
14
+ function selectors() internal pure returns (bytes4[] memory res) {
15
+ res = new bytes4[](3);
16
+ res[0] = IReview.setReview.selector;
17
+ res[1] = IReview.getReview.selector;
18
+ res[2] = IReview.getAllReviews.selector;
19
+ }
20
+
21
+ function makeCut(
22
+ address facetAddress,
23
+ IDiamond.FacetCutAction action
24
+ ) internal pure returns (IDiamond.FacetCut memory) {
25
+ return IDiamond.FacetCut(facetAddress, action, selectors());
26
+ }
27
+
28
+ function deploy() internal returns (address) {
29
+ return LibDeploy.deployCode("ReviewFacet.sol", "");
30
+ }
31
+ }
@@ -0,0 +1,76 @@
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
+ import {IRewardsDistribution} from "src/base/registry/facets/distribution/v2/IRewardsDistribution.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
+ import {RewardsDistributionV2} from "src/base/registry/facets/distribution/v2/RewardsDistributionV2.sol";
14
+
15
+ library DeployRewardsDistributionV2 {
16
+ using DynamicArrayLib for DynamicArrayLib.DynamicArray;
17
+
18
+ function selectors() internal pure returns (bytes4[] memory res) {
19
+ DynamicArrayLib.DynamicArray memory arr = DynamicArrayLib.p().reserve(27);
20
+ arr.p(IRewardsDistribution.upgradeDelegationProxy.selector);
21
+ arr.p(IRewardsDistribution.setRewardNotifier.selector);
22
+ arr.p(IRewardsDistribution.setPeriodRewardAmount.selector);
23
+ arr.p(IRewardsDistribution.stake.selector);
24
+ arr.p(IRewardsDistribution.permitAndStake.selector);
25
+ arr.p(IRewardsDistribution.stakeOnBehalf.selector);
26
+ arr.p(IRewardsDistribution.increaseStake.selector);
27
+ arr.p(IRewardsDistribution.permitAndIncreaseStake.selector);
28
+ arr.p(IRewardsDistribution.redelegate.selector);
29
+ arr.p(IRewardsDistribution.changeBeneficiary.selector);
30
+ arr.p(IRewardsDistribution.initiateWithdraw.selector);
31
+ arr.p(IRewardsDistribution.withdraw.selector);
32
+ arr.p(IRewardsDistribution.claimReward.selector);
33
+ arr.p(IRewardsDistribution.notifyRewardAmount.selector);
34
+ arr.p(IRewardsDistribution.stakingState.selector);
35
+ arr.p(IRewardsDistribution.stakedByDepositor.selector);
36
+ arr.p(IRewardsDistribution.getDepositsByDepositor.selector);
37
+ arr.p(IRewardsDistribution.treasureByBeneficiary.selector);
38
+ arr.p(IRewardsDistribution.depositById.selector);
39
+ arr.p(IRewardsDistribution.delegationProxyById.selector);
40
+ arr.p(IRewardsDistribution.isRewardNotifier.selector);
41
+ arr.p(IRewardsDistribution.lastTimeRewardDistributed.selector);
42
+ arr.p(IRewardsDistribution.currentRewardPerTokenAccumulated.selector);
43
+ arr.p(IRewardsDistribution.currentReward.selector);
44
+ arr.p(IRewardsDistribution.currentSpaceDelegationReward.selector);
45
+ arr.p(IRewardsDistribution.implementation.selector);
46
+ arr.p(IRewardsDistribution.getPeriodRewardAmount.selector);
47
+
48
+ bytes32[] memory selectors_ = arr.asBytes32Array();
49
+ assembly ("memory-safe") {
50
+ res := selectors_
51
+ }
52
+ }
53
+
54
+ function makeCut(
55
+ address facetAddress,
56
+ IDiamond.FacetCutAction action
57
+ ) internal pure returns (IDiamond.FacetCut memory) {
58
+ return IDiamond.FacetCut(facetAddress, action, selectors());
59
+ }
60
+
61
+ function makeInitData(
62
+ address stakeToken,
63
+ address rewardToken,
64
+ uint256 rewardDuration
65
+ ) internal pure returns (bytes memory) {
66
+ return
67
+ abi.encodeCall(
68
+ RewardsDistributionV2.__RewardsDistribution_init,
69
+ (stakeToken, rewardToken, rewardDuration)
70
+ );
71
+ }
72
+
73
+ function deploy() internal returns (address) {
74
+ return LibDeploy.deployCode("RewardsDistributionV2.sol", "");
75
+ }
76
+ }
@@ -0,0 +1,41 @@
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 {RiverConfig} from "src/river/registry/facets/config/RiverConfig.sol";
12
+
13
+ library DeployRiverConfig {
14
+ function selectors() internal pure returns (bytes4[] memory res) {
15
+ res = new bytes4[](9);
16
+ res[0] = RiverConfig.configurationExists.selector;
17
+ res[1] = RiverConfig.setConfiguration.selector;
18
+ res[2] = RiverConfig.deleteConfiguration.selector;
19
+ res[3] = RiverConfig.deleteConfigurationOnBlock.selector;
20
+ res[4] = RiverConfig.getConfiguration.selector;
21
+ res[5] = RiverConfig.getAllConfiguration.selector;
22
+ res[6] = RiverConfig.isConfigurationManager.selector;
23
+ res[7] = RiverConfig.approveConfigurationManager.selector;
24
+ res[8] = RiverConfig.removeConfigurationManager.selector;
25
+ }
26
+
27
+ function makeCut(
28
+ address facetAddress,
29
+ IDiamond.FacetCutAction action
30
+ ) internal pure returns (IDiamond.FacetCut memory) {
31
+ return IDiamond.FacetCut(facetAddress, action, selectors());
32
+ }
33
+
34
+ function makeInitData(address[] memory configManagers) internal pure returns (bytes memory) {
35
+ return abi.encodeCall(RiverConfig.__RiverConfig_init, (configManagers));
36
+ }
37
+
38
+ function deploy() internal returns (address) {
39
+ return LibDeploy.deployCode("RiverConfig.sol", "");
40
+ }
41
+ }
@@ -0,0 +1,48 @@
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 {IRoles} from "src/spaces/facets/roles/IRoles.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 DeployRoles {
13
+ using DynamicArrayLib for DynamicArrayLib.DynamicArray;
14
+
15
+ function selectors() internal pure returns (bytes4[] memory res) {
16
+ DynamicArrayLib.DynamicArray memory arr = DynamicArrayLib.p().reserve(13);
17
+ arr.p(IRoles.createRole.selector);
18
+ arr.p(IRoles.getRoles.selector);
19
+ arr.p(IRoles.getRoleById.selector);
20
+ arr.p(IRoles.updateRole.selector);
21
+ arr.p(IRoles.removeRole.selector);
22
+ arr.p(IRoles.addPermissionsToRole.selector);
23
+ arr.p(IRoles.removePermissionsFromRole.selector);
24
+ arr.p(IRoles.getPermissionsByRoleId.selector);
25
+ arr.p(IRoles.addRoleToEntitlement.selector);
26
+ arr.p(IRoles.removeRoleFromEntitlement.selector);
27
+ // channel permission overrides
28
+ arr.p(IRoles.setChannelPermissionOverrides.selector);
29
+ arr.p(IRoles.getChannelPermissionOverrides.selector);
30
+ arr.p(IRoles.clearChannelPermissionOverrides.selector);
31
+
32
+ bytes32[] memory selectors_ = arr.asBytes32Array();
33
+ assembly ("memory-safe") {
34
+ res := selectors_
35
+ }
36
+ }
37
+
38
+ function makeCut(
39
+ address facetAddress,
40
+ IDiamond.FacetCutAction action
41
+ ) internal pure returns (IDiamond.FacetCut memory) {
42
+ return IDiamond.FacetCut(facetAddress, action, selectors());
43
+ }
44
+
45
+ function deploy() internal returns (address) {
46
+ return LibDeploy.deployCode("Roles.sol", "");
47
+ }
48
+ }
@@ -0,0 +1,35 @@
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
+
9
+ //contracts
10
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
11
+ import {SchemaRegistry} from "src/apps/facets/schema/SchemaRegistry.sol";
12
+
13
+ library DeploySchemaRegistry {
14
+ function selectors() internal pure returns (bytes4[] memory _selectors) {
15
+ _selectors = new bytes4[](2);
16
+ _selectors[0] = SchemaRegistry.register.selector;
17
+ _selectors[1] = SchemaRegistry.getSchema.selector;
18
+ }
19
+
20
+ function makeCut(
21
+ address facetAddress,
22
+ IDiamond.FacetCutAction action
23
+ ) internal pure returns (IDiamond.FacetCut memory) {
24
+ return
25
+ IDiamond.FacetCut({
26
+ action: action,
27
+ facetAddress: facetAddress,
28
+ functionSelectors: selectors()
29
+ });
30
+ }
31
+
32
+ function deploy() internal returns (address) {
33
+ return LibDeploy.deployCode("SchemaRegistry.sol", "");
34
+ }
35
+ }
@@ -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/IDiamond.sol";
6
+
7
+ // libraries
8
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
9
+
10
+ // contracts
11
+ import {SignerFacet} from "src/spaces/facets/account/SignerFacet.sol";
12
+ import {ERC1271Facet} from "@towns-protocol/diamond/src/facets/accounts/ERC1271Facet.sol";
13
+ import {EIP712Facet} from "@towns-protocol/diamond/src/utils/cryptography/EIP712Facet.sol";
14
+ import {DynamicArrayLib} from "solady/utils/DynamicArrayLib.sol";
15
+
16
+ library DeploySignerFacet {
17
+ using DynamicArrayLib for DynamicArrayLib.DynamicArray;
18
+
19
+ function selectors() internal pure returns (bytes4[] memory res) {
20
+ DynamicArrayLib.DynamicArray memory arr = DynamicArrayLib.p().reserve(5);
21
+ arr.p(ERC1271Facet.isValidSignature.selector);
22
+ arr.p(ERC1271Facet.erc1271Signer.selector);
23
+ arr.p(EIP712Facet.DOMAIN_SEPARATOR.selector);
24
+ arr.p(EIP712Facet.nonces.selector);
25
+ arr.p(EIP712Facet.eip712Domain.selector);
26
+ bytes32[] memory selectors_ = arr.asBytes32Array();
27
+ assembly ("memory-safe") {
28
+ res := selectors_
29
+ }
30
+ }
31
+
32
+ function makeCut(
33
+ address facetAddress,
34
+ IDiamond.FacetCutAction action
35
+ ) internal pure returns (IDiamond.FacetCut memory) {
36
+ return
37
+ IDiamond.FacetCut({
38
+ action: action,
39
+ facetAddress: facetAddress,
40
+ functionSelectors: selectors()
41
+ });
42
+ }
43
+
44
+ function deploy() internal returns (address) {
45
+ return LibDeploy.deployCode("SignerFacet.sol", "");
46
+ }
47
+ }
@@ -0,0 +1,10 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity 0.8.29;
3
+
4
+ import {SimpleApp} from "src/apps/helpers/SimpleApp.sol";
5
+
6
+ library DeploySimpleApp {
7
+ function deploy() internal returns (address) {
8
+ return address(new SimpleApp());
9
+ }
10
+ }