@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,43 @@
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 {SpaceDelegationFacet} from "src/base/registry/facets/delegation/SpaceDelegationFacet.sol";
13
+
14
+ library DeploySpaceDelegation {
15
+ using DynamicArrayLib for DynamicArrayLib.DynamicArray;
16
+
17
+ function selectors() internal pure returns (bytes4[] memory res) {
18
+ DynamicArrayLib.DynamicArray memory arr = DynamicArrayLib.p().reserve(7);
19
+ arr.p(SpaceDelegationFacet.addSpaceDelegation.selector);
20
+ arr.p(SpaceDelegationFacet.removeSpaceDelegation.selector);
21
+ arr.p(SpaceDelegationFacet.getSpaceDelegation.selector);
22
+ arr.p(SpaceDelegationFacet.getSpaceDelegationsByOperator.selector);
23
+ arr.p(SpaceDelegationFacet.getTotalDelegation.selector);
24
+ arr.p(SpaceDelegationFacet.setSpaceFactory.selector);
25
+ arr.p(SpaceDelegationFacet.getSpaceFactory.selector);
26
+
27
+ bytes32[] memory selectors_ = arr.asBytes32Array();
28
+ assembly ("memory-safe") {
29
+ res := selectors_
30
+ }
31
+ }
32
+
33
+ function makeCut(
34
+ address facetAddress,
35
+ IDiamond.FacetCutAction action
36
+ ) internal pure returns (IDiamond.FacetCut memory) {
37
+ return IDiamond.FacetCut(facetAddress, action, selectors());
38
+ }
39
+
40
+ function deploy() internal returns (address) {
41
+ return LibDeploy.deployCode("SpaceDelegationFacet", "");
42
+ }
43
+ }
@@ -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
+
7
+ // libraries
8
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
9
+
10
+ // contracts
11
+ import {EntitlementGated} from "src/spaces/facets/gated/EntitlementGated.sol";
12
+
13
+ library DeploySpaceEntitlementGated {
14
+ function selectors() internal pure returns (bytes4[] memory res) {
15
+ res = new bytes4[](3);
16
+ res[0] = EntitlementGated.postEntitlementCheckResult.selector;
17
+ res[1] = EntitlementGated.postEntitlementCheckResultV2.selector;
18
+ res[2] = EntitlementGated.getRuleData.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("SpaceEntitlementGated.sol", "");
30
+ }
31
+ }
@@ -0,0 +1,33 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
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 {SpaceFactoryInit} from "src/factory/SpaceFactoryInit.sol";
12
+
13
+ library DeploySpaceFactoryInit {
14
+ function selectors() internal pure returns (bytes4[] memory _selectors) {
15
+ _selectors = new bytes4[](1);
16
+ _selectors[0] = SpaceFactoryInit.initialize.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(address _proxyInitializer) internal pure returns (bytes memory) {
27
+ return abi.encodeCall(SpaceFactoryInit.initialize, (_proxyInitializer));
28
+ }
29
+
30
+ function deploy() internal returns (address) {
31
+ return LibDeploy.deployCode("SpaceFactoryInit.sol", "");
32
+ }
33
+ }
@@ -0,0 +1,71 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.23;
3
+
4
+ //interfaces
5
+ import {IVotes} from "@openzeppelin/contracts/governance/utils/IVotes.sol";
6
+ import {IERC6372} from "@openzeppelin/contracts/interfaces/IERC6372.sol";
7
+ import {IDiamond} from "@towns-protocol/diamond/src/Diamond.sol";
8
+
9
+ //libraries
10
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
11
+ import {DynamicArrayLib} from "solady/utils/DynamicArrayLib.sol";
12
+ import {DeployERC721A} from "./DeployERC721A.s.sol";
13
+
14
+ //contracts
15
+ import {SpaceOwner} from "src/spaces/facets/owner/SpaceOwner.sol";
16
+
17
+ library DeploySpaceOwnerFacet {
18
+ using DynamicArrayLib for DynamicArrayLib.DynamicArray;
19
+
20
+ function selectors() internal pure returns (bytes4[] memory res) {
21
+ DynamicArrayLib.DynamicArray memory arr = DynamicArrayLib.p().reserve(33);
22
+ arr.p(SpaceOwner.setFactory.selector);
23
+ arr.p(SpaceOwner.getFactory.selector);
24
+ arr.p(SpaceOwner.setDefaultUri.selector);
25
+ arr.p(SpaceOwner.getDefaultUri.selector);
26
+ arr.p(SpaceOwner.nextTokenId.selector);
27
+ arr.p(SpaceOwner.mintSpace.selector);
28
+ arr.p(SpaceOwner.getSpaceInfo.selector);
29
+ arr.p(SpaceOwner.getSpaceByTokenId.selector);
30
+ arr.p(SpaceOwner.updateSpaceInfo.selector);
31
+
32
+ // Votes
33
+ arr.p(IERC6372.clock.selector);
34
+ arr.p(IERC6372.CLOCK_MODE.selector);
35
+ arr.p(IVotes.getVotes.selector);
36
+ arr.p(IVotes.getPastVotes.selector);
37
+ arr.p(IVotes.getPastTotalSupply.selector);
38
+ arr.p(IVotes.delegates.selector);
39
+ arr.p(IVotes.delegate.selector);
40
+ arr.p(IVotes.delegateBySig.selector);
41
+
42
+ {
43
+ bytes4[] memory selectors_ = DeployERC721A.selectors();
44
+ for (uint256 i; i < selectors_.length; ++i) {
45
+ arr.p(selectors_[i]);
46
+ }
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
+ string memory name,
63
+ string memory symbol
64
+ ) internal pure returns (bytes memory) {
65
+ return abi.encodeCall(SpaceOwner.__SpaceOwner_init, (name, symbol));
66
+ }
67
+
68
+ function deploy() internal returns (address) {
69
+ return LibDeploy.deployCode("SpaceOwner.sol", "");
70
+ }
71
+ }
@@ -0,0 +1,50 @@
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 {IStreamRegistry} from "src/river/registry/facets/stream/IStreamRegistry.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 DeployStreamRegistry {
15
+ using DynamicArrayLib for DynamicArrayLib.DynamicArray;
16
+
17
+ function selectors() internal pure returns (bytes4[] memory res) {
18
+ DynamicArrayLib.DynamicArray memory arr = DynamicArrayLib.p().reserve(14);
19
+ arr.p(IStreamRegistry.allocateStream.selector);
20
+ arr.p(IStreamRegistry.addStream.selector);
21
+ arr.p(IStreamRegistry.getStream.selector);
22
+ arr.p(IStreamRegistry.getStreamWithGenesis.selector);
23
+ arr.p(IStreamRegistry.setStreamLastMiniblockBatch.selector);
24
+ arr.p(IStreamRegistry.placeStreamOnNode.selector);
25
+ arr.p(IStreamRegistry.removeStreamFromNode.selector);
26
+ arr.p(IStreamRegistry.setStreamReplicationFactor.selector);
27
+ arr.p(IStreamRegistry.getStreamCount.selector);
28
+ arr.p(IStreamRegistry.getPaginatedStreams.selector);
29
+ arr.p(IStreamRegistry.isStream.selector);
30
+ arr.p(IStreamRegistry.getStreamCountOnNode.selector);
31
+ arr.p(IStreamRegistry.getPaginatedStreamsOnNode.selector);
32
+ arr.p(IStreamRegistry.syncNodesOnStreams.selector);
33
+
34
+ bytes32[] memory selectors_ = arr.asBytes32Array();
35
+ assembly ("memory-safe") {
36
+ res := selectors_
37
+ }
38
+ }
39
+
40
+ function makeCut(
41
+ address facetAddress,
42
+ IDiamond.FacetCutAction action
43
+ ) internal pure returns (IDiamond.FacetCut memory) {
44
+ return IDiamond.FacetCut(facetAddress, action, selectors());
45
+ }
46
+
47
+ function deploy() internal returns (address) {
48
+ return LibDeploy.deployCode("StreamRegistry.sol", "");
49
+ }
50
+ }
@@ -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 {ISwapFacet} from "src/spaces/facets/swap/ISwapFacet.sol";
7
+
8
+ // libraries
9
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
10
+
11
+ // contracts
12
+
13
+ library DeploySwapFacet {
14
+ function selectors() internal pure returns (bytes4[] memory res) {
15
+ res = new bytes4[](5);
16
+ res[0] = ISwapFacet.setSwapFeeConfig.selector;
17
+ res[1] = ISwapFacet.executeSwap.selector;
18
+ res[2] = ISwapFacet.executeSwapWithPermit.selector;
19
+ res[3] = ISwapFacet.getSwapFees.selector;
20
+ res[4] = ISwapFacet.getSwapRouter.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("SwapFacet.sol", "");
32
+ }
33
+ }
@@ -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/Diamond.sol";
6
+ import {ISwapRouter} from "../../../src/router/ISwapRouter.sol";
7
+
8
+ // libraries
9
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
10
+
11
+ // contracts
12
+ import {SwapRouter} from "../../../src/router/SwapRouter.sol";
13
+
14
+ library DeploySwapRouterFacet {
15
+ function selectors() internal pure returns (bytes4[] memory res) {
16
+ res = new bytes4[](5);
17
+ res[0] = ISwapRouter.executeSwap.selector;
18
+ res[1] = ISwapRouter.executeSwapWithPermit.selector;
19
+ res[2] = ISwapRouter.getETHInputFees.selector;
20
+ res[3] = ISwapRouter.getPermit2Nonce.selector;
21
+ res[4] = ISwapRouter.getPermit2MessageHash.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(address spaceFactory) internal pure returns (bytes memory) {
32
+ return abi.encodeCall(SwapRouter.__SwapRouter_init, spaceFactory);
33
+ }
34
+
35
+ function deploy() internal returns (address) {
36
+ return LibDeploy.deployCode("SwapRouter.sol", "");
37
+ }
38
+ }
@@ -0,0 +1,31 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.24;
3
+
4
+ // interfaces
5
+ import {IDiamond} from "@towns-protocol/diamond/src/Diamond.sol";
6
+ import {ITipping} from "src/spaces/facets/tipping/ITipping.sol";
7
+
8
+ // libraries
9
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
10
+
11
+ library DeployTipping {
12
+ function selectors() internal pure returns (bytes4[] memory res) {
13
+ res = new bytes4[](5);
14
+ res[0] = ITipping.tip.selector;
15
+ res[1] = ITipping.tipsByCurrencyAndTokenId.selector;
16
+ res[2] = ITipping.tippingCurrencies.selector;
17
+ res[3] = ITipping.totalTipsByCurrency.selector;
18
+ res[4] = ITipping.tipAmountByCurrency.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("TippingFacet.sol", "");
30
+ }
31
+ }
@@ -0,0 +1,40 @@
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 {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
7
+
8
+ //libraries
9
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
10
+
11
+ //contracts
12
+ import {TokenMigrationFacet} from "src/tokens/migration/TokenMigrationFacet.sol";
13
+
14
+ library DeployTokenMigration {
15
+ function selectors() internal pure returns (bytes4[] memory res) {
16
+ res = new bytes4[](3);
17
+ res[0] = TokenMigrationFacet.migrate.selector;
18
+ res[1] = TokenMigrationFacet.emergencyWithdraw.selector;
19
+ res[2] = TokenMigrationFacet.tokens.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 oldToken, address newToken) internal pure returns (bytes memory) {
30
+ return
31
+ abi.encodeCall(
32
+ TokenMigrationFacet.__TokenMigrationFacet_init,
33
+ (IERC20(oldToken), IERC20(newToken))
34
+ );
35
+ }
36
+
37
+ function deploy() internal returns (address) {
38
+ return LibDeploy.deployCode("TokenMigrationFacet.sol", "");
39
+ }
40
+ }
@@ -0,0 +1,53 @@
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 {TownsPoints} from "src/airdrop/points/TownsPoints.sol";
13
+
14
+ library DeployTownsPoints {
15
+ using DynamicArrayLib for DynamicArrayLib.DynamicArray;
16
+
17
+ function selectors() internal pure returns (bytes4[] memory res) {
18
+ DynamicArrayLib.DynamicArray memory arr = DynamicArrayLib.p().reserve(11);
19
+ arr.p(TownsPoints.mint.selector);
20
+ arr.p(TownsPoints.batchMintPoints.selector);
21
+ arr.p(TownsPoints.getPoints.selector);
22
+ arr.p(TownsPoints.balanceOf.selector);
23
+ arr.p(TownsPoints.totalSupply.selector);
24
+ arr.p(TownsPoints.name.selector);
25
+ arr.p(TownsPoints.symbol.selector);
26
+ arr.p(TownsPoints.decimals.selector);
27
+
28
+ // CheckIn
29
+ arr.p(TownsPoints.checkIn.selector);
30
+ arr.p(TownsPoints.getCurrentStreak.selector);
31
+ arr.p(TownsPoints.getLastCheckIn.selector);
32
+
33
+ bytes32[] memory selectors_ = arr.asBytes32Array();
34
+ assembly ("memory-safe") {
35
+ res := selectors_
36
+ }
37
+ }
38
+
39
+ function makeCut(
40
+ address facetAddress,
41
+ IDiamond.FacetCutAction action
42
+ ) internal pure returns (IDiamond.FacetCut memory) {
43
+ return IDiamond.FacetCut(facetAddress, action, selectors());
44
+ }
45
+
46
+ function makeInitData(address spaceFactory) internal pure returns (bytes memory) {
47
+ return abi.encodeCall(TownsPoints.__TownsPoints_init, (spaceFactory));
48
+ }
49
+
50
+ function deploy() internal returns (address) {
51
+ return LibDeploy.deployCode("TownsPoints.sol", "");
52
+ }
53
+ }
@@ -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 {ITreasury} from "src/spaces/facets/treasury/ITreasury.sol";
7
+
8
+ // libraries
9
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
10
+
11
+ library DeployTreasury {
12
+ function selectors() internal pure returns (bytes4[] memory res) {
13
+ res = new bytes4[](4);
14
+ res[0] = ITreasury.withdraw.selector;
15
+ res[1] = ITreasury.onERC721Received.selector;
16
+ res[2] = ITreasury.onERC1155Received.selector;
17
+ res[3] = ITreasury.onERC1155BatchReceived.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("Treasury.sol", "");
29
+ }
30
+ }
@@ -0,0 +1,34 @@
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 {UpgradeableBeaconFacet} from "src/diamond/facets/beacon/UpgradeableBeaconFacet.sol";
12
+
13
+ library DeployUpgradeableBeacon {
14
+ function selectors() internal pure returns (bytes4[] memory _selectors) {
15
+ _selectors = new bytes4[](2);
16
+ _selectors[0] = UpgradeableBeaconFacet.upgradeTo.selector;
17
+ _selectors[1] = UpgradeableBeaconFacet.implementation.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 makeInitData(address implementation) internal pure returns (bytes memory) {
28
+ return abi.encodeCall(UpgradeableBeaconFacet.__UpgradeableBeacon_init, implementation);
29
+ }
30
+
31
+ function deploy() internal returns (address) {
32
+ return LibDeploy.deployCode("UpgradeableBeaconFacet.sol", "");
33
+ }
34
+ }
@@ -0,0 +1,56 @@
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 {WalletLink} from "src/factory/facets/wallet-link/WalletLink.sol";
13
+
14
+ library DeployWalletLink {
15
+ using DynamicArrayLib for DynamicArrayLib.DynamicArray;
16
+
17
+ function selectors() internal pure returns (bytes4[] memory res) {
18
+ DynamicArrayLib.DynamicArray memory arr = DynamicArrayLib.p().reserve(16);
19
+ arr.p(WalletLink.linkCallerToRootKey.selector);
20
+ arr.p(WalletLink.linkWalletToRootKey.selector);
21
+ arr.p(WalletLink.removeLink.selector);
22
+ arr.p(WalletLink.getWalletsByRootKey.selector);
23
+ arr.p(WalletLink.getRootKeyForWallet.selector);
24
+ arr.p(WalletLink.checkIfLinked.selector);
25
+ arr.p(WalletLink.getLatestNonceForRootKey.selector);
26
+ arr.p(WalletLink.removeCallerLink.selector);
27
+ arr.p(WalletLink.setDefaultWallet.selector);
28
+ arr.p(WalletLink.getDefaultWallet.selector);
29
+ arr.p(WalletLink.getDependency.selector);
30
+ arr.p(WalletLink.setDependency.selector);
31
+ arr.p(WalletLink.getAllWalletsByRootKey.selector);
32
+ arr.p(WalletLink.linkNonEVMWalletToRootKey.selector);
33
+ arr.p(WalletLink.removeNonEVMWalletLink.selector);
34
+ arr.p(WalletLink.checkIfNonEVMWalletLinked.selector);
35
+
36
+ bytes32[] memory selectors_ = arr.asBytes32Array();
37
+ assembly ("memory-safe") {
38
+ res := selectors_
39
+ }
40
+ }
41
+
42
+ function makeCut(
43
+ address facetAddress,
44
+ IDiamond.FacetCutAction action
45
+ ) internal pure returns (IDiamond.FacetCut memory) {
46
+ return IDiamond.FacetCut(facetAddress, action, selectors());
47
+ }
48
+
49
+ function makeInitData(address sclEip6565) internal pure returns (bytes memory) {
50
+ return abi.encodeCall(WalletLink.__WalletLink_init, (sclEip6565));
51
+ }
52
+
53
+ function deploy() internal returns (address) {
54
+ return LibDeploy.deployCode("WalletLink.sol", "");
55
+ }
56
+ }
@@ -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
+ import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
9
+
10
+ //contracts
11
+ import {XChain} from "src/base/registry/facets/xchain/XChain.sol";
12
+
13
+ library DeployXChain {
14
+ function selectors() internal pure returns (bytes4[] memory res) {
15
+ res = new bytes4[](3);
16
+ res[0] = XChain.postEntitlementCheckResult.selector;
17
+ res[1] = XChain.isCheckCompleted.selector;
18
+ res[2] = XChain.provideXChainRefund.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 makeInitData() internal pure returns (bytes memory) {
29
+ return abi.encodeCall(XChain.__XChain_init, ());
30
+ }
31
+
32
+ function deploy() internal returns (address) {
33
+ return LibDeploy.deployCode("XChain.sol", "");
34
+ }
35
+ }
@@ -0,0 +1,40 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.23;
3
+
4
+ //interfaces
5
+
6
+ //libraries
7
+
8
+ //contracts
9
+ import {EntryPoint} from "account-abstraction/core/EntryPoint.sol";
10
+ import {SimpleAccountFactory} from "account-abstraction/samples/SimpleAccountFactory.sol";
11
+ import {Deployer} from "scripts/common/Deployer.s.sol";
12
+
13
+ contract DeployAccountFactory is Deployer {
14
+ function versionName() public pure override returns (string memory) {
15
+ return "utils/accountFactory";
16
+ }
17
+
18
+ function __deploy(address deployer) internal override returns (address) {
19
+ if (!isAnvil()) revert("not supported");
20
+
21
+ address entrypoint = getDeployment("entrypoint");
22
+
23
+ bytes32 salt = bytes32(uint256(1));
24
+ bytes32 initCodeHash = hashInitCode(
25
+ type(SimpleAccountFactory).creationCode,
26
+ abi.encode(entrypoint)
27
+ );
28
+
29
+ address soonToBe = computeCreate2Address(salt, initCodeHash);
30
+
31
+ vm.broadcast(deployer);
32
+ SimpleAccountFactory factory = new SimpleAccountFactory{salt: salt}(
33
+ EntryPoint(payable(entrypoint))
34
+ );
35
+
36
+ require(address(factory) == soonToBe, "address mismatch");
37
+
38
+ return address(factory);
39
+ }
40
+ }
@@ -0,0 +1,23 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.23;
3
+
4
+ //interfaces
5
+ import {IEntitlementChecker} from "src/base/registry/facets/checker/IEntitlementChecker.sol";
6
+
7
+ //libraries
8
+
9
+ //contracts
10
+ import {Deployer} from "scripts/common/Deployer.s.sol";
11
+ import {MockEntitlementGated} from "test/mocks/MockEntitlementGated.sol";
12
+
13
+ contract DeployEntitlementGatedExample is Deployer {
14
+ function versionName() public pure override returns (string memory) {
15
+ return "utils/entitlementGatedExample";
16
+ }
17
+
18
+ function __deploy(address deployer) internal override returns (address) {
19
+ vm.broadcast(deployer);
20
+ return
21
+ address(new MockEntitlementGated(IEntitlementChecker(getDeployment("baseRegistry"))));
22
+ }
23
+ }