@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.
- package/LICENSE.txt +21 -0
- package/README.md +206 -0
- package/docs/permitAndStake_integration_guide.md +266 -0
- package/docs/swap_integration_guide.md +591 -0
- package/package.json +57 -0
- package/scripts/common/DeployBase.s.sol +26 -0
- package/scripts/common/DeployFacet.s.sol +7 -0
- package/scripts/common/Deployer.s.sol +33 -0
- package/scripts/common/Interaction.s.sol +51 -0
- package/scripts/deployments/diamonds/DeployAppRegistry.s.sol +168 -0
- package/scripts/deployments/diamonds/DeployBaseRegistry.s.sol +263 -0
- package/scripts/deployments/diamonds/DeployRiverAirdrop.s.sol +203 -0
- package/scripts/deployments/diamonds/DeployRiverMigration.s.sol +129 -0
- package/scripts/deployments/diamonds/DeployRiverRegistry.s.sol +175 -0
- package/scripts/deployments/diamonds/DeploySpace.s.sol +285 -0
- package/scripts/deployments/diamonds/DeploySpaceFactory.s.sol +416 -0
- package/scripts/deployments/diamonds/DeploySpaceOwner.s.sol +183 -0
- package/scripts/deployments/diamonds/DeploySwapRouter.s.sol +176 -0
- package/scripts/deployments/diamonds/IDiamondInitHelper.sol +11 -0
- package/scripts/deployments/facets/DeployAppAccount.s.sol +51 -0
- package/scripts/deployments/facets/DeployAppRegistryFacet.s.sol +69 -0
- package/scripts/deployments/facets/DeployArchitect.s.sol +51 -0
- package/scripts/deployments/facets/DeployAttestationRegistry.s.sol +36 -0
- package/scripts/deployments/facets/DeployBanning.s.sol +30 -0
- package/scripts/deployments/facets/DeployChannels.s.sol +35 -0
- package/scripts/deployments/facets/DeployCreateSpace.s.sol +42 -0
- package/scripts/deployments/facets/DeployDropFacet.s.sol +49 -0
- package/scripts/deployments/facets/DeployERC721A.s.sol +48 -0
- package/scripts/deployments/facets/DeployERC721ANonTransferable.s.sol +49 -0
- package/scripts/deployments/facets/DeployERC721AQueryable.s.sol +30 -0
- package/scripts/deployments/facets/DeployEntitlementChecker.s.sol +49 -0
- package/scripts/deployments/facets/DeployEntitlementDataQueryable.s.sol +29 -0
- package/scripts/deployments/facets/DeployEntitlementsManager.s.sol +33 -0
- package/scripts/deployments/facets/DeployExecutorFacet.s.sol +60 -0
- package/scripts/deployments/facets/DeployFeatureManager.s.sol +38 -0
- package/scripts/deployments/facets/DeployGuardianFacet.s.sol +39 -0
- package/scripts/deployments/facets/DeployImplementationRegistry.s.sol +36 -0
- package/scripts/deployments/facets/DeployMainnetDelegation.s.sol +43 -0
- package/scripts/deployments/facets/DeployMembership.s.sol +77 -0
- package/scripts/deployments/facets/DeployMembershipMetadata.s.sol +30 -0
- package/scripts/deployments/facets/DeployMembershipToken.s.sol +47 -0
- package/scripts/deployments/facets/DeployMerkleAirdrop.s.sol +37 -0
- package/scripts/deployments/facets/DeployMetadata.s.sol +39 -0
- package/scripts/deployments/facets/DeployMockLegacyArchitect.s.sol +33 -0
- package/scripts/deployments/facets/DeployNodeOperator.s.sol +49 -0
- package/scripts/deployments/facets/DeployNodeRegistry.s.sol +37 -0
- package/scripts/deployments/facets/DeployOperatorRegistry.s.sol +36 -0
- package/scripts/deployments/facets/DeployPartnerRegistry.s.sol +41 -0
- package/scripts/deployments/facets/DeployPlatformRequirements.s.sol +75 -0
- package/scripts/deployments/facets/DeployPrepayFacet.s.sol +31 -0
- package/scripts/deployments/facets/DeployPricingModules.s.sol +36 -0
- package/scripts/deployments/facets/DeployReferrals.s.sol +34 -0
- package/scripts/deployments/facets/DeployReviewFacet.s.sol +31 -0
- package/scripts/deployments/facets/DeployRewardsDistributionV2.s.sol +76 -0
- package/scripts/deployments/facets/DeployRiverConfig.s.sol +41 -0
- package/scripts/deployments/facets/DeployRoles.s.sol +48 -0
- package/scripts/deployments/facets/DeploySchemaRegistry.s.sol +35 -0
- package/scripts/deployments/facets/DeploySignerFacet.s.sol +47 -0
- package/scripts/deployments/facets/DeploySimpleApp.s.sol +10 -0
- package/scripts/deployments/facets/DeploySpaceDelegation.s.sol +43 -0
- package/scripts/deployments/facets/DeploySpaceEntitlementGated.s.sol +31 -0
- package/scripts/deployments/facets/DeploySpaceFactoryInit.s.sol +33 -0
- package/scripts/deployments/facets/DeploySpaceOwnerFacet.s.sol +71 -0
- package/scripts/deployments/facets/DeployStreamRegistry.s.sol +50 -0
- package/scripts/deployments/facets/DeploySwapFacet.s.sol +33 -0
- package/scripts/deployments/facets/DeploySwapRouterFacet.s.sol +38 -0
- package/scripts/deployments/facets/DeployTipping.s.sol +31 -0
- package/scripts/deployments/facets/DeployTokenMigration.s.sol +40 -0
- package/scripts/deployments/facets/DeployTownsPoints.s.sol +53 -0
- package/scripts/deployments/facets/DeployTreasury.s.sol +30 -0
- package/scripts/deployments/facets/DeployUpgradeableBeacon.s.sol +34 -0
- package/scripts/deployments/facets/DeployWalletLink.s.sol +56 -0
- package/scripts/deployments/facets/DeployXChain.s.sol +35 -0
- package/scripts/deployments/utils/DeployAccountFactory.s.sol +40 -0
- package/scripts/deployments/utils/DeployEntitlementGatedExample.s.sol +23 -0
- package/scripts/deployments/utils/DeployEntrypoint.s.sol +28 -0
- package/scripts/deployments/utils/DeployMember.s.sol +95 -0
- package/scripts/deployments/utils/DeployMockDiamond.s.sol +7 -0
- package/scripts/deployments/utils/DeployMockERC20.s.sol +24 -0
- package/scripts/deployments/utils/DeployMockERC721A.s.sol +45 -0
- package/scripts/deployments/utils/DeployMockLegacyMembership.s.sol +29 -0
- package/scripts/deployments/utils/DeployMockMessenger.s.sol +42 -0
- package/scripts/deployments/utils/DeployMockNFT.s.sol +86 -0
- package/scripts/deployments/utils/DeployPoapEntitlement.s.sol +16 -0
- package/scripts/deployments/utils/DeployProxyBatchDelegation.s.sol +112 -0
- package/scripts/deployments/utils/DeploySpaceProxyInitializer.s.sol +28 -0
- package/scripts/deployments/utils/DeployTieredLogPricingV2.s.sol +23 -0
- package/scripts/deployments/utils/DeployTieredLogPricingV3.s.sol +23 -0
- package/scripts/deployments/utils/DeployTownsBase.s.sol +95 -0
- package/scripts/deployments/utils/DeployTownsMainnet.s.sol +66 -0
- package/scripts/deployments/utils/DeployTownsMulti.s.sol +53 -0
- package/scripts/deployments/utils/DeployWrappedTowns.s.sol +52 -0
- package/scripts/deployments/utils/LibLayerZeroValues.sol +34 -0
- package/scripts/deployments/utils/pricing/TieredLogPricing.s.sol +45 -0
- package/scripts/interactions/InteractAirdrop.s.sol +57 -0
- package/scripts/interactions/InteractAlphaPost.s.sol +32 -0
- package/scripts/interactions/InteractAlphaSparse.s.sol +173 -0
- package/scripts/interactions/InteractBaseAlpha.s.sol +84 -0
- package/scripts/interactions/InteractBaseBridge.s.sol +48 -0
- package/scripts/interactions/InteractBridgeLayerZero.s.sol +102 -0
- package/scripts/interactions/InteractClaimCondition.s.sol +56 -0
- package/scripts/interactions/InteractCreateSpace.s.sol +50 -0
- package/scripts/interactions/InteractDiamondCut.s.sol +47 -0
- package/scripts/interactions/InteractDropFacet.s.sol +32 -0
- package/scripts/interactions/InteractEnableNewSnapshotFormat.s.sol +27 -0
- package/scripts/interactions/InteractEnableNode2NodeAuth.s.sol +27 -0
- package/scripts/interactions/InteractMembership.s.sol +42 -0
- package/scripts/interactions/InteractMockERC721A.s.sol +20 -0
- package/scripts/interactions/InteractNodeOperators.s.sol +41 -0
- package/scripts/interactions/InteractPostDeploy.s.sol +59 -0
- package/scripts/interactions/InteractPrepay.s.sol +30 -0
- package/scripts/interactions/InteractRegisterApp.s.sol +61 -0
- package/scripts/interactions/InteractRiverAlpha.s.sol +30 -0
- package/scripts/interactions/InteractRiverAlphaSparse.s.sol +117 -0
- package/scripts/interactions/InteractRiverMainnet.s.sol +27 -0
- package/scripts/interactions/InteractRiverRegistry.s.sol +36 -0
- package/scripts/interactions/InteractRiverRegistrySetBlocklist.s.sol +30 -0
- package/scripts/interactions/InteractRiverRegistrySetFreq.s.sol +27 -0
- package/scripts/interactions/InteractRiverRegistrySetRepl.s.sol +30 -0
- package/scripts/interactions/InteractSetDefaultUri.s.sol +20 -0
- package/scripts/interactions/InteractSetDefaultUriLocalhost.s.sol +19 -0
- package/scripts/interactions/InteractTransferOwnership.s.sol +21 -0
- package/scripts/interactions/InteractUpdateMbRecencyCheck.s.sol +27 -0
- package/scripts/interactions/InteractUpdateMediaChunkCount.s.sol +27 -0
- package/scripts/interactions/InteractUpdateMediaChunkSize.s.sol +27 -0
- package/scripts/interactions/helpers/AlphaHelper.sol +149 -0
- package/scripts/interactions/helpers/RiverConfigValues.sol +22 -0
- package/scripts/interactions/interfaces/IL1StandardBridge.sol +35 -0
- package/scripts/interactions/interfaces/IL2StandardBridge.sol +69 -0
- package/src/airdrop/drop/DropBase.sol +210 -0
- package/src/airdrop/drop/DropClaim.sol +55 -0
- package/src/airdrop/drop/DropFacet.sol +176 -0
- package/src/airdrop/drop/DropGroup.sol +111 -0
- package/src/airdrop/drop/DropStorage.sol +23 -0
- package/src/airdrop/drop/IDropFacet.sol +136 -0
- package/src/airdrop/points/CheckIn.sol +71 -0
- package/src/airdrop/points/ITownsPoints.sol +64 -0
- package/src/airdrop/points/TownsPoints.sol +196 -0
- package/src/airdrop/points/TownsPointsStorage.sol +22 -0
- package/src/apps/BaseApp.sol +62 -0
- package/src/apps/ITownsApp.sol +28 -0
- package/src/apps/SchemaResolver.sol +170 -0
- package/src/apps/facets/attest/AttestationBase.sol +335 -0
- package/src/apps/facets/attest/AttestationLib.sol +64 -0
- package/src/apps/facets/attest/AttestationRegistry.sol +39 -0
- package/src/apps/facets/attest/AttestationStorage.sol +35 -0
- package/src/apps/facets/attest/IAttestationRegistry.sol +43 -0
- package/src/apps/facets/registry/AppRegistryBase.sol +403 -0
- package/src/apps/facets/registry/AppRegistryFacet.sol +173 -0
- package/src/apps/facets/registry/AppRegistryStorage.sol +53 -0
- package/src/apps/facets/registry/IAppRegistry.sol +159 -0
- package/src/apps/facets/schema/ISchema.sol +14 -0
- package/src/apps/facets/schema/SchemaBase.sol +88 -0
- package/src/apps/facets/schema/SchemaLib.sol +14 -0
- package/src/apps/facets/schema/SchemaRegistry.sol +51 -0
- package/src/apps/facets/schema/SchemaStorage.sol +34 -0
- package/src/apps/helpers/ISimpleApp.sol +51 -0
- package/src/apps/helpers/SimpleApp.sol +97 -0
- package/src/apps/helpers/SimpleAppStorage.sol +27 -0
- package/src/base/registry/facets/checker/EntitlementChecker.sol +237 -0
- package/src/base/registry/facets/checker/EntitlementCheckerStorage.sol +28 -0
- package/src/base/registry/facets/checker/IEntitlementChecker.sol +95 -0
- package/src/base/registry/facets/delegation/ISpaceDelegation.sol +69 -0
- package/src/base/registry/facets/delegation/SpaceDelegationFacet.sol +250 -0
- package/src/base/registry/facets/delegation/SpaceDelegationStorage.sol +35 -0
- package/src/base/registry/facets/distribution/v1/IRewardsDistribution.sol +51 -0
- package/src/base/registry/facets/distribution/v1/RewardsDistribution.sol +439 -0
- package/src/base/registry/facets/distribution/v1/RewardsDistributionStorage.sol +32 -0
- package/src/base/registry/facets/distribution/v2/DelegationProxy.sol +53 -0
- package/src/base/registry/facets/distribution/v2/IRewardsDistribution.sol +372 -0
- package/src/base/registry/facets/distribution/v2/RewardsDistributionBase.sol +299 -0
- package/src/base/registry/facets/distribution/v2/RewardsDistributionStorage.sol +37 -0
- package/src/base/registry/facets/distribution/v2/RewardsDistributionV2.sol +392 -0
- package/src/base/registry/facets/distribution/v2/StakingRewards.sol +466 -0
- package/src/base/registry/facets/mainnet/ICrossDomainMessenger.sol +58 -0
- package/src/base/registry/facets/mainnet/IMainnetDelegation.sol +127 -0
- package/src/base/registry/facets/mainnet/MainnetDelegation.sol +119 -0
- package/src/base/registry/facets/mainnet/MainnetDelegationBase.sol +274 -0
- package/src/base/registry/facets/mainnet/MainnetDelegationStorage.sol +36 -0
- package/src/base/registry/facets/operator/INodeOperator.sol +91 -0
- package/src/base/registry/facets/operator/NodeOperatorFacet.sol +189 -0
- package/src/base/registry/facets/operator/NodeOperatorStorage.sol +39 -0
- package/src/base/registry/facets/xchain/IXChain.sol +54 -0
- package/src/base/registry/facets/xchain/XChain.sol +158 -0
- package/src/base/registry/facets/xchain/XChainCheckLib.sol +105 -0
- package/src/base/registry/facets/xchain/XChainLib.sol +46 -0
- package/src/diamond/facets/beacon/UpgradeableBeacon.sol +38 -0
- package/src/diamond/facets/beacon/UpgradeableBeaconFacet.sol +34 -0
- package/src/diamond/facets/governance/votes/Checkpoints.sol +642 -0
- package/src/diamond/facets/governance/votes/Votes.sol +63 -0
- package/src/diamond/facets/governance/votes/VotesBase.sol +274 -0
- package/src/diamond/facets/governance/votes/VotesStorage.sol +21 -0
- package/src/diamond/facets/governance/votes/enumerable/IVotesEnumerable.sol +38 -0
- package/src/diamond/facets/governance/votes/enumerable/VotesEnumerable.sol +39 -0
- package/src/diamond/facets/governance/votes/enumerable/VotesEnumerableLib.sol +102 -0
- package/src/diamond/facets/metadata/IMetadata.sol +27 -0
- package/src/diamond/facets/metadata/MetadataFacet.sol +71 -0
- package/src/diamond/facets/token/ERC5643/ERC5643.sol +51 -0
- package/src/diamond/facets/token/ERC5643/ERC5643Base.sol +48 -0
- package/src/diamond/facets/token/ERC5643/ERC5643Storage.sol +26 -0
- package/src/diamond/facets/token/ERC5643/IERC5643.sol +44 -0
- package/src/diamond/facets/token/ERC721A/ERC721A.sol +270 -0
- package/src/diamond/facets/token/ERC721A/ERC721ABase.sol +829 -0
- package/src/diamond/facets/token/ERC721A/ERC721ANonTransferable.sol +21 -0
- package/src/diamond/facets/token/ERC721A/ERC721AStorage.sol +115 -0
- package/src/diamond/facets/token/ERC721A/IERC721A.sol +283 -0
- package/src/diamond/facets/token/ERC721A/extensions/ERC721AQueryable.sol +134 -0
- package/src/diamond/facets/token/ERC721A/extensions/IERC721AQueryable.sol +83 -0
- package/src/diamond/utils/Context.sol +19 -0
- package/src/factory/SpaceFactoryInit.sol +17 -0
- package/src/factory/facets/architect/Architect.sol +98 -0
- package/src/factory/facets/architect/ArchitectBase.sol +95 -0
- package/src/factory/facets/architect/ArchitectStorage.sol +28 -0
- package/src/factory/facets/architect/IArchitect.sol +155 -0
- package/src/factory/facets/architect/ImplementationStorage.sol +42 -0
- package/src/factory/facets/architect/pricing/IPricingModules.sol +41 -0
- package/src/factory/facets/architect/pricing/PricingModulesBase.sol +89 -0
- package/src/factory/facets/architect/pricing/PricingModulesFacet.sol +40 -0
- package/src/factory/facets/architect/pricing/PricingModulesStorage.sol +30 -0
- package/src/factory/facets/create/CreateSpace.sol +107 -0
- package/src/factory/facets/create/CreateSpaceLib.sol +335 -0
- package/src/factory/facets/create/ICreateSpace.sol +70 -0
- package/src/factory/facets/feature/FeatureConditionLib.sol +53 -0
- package/src/factory/facets/feature/FeatureManagerFacet.sol +66 -0
- package/src/factory/facets/feature/FeatureManagerLib.sol +168 -0
- package/src/factory/facets/feature/IFeatureManagerFacet.sol +73 -0
- package/src/factory/facets/partner/IPartnerRegistry.sol +56 -0
- package/src/factory/facets/partner/PartnerRegistry.sol +57 -0
- package/src/factory/facets/partner/PartnerRegistryBase.sol +132 -0
- package/src/factory/facets/partner/PartnerRegistryStorage.sol +40 -0
- package/src/factory/facets/platform/requirements/IPlatformRequirements.sol +143 -0
- package/src/factory/facets/platform/requirements/PlatformRequirementsBase.sol +124 -0
- package/src/factory/facets/platform/requirements/PlatformRequirementsFacet.sol +122 -0
- package/src/factory/facets/platform/requirements/PlatformRequirementsStorage.sol +41 -0
- package/src/factory/facets/registry/IImplementationRegistry.sol +46 -0
- package/src/factory/facets/registry/ImplementationRegistry.sol +64 -0
- package/src/factory/facets/registry/ImplementationRegistryStorage.sol +28 -0
- package/src/factory/facets/wallet-link/IWalletLink.sol +218 -0
- package/src/factory/facets/wallet-link/WalletLink.sol +108 -0
- package/src/factory/facets/wallet-link/WalletLinkBase.sol +492 -0
- package/src/factory/facets/wallet-link/interfaces/IDelegateRegistry.sol +63 -0
- package/src/factory/facets/wallet-link/interfaces/IDelegateRegistryV1.sol +35 -0
- package/src/factory/facets/wallet-link/interfaces/ISCL_EIP6565.sol +24 -0
- package/src/factory/facets/wallet-link/libraries/SolanaUtils.sol +161 -0
- package/src/factory/facets/wallet-link/libraries/WalletLib.sol +62 -0
- package/src/river/registry/facets/config/IRiverConfig.sol +117 -0
- package/src/river/registry/facets/config/RiverConfig.sol +174 -0
- package/src/river/registry/facets/node/INodeRegistry.sol +69 -0
- package/src/river/registry/facets/node/NodeRegistry.sol +143 -0
- package/src/river/registry/facets/operator/IOperatorRegistry.sol +28 -0
- package/src/river/registry/facets/operator/OperatorRegistry.sol +86 -0
- package/src/river/registry/facets/stream/IStreamRegistry.sol +184 -0
- package/src/river/registry/facets/stream/StreamRegistry.sol +396 -0
- package/src/river/registry/libraries/RegistryErrors.sol +24 -0
- package/src/river/registry/libraries/RegistryStorage.sol +181 -0
- package/src/router/ISwapRouter.sol +226 -0
- package/src/router/Permit2Hash.sol +92 -0
- package/src/router/SwapRouter.sol +463 -0
- package/src/router/SwapRouterStorage.sol +21 -0
- package/src/spaces/entitlements/ICrossChainEntitlement.sol +22 -0
- package/src/spaces/entitlements/IEntitlement.sol +61 -0
- package/src/spaces/entitlements/PolymarketEntitlement.sol +79 -0
- package/src/spaces/entitlements/poap/IPOAP.sol +26 -0
- package/src/spaces/entitlements/poap/PoapEntitlement.sol +56 -0
- package/src/spaces/entitlements/rule/IRuleEntitlement.sol +174 -0
- package/src/spaces/entitlements/rule/RuleEntitlement.sol +183 -0
- package/src/spaces/entitlements/rule/RuleEntitlementV2.sol +219 -0
- package/src/spaces/entitlements/user/IUserEntitlement.sol +24 -0
- package/src/spaces/entitlements/user/UserEntitlement.sol +273 -0
- package/src/spaces/facets/DependencyLib.sol +60 -0
- package/src/spaces/facets/Entitled.sol +172 -0
- package/src/spaces/facets/Permissions.sol +21 -0
- package/src/spaces/facets/account/AppAccount.sol +93 -0
- package/src/spaces/facets/account/AppAccountBase.sol +275 -0
- package/src/spaces/facets/account/AppAccountStorage.sol +63 -0
- package/src/spaces/facets/account/IAppAccount.sol +71 -0
- package/src/spaces/facets/account/SignerFacet.sol +26 -0
- package/src/spaces/facets/banning/Banning.sol +41 -0
- package/src/spaces/facets/banning/BanningBase.sol +33 -0
- package/src/spaces/facets/banning/BanningStorage.sol +23 -0
- package/src/spaces/facets/banning/IBanning.sol +35 -0
- package/src/spaces/facets/channels/ChannelBase.sol +87 -0
- package/src/spaces/facets/channels/ChannelService.sol +177 -0
- package/src/spaces/facets/channels/ChannelStorage.sol +34 -0
- package/src/spaces/facets/channels/Channels.sol +80 -0
- package/src/spaces/facets/channels/IChannel.sol +98 -0
- package/src/spaces/facets/dispatcher/DispatcherBase.sol +86 -0
- package/src/spaces/facets/dispatcher/DispatcherStorage.sol +21 -0
- package/src/spaces/facets/dispatcher/IDispatcher.sol +6 -0
- package/src/spaces/facets/entitlements/EntitlementsManager.sol +49 -0
- package/src/spaces/facets/entitlements/EntitlementsManagerBase.sol +87 -0
- package/src/spaces/facets/entitlements/EntitlementsManagerService.sol +142 -0
- package/src/spaces/facets/entitlements/EntitlementsManagerStorage.sol +34 -0
- package/src/spaces/facets/entitlements/IEntitlementsManager.sol +67 -0
- package/src/spaces/facets/entitlements/extensions/EntitlementDataQueryable.sol +153 -0
- package/src/spaces/facets/entitlements/extensions/IEntitlementDataQueryable.sol +32 -0
- package/src/spaces/facets/executor/ExecutorBase.sol +564 -0
- package/src/spaces/facets/executor/ExecutorFacet.sol +178 -0
- package/src/spaces/facets/executor/ExecutorStorage.sol +99 -0
- package/src/spaces/facets/executor/GroupLib.sol +128 -0
- package/src/spaces/facets/executor/IExecutor.sol +287 -0
- package/src/spaces/facets/executor/hooks/HookBase.sol +172 -0
- package/src/spaces/facets/executor/hooks/HookLib.sol +38 -0
- package/src/spaces/facets/executor/hooks/IHookBase.sol +48 -0
- package/src/spaces/facets/gated/EntitlementGated.sol +59 -0
- package/src/spaces/facets/gated/EntitlementGatedBase.sol +324 -0
- package/src/spaces/facets/gated/EntitlementGatedStorage.sol +29 -0
- package/src/spaces/facets/gated/IEntitlementGated.sol +55 -0
- package/src/spaces/facets/guardian/GuardianBase.sol +80 -0
- package/src/spaces/facets/guardian/GuardianFacet.sol +43 -0
- package/src/spaces/facets/guardian/GuardianStorage.sol +27 -0
- package/src/spaces/facets/guardian/IGuardian.sol +54 -0
- package/src/spaces/facets/membership/IMembership.sol +216 -0
- package/src/spaces/facets/membership/MembershipBase.sol +272 -0
- package/src/spaces/facets/membership/MembershipFacet.sol +191 -0
- package/src/spaces/facets/membership/MembershipStorage.sol +40 -0
- package/src/spaces/facets/membership/join/MembershipJoin.sol +547 -0
- package/src/spaces/facets/membership/metadata/IMembershipMetadata.sol +9 -0
- package/src/spaces/facets/membership/metadata/MembershipMetadata.sol +32 -0
- package/src/spaces/facets/membership/pricing/IMembershipPricing.sol +18 -0
- package/src/spaces/facets/membership/pricing/fixed/FixedPricing.sol +29 -0
- package/src/spaces/facets/membership/pricing/fixed/FixedPricingStorage.sol +27 -0
- package/src/spaces/facets/membership/pricing/tiered/TieredLogPricingOracleV2.sol +148 -0
- package/src/spaces/facets/membership/pricing/tiered/TieredLogPricingOracleV3.sol +137 -0
- package/src/spaces/facets/membership/token/MembershipToken.sol +25 -0
- package/src/spaces/facets/owner/ISpaceOwner.sol +85 -0
- package/src/spaces/facets/owner/SpaceOwner.sol +174 -0
- package/src/spaces/facets/owner/SpaceOwnerBase.sol +121 -0
- package/src/spaces/facets/owner/SpaceOwnerStorage.sol +41 -0
- package/src/spaces/facets/owner/SpaceOwnerUriBase.sol +54 -0
- package/src/spaces/facets/points/PointsBase.sol +35 -0
- package/src/spaces/facets/prepay/IPrepay.sol +43 -0
- package/src/spaces/facets/prepay/PrepayBase.sol +27 -0
- package/src/spaces/facets/prepay/PrepayFacet.sol +59 -0
- package/src/spaces/facets/prepay/PrepayStorage.sol +26 -0
- package/src/spaces/facets/proxy/ISpaceProxyInitializer.sol +21 -0
- package/src/spaces/facets/proxy/SpaceProxy.sol +15 -0
- package/src/spaces/facets/proxy/SpaceProxyInitializer.sol +55 -0
- package/src/spaces/facets/referrals/IReferrals.sol +98 -0
- package/src/spaces/facets/referrals/ReferralsBase.sol +81 -0
- package/src/spaces/facets/referrals/ReferralsFacet.sol +65 -0
- package/src/spaces/facets/referrals/ReferralsStorage.sol +36 -0
- package/src/spaces/facets/review/IReview.sol +50 -0
- package/src/spaces/facets/review/ReviewFacet.sol +105 -0
- package/src/spaces/facets/review/ReviewStorage.sol +29 -0
- package/src/spaces/facets/roles/IRoles.sol +197 -0
- package/src/spaces/facets/roles/Roles.sol +123 -0
- package/src/spaces/facets/roles/RolesBase.sol +420 -0
- package/src/spaces/facets/roles/RolesStorage.sol +132 -0
- package/src/spaces/facets/swap/ISwapFacet.sol +91 -0
- package/src/spaces/facets/swap/SwapFacet.sol +290 -0
- package/src/spaces/facets/swap/SwapFacetStorage.sol +24 -0
- package/src/spaces/facets/tipping/ITipping.sol +80 -0
- package/src/spaces/facets/tipping/TippingBase.sol +73 -0
- package/src/spaces/facets/tipping/TippingFacet.sol +123 -0
- package/src/spaces/facets/treasury/ITreasury.sol +64 -0
- package/src/spaces/facets/treasury/Treasury.sol +82 -0
- package/src/spaces/facets/xchain/SpaceEntitlementGated.sol +62 -0
- package/src/tokens/Member.sol +246 -0
- package/src/tokens/lock/ILock.sol +42 -0
- package/src/tokens/lock/LockBase.sol +64 -0
- package/src/tokens/lock/LockFacet.sol +44 -0
- package/src/tokens/lock/LockStorage.sol +26 -0
- package/src/tokens/mainnet/claimer/AuthorizedClaimerStorage.sol +26 -0
- package/src/tokens/mainnet/claimer/AuthorizedClaimers.sol +84 -0
- package/src/tokens/mainnet/claimer/IAuthorizedClaimers.sol +36 -0
- package/src/tokens/mainnet/delegation/ProxyBatchDelegation.sol +86 -0
- package/src/tokens/migration/ITokenMigration.sol +35 -0
- package/src/tokens/migration/TokenMigrationFacet.sol +86 -0
- package/src/tokens/migration/TokenMigrationStorage.sol +27 -0
- package/src/tokens/towns/base/IERC7802.sol +30 -0
- package/src/tokens/towns/base/IOptimismMintableERC20.sol +31 -0
- package/src/tokens/towns/base/ISemver.sol +13 -0
- package/src/tokens/towns/base/Towns.sol +283 -0
- package/src/tokens/towns/base/TownsDeployer.sol +32 -0
- package/src/tokens/towns/base/TownsLib.sol +31 -0
- package/src/tokens/towns/base/versions/TownsV2.sol +15 -0
- package/src/tokens/towns/mainnet/ITowns.sol +56 -0
- package/src/tokens/towns/mainnet/Towns.sol +220 -0
- package/src/tokens/towns/mainnet/libs/TokenInflationLib.sol +89 -0
- package/src/tokens/towns/multichain/Towns.sol +19 -0
- package/src/tokens/towns/multichain/wTowns.sol +18 -0
- package/src/utils/Airdrop.sol +156 -0
- package/src/utils/airdrop/merkle/IMerkleAirdrop.sol +55 -0
- package/src/utils/airdrop/merkle/MerkleAirdrop.sol +118 -0
- package/src/utils/airdrop/merkle/MerkleAirdropStorage.sol +29 -0
- package/src/utils/interfaces/AggregatorV3Interface.sol +37 -0
- package/src/utils/interfaces/IMulticall.sol +10 -0
- package/src/utils/interfaces/IWETH.sol +10 -0
- package/src/utils/libraries/BasisPoints.sol +24 -0
- package/src/utils/libraries/Create2Utils.sol +74 -0
- package/src/utils/libraries/CurrencyTransfer.sol +99 -0
- package/src/utils/libraries/CustomRevert.sol +49 -0
- package/src/utils/libraries/Factory.sol +66 -0
- package/src/utils/libraries/StringSet.sol +190 -0
- package/src/utils/libraries/Validator.sol +31 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.23;
|
|
3
|
+
|
|
4
|
+
// interfaces
|
|
5
|
+
import {IDiamond} from "@towns-protocol/diamond/src/Diamond.sol";
|
|
6
|
+
import {IERC721AQueryable} from "src/diamond/facets/token/ERC721A/extensions/IERC721AQueryable.sol";
|
|
7
|
+
|
|
8
|
+
// libraries
|
|
9
|
+
import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
|
|
10
|
+
|
|
11
|
+
library DeployERC721AQueryable {
|
|
12
|
+
function selectors() internal pure returns (bytes4[] memory res) {
|
|
13
|
+
res = new bytes4[](4);
|
|
14
|
+
res[0] = IERC721AQueryable.explicitOwnershipOf.selector;
|
|
15
|
+
res[1] = IERC721AQueryable.explicitOwnershipsOf.selector;
|
|
16
|
+
res[2] = IERC721AQueryable.tokensOfOwnerIn.selector;
|
|
17
|
+
res[3] = IERC721AQueryable.tokensOfOwner.selector;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function makeCut(
|
|
21
|
+
address facetAddress,
|
|
22
|
+
IDiamond.FacetCutAction action
|
|
23
|
+
) internal pure returns (IDiamond.FacetCut memory) {
|
|
24
|
+
return IDiamond.FacetCut(facetAddress, action, selectors());
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function deploy() internal returns (address) {
|
|
28
|
+
return LibDeploy.deployCode("ERC721AQueryable.sol", "");
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// SPDX-License-Identifier: UNLICENSED
|
|
2
|
+
pragma solidity ^0.8.23;
|
|
3
|
+
|
|
4
|
+
// interfaces
|
|
5
|
+
import {IDiamond} from "@towns-protocol/diamond/src/IDiamond.sol";
|
|
6
|
+
|
|
7
|
+
// libraries
|
|
8
|
+
import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
|
|
9
|
+
import {DynamicArrayLib} from "solady/utils/DynamicArrayLib.sol";
|
|
10
|
+
|
|
11
|
+
// contracts
|
|
12
|
+
import {EntitlementChecker} from "src/base/registry/facets/checker/EntitlementChecker.sol";
|
|
13
|
+
|
|
14
|
+
library DeployEntitlementChecker {
|
|
15
|
+
using DynamicArrayLib for DynamicArrayLib.DynamicArray;
|
|
16
|
+
|
|
17
|
+
function selectors() internal pure returns (bytes4[] memory res) {
|
|
18
|
+
DynamicArrayLib.DynamicArray memory arr = DynamicArrayLib.p().reserve(9);
|
|
19
|
+
arr.p(EntitlementChecker.registerNode.selector);
|
|
20
|
+
arr.p(EntitlementChecker.unregisterNode.selector);
|
|
21
|
+
arr.p(EntitlementChecker.isValidNode.selector);
|
|
22
|
+
arr.p(EntitlementChecker.getNodeCount.selector);
|
|
23
|
+
arr.p(EntitlementChecker.getNodeAtIndex.selector);
|
|
24
|
+
arr.p(EntitlementChecker.getRandomNodes.selector);
|
|
25
|
+
arr.p(EntitlementChecker.requestEntitlementCheck.selector);
|
|
26
|
+
arr.p(EntitlementChecker.requestEntitlementCheckV2.selector);
|
|
27
|
+
arr.p(EntitlementChecker.getNodesByOperator.selector);
|
|
28
|
+
|
|
29
|
+
bytes32[] memory selectors_ = arr.asBytes32Array();
|
|
30
|
+
assembly ("memory-safe") {
|
|
31
|
+
res := selectors_
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function makeCut(
|
|
36
|
+
address facetAddress,
|
|
37
|
+
IDiamond.FacetCutAction action
|
|
38
|
+
) internal pure returns (IDiamond.FacetCut memory) {
|
|
39
|
+
return IDiamond.FacetCut(facetAddress, action, selectors());
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function makeInitData() internal pure returns (bytes memory) {
|
|
43
|
+
return abi.encodeCall(EntitlementChecker.__EntitlementChecker_init, ());
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function deploy() internal returns (address) {
|
|
47
|
+
return LibDeploy.deployCode("EntitlementChecker.sol", "");
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.23;
|
|
3
|
+
|
|
4
|
+
// interfaces
|
|
5
|
+
import {IDiamond} from "@towns-protocol/diamond/src/Diamond.sol";
|
|
6
|
+
import {IEntitlementDataQueryable} from "src/spaces/facets/entitlements/extensions/IEntitlementDataQueryable.sol";
|
|
7
|
+
|
|
8
|
+
// libraries
|
|
9
|
+
import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
|
|
10
|
+
|
|
11
|
+
library DeployEntitlementDataQueryable {
|
|
12
|
+
function selectors() internal pure returns (bytes4[] memory res) {
|
|
13
|
+
res = new bytes4[](3);
|
|
14
|
+
res[0] = IEntitlementDataQueryable.getEntitlementDataByPermission.selector;
|
|
15
|
+
res[1] = IEntitlementDataQueryable.getChannelEntitlementDataByPermission.selector;
|
|
16
|
+
res[2] = IEntitlementDataQueryable.getCrossChainEntitlementData.selector;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function makeCut(
|
|
20
|
+
address facetAddress,
|
|
21
|
+
IDiamond.FacetCutAction action
|
|
22
|
+
) internal pure returns (IDiamond.FacetCut memory) {
|
|
23
|
+
return IDiamond.FacetCut(facetAddress, action, selectors());
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function deploy() internal returns (address) {
|
|
27
|
+
return LibDeploy.deployCode("EntitlementDataQueryable.sol", "");
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.23;
|
|
3
|
+
|
|
4
|
+
// interfaces
|
|
5
|
+
import {IDiamond} from "@towns-protocol/diamond/src/Diamond.sol";
|
|
6
|
+
import {IEntitlementsManager} from "src/spaces/facets/entitlements/IEntitlementsManager.sol";
|
|
7
|
+
|
|
8
|
+
// libraries
|
|
9
|
+
import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
|
|
10
|
+
|
|
11
|
+
library DeployEntitlementsManager {
|
|
12
|
+
function selectors() internal pure returns (bytes4[] memory res) {
|
|
13
|
+
res = new bytes4[](7);
|
|
14
|
+
res[0] = IEntitlementsManager.addImmutableEntitlements.selector;
|
|
15
|
+
res[1] = IEntitlementsManager.addEntitlementModule.selector;
|
|
16
|
+
res[2] = IEntitlementsManager.removeEntitlementModule.selector;
|
|
17
|
+
res[3] = IEntitlementsManager.getEntitlements.selector;
|
|
18
|
+
res[4] = IEntitlementsManager.getEntitlement.selector;
|
|
19
|
+
res[5] = IEntitlementsManager.isEntitledToSpace.selector;
|
|
20
|
+
res[6] = IEntitlementsManager.isEntitledToChannel.selector;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function makeCut(
|
|
24
|
+
address facetAddress,
|
|
25
|
+
IDiamond.FacetCutAction action
|
|
26
|
+
) internal pure returns (IDiamond.FacetCut memory) {
|
|
27
|
+
return IDiamond.FacetCut(facetAddress, action, selectors());
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function deploy() internal returns (address) {
|
|
31
|
+
return LibDeploy.deployCode("EntitlementsManager.sol", "");
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.23;
|
|
3
|
+
|
|
4
|
+
// interfaces
|
|
5
|
+
import {IDiamond} from "@towns-protocol/diamond/src/Diamond.sol";
|
|
6
|
+
import {IExecutor} from "src/spaces/facets/executor/IExecutor.sol";
|
|
7
|
+
|
|
8
|
+
// libraries
|
|
9
|
+
import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
|
|
10
|
+
import {DynamicArrayLib} from "solady/utils/DynamicArrayLib.sol";
|
|
11
|
+
|
|
12
|
+
library DeployExecutorFacet {
|
|
13
|
+
using DynamicArrayLib for DynamicArrayLib.DynamicArray;
|
|
14
|
+
|
|
15
|
+
function selectors() internal pure returns (bytes4[] memory res) {
|
|
16
|
+
DynamicArrayLib.DynamicArray memory arr = DynamicArrayLib.p().reserve(18);
|
|
17
|
+
|
|
18
|
+
// Access Management
|
|
19
|
+
arr.p(IExecutor.grantAccess.selector);
|
|
20
|
+
arr.p(IExecutor.revokeAccess.selector);
|
|
21
|
+
arr.p(IExecutor.renounceAccess.selector);
|
|
22
|
+
arr.p(IExecutor.setGuardian.selector);
|
|
23
|
+
arr.p(IExecutor.setGroupDelay.selector);
|
|
24
|
+
arr.p(IExecutor.setGroupExpiration.selector);
|
|
25
|
+
arr.p(IExecutor.grantAccessWithExpiration.selector);
|
|
26
|
+
|
|
27
|
+
// Target Management
|
|
28
|
+
arr.p(IExecutor.setTargetFunctionGroup.selector);
|
|
29
|
+
arr.p(IExecutor.setTargetDisabled.selector);
|
|
30
|
+
|
|
31
|
+
// Operation Management
|
|
32
|
+
arr.p(IExecutor.scheduleOperation.selector);
|
|
33
|
+
arr.p(IExecutor.execute.selector);
|
|
34
|
+
arr.p(IExecutor.cancel.selector);
|
|
35
|
+
|
|
36
|
+
// Getters
|
|
37
|
+
arr.p(IExecutor.hasAccess.selector);
|
|
38
|
+
arr.p(IExecutor.getAccess.selector);
|
|
39
|
+
arr.p(IExecutor.getGroupDelay.selector);
|
|
40
|
+
arr.p(IExecutor.getScheduleTimepoint.selector);
|
|
41
|
+
arr.p(IExecutor.onExecution.selector);
|
|
42
|
+
arr.p(IExecutor.hashOperation.selector);
|
|
43
|
+
|
|
44
|
+
bytes32[] memory selectors_ = arr.asBytes32Array();
|
|
45
|
+
assembly ("memory-safe") {
|
|
46
|
+
res := selectors_
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function makeCut(
|
|
51
|
+
address facetAddress,
|
|
52
|
+
IDiamond.FacetCutAction action
|
|
53
|
+
) internal pure returns (IDiamond.FacetCut memory) {
|
|
54
|
+
return IDiamond.FacetCut(facetAddress, action, selectors());
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function deploy() internal returns (address) {
|
|
58
|
+
return LibDeploy.deployCode("ExecutorFacet.sol", "");
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.23;
|
|
3
|
+
|
|
4
|
+
//interfaces
|
|
5
|
+
import {IDiamond} from "@towns-protocol/diamond/src/IDiamond.sol";
|
|
6
|
+
|
|
7
|
+
//libraries
|
|
8
|
+
import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
|
|
9
|
+
|
|
10
|
+
//contracts
|
|
11
|
+
import {FeatureManagerFacet} from "src/factory/facets/feature/FeatureManagerFacet.sol";
|
|
12
|
+
|
|
13
|
+
library DeployFeatureManager {
|
|
14
|
+
function selectors() internal pure returns (bytes4[] memory _selectors) {
|
|
15
|
+
_selectors = new bytes4[](6);
|
|
16
|
+
_selectors[0] = FeatureManagerFacet.setFeatureCondition.selector;
|
|
17
|
+
_selectors[1] = FeatureManagerFacet.getFeatureCondition.selector;
|
|
18
|
+
_selectors[2] = FeatureManagerFacet.getFeatureConditions.selector;
|
|
19
|
+
_selectors[3] = FeatureManagerFacet.getFeatureConditionsForSpace.selector;
|
|
20
|
+
_selectors[4] = FeatureManagerFacet.checkFeatureCondition.selector;
|
|
21
|
+
_selectors[5] = FeatureManagerFacet.disableFeatureCondition.selector;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function makeCut(
|
|
25
|
+
address facetAddress,
|
|
26
|
+
IDiamond.FacetCutAction action
|
|
27
|
+
) internal pure returns (IDiamond.FacetCut memory) {
|
|
28
|
+
return IDiamond.FacetCut(facetAddress, action, selectors());
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function makeInitData() internal pure returns (bytes memory) {
|
|
32
|
+
return abi.encodeCall(FeatureManagerFacet.__FeatureManagerFacet_init, ());
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function deploy() internal returns (address) {
|
|
36
|
+
return LibDeploy.deployCode("FeatureManagerFacet.sol", "");
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.23;
|
|
3
|
+
|
|
4
|
+
// interfaces
|
|
5
|
+
import {IDiamond} from "@towns-protocol/diamond/src/Diamond.sol";
|
|
6
|
+
import {IGuardian} from "src/spaces/facets/guardian/IGuardian.sol";
|
|
7
|
+
|
|
8
|
+
// libraries
|
|
9
|
+
import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
|
|
10
|
+
|
|
11
|
+
// contracts
|
|
12
|
+
import {GuardianFacet} from "src/spaces/facets/guardian/GuardianFacet.sol";
|
|
13
|
+
|
|
14
|
+
library DeployGuardianFacet {
|
|
15
|
+
function selectors() internal pure returns (bytes4[] memory res) {
|
|
16
|
+
res = new bytes4[](6);
|
|
17
|
+
res[0] = IGuardian.enableGuardian.selector;
|
|
18
|
+
res[1] = IGuardian.guardianCooldown.selector;
|
|
19
|
+
res[2] = IGuardian.disableGuardian.selector;
|
|
20
|
+
res[3] = IGuardian.isGuardianEnabled.selector;
|
|
21
|
+
res[4] = IGuardian.getDefaultCooldown.selector;
|
|
22
|
+
res[5] = IGuardian.setDefaultCooldown.selector;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function makeCut(
|
|
26
|
+
address facetAddress,
|
|
27
|
+
IDiamond.FacetCutAction action
|
|
28
|
+
) internal pure returns (IDiamond.FacetCut memory) {
|
|
29
|
+
return IDiamond.FacetCut(facetAddress, action, selectors());
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function makeInitData(uint256 cooldown) internal pure returns (bytes memory) {
|
|
33
|
+
return abi.encodeCall(GuardianFacet.__GuardianFacet_init, cooldown);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function deploy() internal returns (address) {
|
|
37
|
+
return LibDeploy.deployCode("GuardianFacet.sol", "");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.23;
|
|
3
|
+
|
|
4
|
+
// interfaces
|
|
5
|
+
import {IDiamond} from "@towns-protocol/diamond/src/IDiamond.sol";
|
|
6
|
+
|
|
7
|
+
// libraries
|
|
8
|
+
import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
|
|
9
|
+
|
|
10
|
+
// contracts
|
|
11
|
+
import {ImplementationRegistryFacet} from "src/factory/facets/registry/ImplementationRegistry.sol";
|
|
12
|
+
|
|
13
|
+
library DeployImplementationRegistry {
|
|
14
|
+
function selectors() internal pure returns (bytes4[] memory _selectors) {
|
|
15
|
+
_selectors = new bytes4[](4);
|
|
16
|
+
_selectors[0] = ImplementationRegistryFacet.addImplementation.selector;
|
|
17
|
+
_selectors[1] = ImplementationRegistryFacet.approveImplementation.selector;
|
|
18
|
+
_selectors[2] = ImplementationRegistryFacet.getImplementation.selector;
|
|
19
|
+
_selectors[3] = ImplementationRegistryFacet.getLatestImplementation.selector;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function makeCut(
|
|
23
|
+
address facetAddress,
|
|
24
|
+
IDiamond.FacetCutAction action
|
|
25
|
+
) internal pure returns (IDiamond.FacetCut memory) {
|
|
26
|
+
return IDiamond.FacetCut(facetAddress, action, selectors());
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function makeInitData() internal pure returns (bytes memory) {
|
|
30
|
+
return abi.encodeCall(ImplementationRegistryFacet.__ImplementationRegistry_init, ());
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function deploy() internal returns (address) {
|
|
34
|
+
return LibDeploy.deployCode("ImplementationRegistryFacet", "");
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.23;
|
|
3
|
+
|
|
4
|
+
//interfaces
|
|
5
|
+
|
|
6
|
+
//libraries
|
|
7
|
+
import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
|
|
8
|
+
import {DynamicArrayLib} from "solady/utils/DynamicArrayLib.sol";
|
|
9
|
+
|
|
10
|
+
//contracts
|
|
11
|
+
import {MainnetDelegation} from "src/base/registry/facets/mainnet/MainnetDelegation.sol";
|
|
12
|
+
|
|
13
|
+
library DeployMainnetDelegation {
|
|
14
|
+
using DynamicArrayLib for DynamicArrayLib.DynamicArray;
|
|
15
|
+
|
|
16
|
+
function selectors() internal pure returns (bytes4[] memory res) {
|
|
17
|
+
DynamicArrayLib.DynamicArray memory arr = DynamicArrayLib.p().reserve(11);
|
|
18
|
+
arr.p(MainnetDelegation.setProxyDelegation.selector);
|
|
19
|
+
arr.p(MainnetDelegation.setDelegationDigest.selector);
|
|
20
|
+
arr.p(MainnetDelegation.relayDelegations.selector);
|
|
21
|
+
arr.p(MainnetDelegation.getMainnetDelegators.selector);
|
|
22
|
+
arr.p(MainnetDelegation.getDepositIdByDelegator.selector);
|
|
23
|
+
arr.p(MainnetDelegation.getDelegationByDelegator.selector);
|
|
24
|
+
arr.p(MainnetDelegation.getMainnetDelegationsByOperator.selector);
|
|
25
|
+
arr.p(MainnetDelegation.getDelegatedStakeByOperator.selector);
|
|
26
|
+
arr.p(MainnetDelegation.getAuthorizedClaimer.selector);
|
|
27
|
+
arr.p(MainnetDelegation.getProxyDelegation.selector);
|
|
28
|
+
arr.p(MainnetDelegation.getMessenger.selector);
|
|
29
|
+
|
|
30
|
+
bytes32[] memory selectors_ = arr.asBytes32Array();
|
|
31
|
+
assembly ("memory-safe") {
|
|
32
|
+
res := selectors_
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function makeInitData(address messenger) internal pure returns (bytes memory) {
|
|
37
|
+
return abi.encodeCall(MainnetDelegation.__MainnetDelegation_init, (messenger));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function deploy() internal returns (address) {
|
|
41
|
+
return LibDeploy.deployCode("MainnetDelegation.sol", "");
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.23;
|
|
3
|
+
|
|
4
|
+
// interfaces
|
|
5
|
+
import {IDiamond} from "@towns-protocol/diamond/src/Diamond.sol";
|
|
6
|
+
import {IMembership} from "src/spaces/facets/membership/IMembership.sol";
|
|
7
|
+
|
|
8
|
+
// libraries
|
|
9
|
+
import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
|
|
10
|
+
import {DynamicArrayLib} from "solady/utils/DynamicArrayLib.sol";
|
|
11
|
+
|
|
12
|
+
library DeployMembership {
|
|
13
|
+
using DynamicArrayLib for DynamicArrayLib.DynamicArray;
|
|
14
|
+
|
|
15
|
+
function selectors() internal pure returns (bytes4[] memory res) {
|
|
16
|
+
DynamicArrayLib.DynamicArray memory arr = DynamicArrayLib.p().reserve(22);
|
|
17
|
+
|
|
18
|
+
// Funds
|
|
19
|
+
arr.p(IMembership.revenue.selector);
|
|
20
|
+
|
|
21
|
+
// Minting
|
|
22
|
+
arr.p(bytes4(keccak256("joinSpace(uint8,bytes)"))); // Unified joinSpace
|
|
23
|
+
arr.p(bytes4(keccak256("joinSpace(address)"))); // Legacy joinSpace
|
|
24
|
+
arr.p(IMembership.joinSpaceWithReferral.selector);
|
|
25
|
+
arr.p(IMembership.renewMembership.selector);
|
|
26
|
+
|
|
27
|
+
arr.p(IMembership.expiresAt.selector);
|
|
28
|
+
|
|
29
|
+
// Duration
|
|
30
|
+
arr.p(IMembership.getMembershipDuration.selector);
|
|
31
|
+
arr.p(IMembership.setMembershipDuration.selector);
|
|
32
|
+
|
|
33
|
+
// Pricing Module
|
|
34
|
+
arr.p(IMembership.setMembershipPricingModule.selector);
|
|
35
|
+
arr.p(IMembership.getMembershipPricingModule.selector);
|
|
36
|
+
|
|
37
|
+
// Pricing
|
|
38
|
+
arr.p(IMembership.setMembershipPrice.selector);
|
|
39
|
+
arr.p(IMembership.getMembershipPrice.selector);
|
|
40
|
+
arr.p(IMembership.getMembershipRenewalPrice.selector);
|
|
41
|
+
arr.p(IMembership.getProtocolFee.selector);
|
|
42
|
+
|
|
43
|
+
// Allocation
|
|
44
|
+
arr.p(IMembership.setMembershipFreeAllocation.selector);
|
|
45
|
+
arr.p(IMembership.getMembershipFreeAllocation.selector);
|
|
46
|
+
|
|
47
|
+
// Limits
|
|
48
|
+
arr.p(IMembership.setMembershipLimit.selector);
|
|
49
|
+
arr.p(IMembership.getMembershipLimit.selector);
|
|
50
|
+
|
|
51
|
+
// Currency
|
|
52
|
+
arr.p(IMembership.getMembershipCurrency.selector);
|
|
53
|
+
|
|
54
|
+
// Image
|
|
55
|
+
arr.p(IMembership.setMembershipImage.selector);
|
|
56
|
+
arr.p(IMembership.getMembershipImage.selector);
|
|
57
|
+
|
|
58
|
+
// Factory
|
|
59
|
+
arr.p(IMembership.getSpaceFactory.selector);
|
|
60
|
+
|
|
61
|
+
bytes32[] memory selectors_ = arr.asBytes32Array();
|
|
62
|
+
assembly ("memory-safe") {
|
|
63
|
+
res := selectors_
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function makeCut(
|
|
68
|
+
address facetAddress,
|
|
69
|
+
IDiamond.FacetCutAction action
|
|
70
|
+
) internal pure returns (IDiamond.FacetCut memory) {
|
|
71
|
+
return IDiamond.FacetCut(facetAddress, action, selectors());
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function deploy() internal returns (address) {
|
|
75
|
+
return LibDeploy.deployCode("MembershipFacet.sol", "");
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.23;
|
|
3
|
+
|
|
4
|
+
//interfaces
|
|
5
|
+
import {IDiamond} from "@towns-protocol/diamond/src/Diamond.sol";
|
|
6
|
+
import {IMembershipMetadata} from "src/spaces/facets/membership/metadata/IMembershipMetadata.sol";
|
|
7
|
+
|
|
8
|
+
//libraries
|
|
9
|
+
import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
|
|
10
|
+
|
|
11
|
+
//contracts
|
|
12
|
+
|
|
13
|
+
library DeployMembershipMetadata {
|
|
14
|
+
function selectors() internal pure returns (bytes4[] memory res) {
|
|
15
|
+
res = new bytes4[](2);
|
|
16
|
+
res[0] = IMembershipMetadata.refreshMetadata.selector;
|
|
17
|
+
res[1] = IMembershipMetadata.tokenURI.selector;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function makeCut(
|
|
21
|
+
address facetAddress,
|
|
22
|
+
IDiamond.FacetCutAction action
|
|
23
|
+
) internal pure returns (IDiamond.FacetCut memory) {
|
|
24
|
+
return IDiamond.FacetCut(facetAddress, action, selectors());
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function deploy() internal returns (address) {
|
|
28
|
+
return LibDeploy.deployCode("MembershipMetadata.sol", "");
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.23;
|
|
3
|
+
|
|
4
|
+
// interfaces
|
|
5
|
+
import {IDiamond} from "@towns-protocol/diamond/src/Diamond.sol";
|
|
6
|
+
import {IERC721A} from "src/diamond/facets/token/ERC721A/IERC721A.sol";
|
|
7
|
+
|
|
8
|
+
// libraries
|
|
9
|
+
import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
|
|
10
|
+
import {DynamicArrayLib} from "solady/utils/DynamicArrayLib.sol";
|
|
11
|
+
|
|
12
|
+
// contracts
|
|
13
|
+
|
|
14
|
+
library DeployMembershipToken {
|
|
15
|
+
using DynamicArrayLib for DynamicArrayLib.DynamicArray;
|
|
16
|
+
|
|
17
|
+
function selectorsExceptTokenURI() internal pure returns (bytes4[] memory res) {
|
|
18
|
+
DynamicArrayLib.DynamicArray memory arr = DynamicArrayLib.p().reserve(12);
|
|
19
|
+
arr.p(IERC721A.totalSupply.selector);
|
|
20
|
+
arr.p(IERC721A.balanceOf.selector);
|
|
21
|
+
arr.p(IERC721A.ownerOf.selector);
|
|
22
|
+
arr.p(IERC721A.transferFrom.selector);
|
|
23
|
+
arr.p(IERC721A.approve.selector);
|
|
24
|
+
arr.p(IERC721A.getApproved.selector);
|
|
25
|
+
arr.p(IERC721A.setApprovalForAll.selector);
|
|
26
|
+
arr.p(IERC721A.isApprovedForAll.selector);
|
|
27
|
+
arr.p(bytes4(keccak256("safeTransferFrom(address,address,uint256)")));
|
|
28
|
+
arr.p(bytes4(keccak256("safeTransferFrom(address,address,uint256,bytes)")));
|
|
29
|
+
arr.p(IERC721A.name.selector);
|
|
30
|
+
arr.p(IERC721A.symbol.selector);
|
|
31
|
+
bytes32[] memory selectors_ = arr.asBytes32Array();
|
|
32
|
+
assembly ("memory-safe") {
|
|
33
|
+
res := selectors_
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function makeCut(
|
|
38
|
+
address facetAddress,
|
|
39
|
+
IDiamond.FacetCutAction action
|
|
40
|
+
) internal pure returns (IDiamond.FacetCut memory) {
|
|
41
|
+
return IDiamond.FacetCut(facetAddress, action, selectorsExceptTokenURI());
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function deploy() internal returns (address) {
|
|
45
|
+
return LibDeploy.deployCode("MembershipToken.sol", "");
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.23;
|
|
3
|
+
|
|
4
|
+
//interfaces
|
|
5
|
+
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
|
|
6
|
+
import {IDiamond} from "@towns-protocol/diamond/src/IDiamond.sol";
|
|
7
|
+
|
|
8
|
+
//libraries
|
|
9
|
+
import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
|
|
10
|
+
|
|
11
|
+
//contracts
|
|
12
|
+
import {MerkleAirdrop} from "src/utils/airdrop/merkle/MerkleAirdrop.sol";
|
|
13
|
+
|
|
14
|
+
library DeployMerkleAirdrop {
|
|
15
|
+
function selectors() internal pure returns (bytes4[] memory res) {
|
|
16
|
+
res = new bytes4[](4);
|
|
17
|
+
res[0] = MerkleAirdrop.claim.selector;
|
|
18
|
+
res[1] = MerkleAirdrop.getMerkleRoot.selector;
|
|
19
|
+
res[2] = MerkleAirdrop.getToken.selector;
|
|
20
|
+
res[3] = MerkleAirdrop.getMessageHash.selector;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function makeCut(
|
|
24
|
+
address facetAddress,
|
|
25
|
+
IDiamond.FacetCutAction action
|
|
26
|
+
) internal pure returns (IDiamond.FacetCut memory) {
|
|
27
|
+
return IDiamond.FacetCut(facetAddress, action, selectors());
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function makeInitData(bytes32 merkleRoot, address token) internal pure returns (bytes memory) {
|
|
31
|
+
return abi.encodeCall(MerkleAirdrop.__MerkleAirdrop_init, (merkleRoot, IERC20(token)));
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function deploy() internal returns (address) {
|
|
35
|
+
return LibDeploy.deployCode("MerkleAirdrop.sol", "");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.23;
|
|
3
|
+
|
|
4
|
+
//interfaces
|
|
5
|
+
import {IDiamond} from "@towns-protocol/diamond/src/IDiamond.sol";
|
|
6
|
+
|
|
7
|
+
//libraries
|
|
8
|
+
import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
|
|
9
|
+
|
|
10
|
+
//contracts
|
|
11
|
+
import {MetadataFacet} from "src/diamond/facets/metadata/MetadataFacet.sol";
|
|
12
|
+
|
|
13
|
+
library DeployMetadata {
|
|
14
|
+
function selectors() internal pure returns (bytes4[] memory res) {
|
|
15
|
+
res = new bytes4[](4);
|
|
16
|
+
res[0] = MetadataFacet.contractType.selector;
|
|
17
|
+
res[1] = MetadataFacet.contractVersion.selector;
|
|
18
|
+
res[2] = MetadataFacet.contractURI.selector;
|
|
19
|
+
res[3] = MetadataFacet.setContractURI.selector;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function makeCut(
|
|
23
|
+
address facetAddress,
|
|
24
|
+
IDiamond.FacetCutAction action
|
|
25
|
+
) internal pure returns (IDiamond.FacetCut memory) {
|
|
26
|
+
return IDiamond.FacetCut(facetAddress, action, selectors());
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function makeInitData(
|
|
30
|
+
bytes32 contractType,
|
|
31
|
+
string memory contractURI
|
|
32
|
+
) internal pure returns (bytes memory) {
|
|
33
|
+
return abi.encodeCall(MetadataFacet.__MetadataFacet_init, (contractType, contractURI));
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function deploy() internal returns (address) {
|
|
37
|
+
return LibDeploy.deployCode("MetadataFacet.sol", "");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.23;
|
|
3
|
+
|
|
4
|
+
//interfaces
|
|
5
|
+
import {IDiamond} from "@towns-protocol/diamond/src/IDiamond.sol";
|
|
6
|
+
|
|
7
|
+
//libraries
|
|
8
|
+
import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
|
|
9
|
+
|
|
10
|
+
//contracts
|
|
11
|
+
import {MockLegacyArchitect} from "test/mocks/legacy/MockLegacyArchitect.sol";
|
|
12
|
+
|
|
13
|
+
library DeployMockLegacyArchitect {
|
|
14
|
+
function selectors() internal pure returns (bytes4[] memory _selectors) {
|
|
15
|
+
_selectors = new bytes4[](1);
|
|
16
|
+
_selectors[0] = MockLegacyArchitect.createSpace.selector;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function makeCut(
|
|
20
|
+
address facetAddress,
|
|
21
|
+
IDiamond.FacetCutAction action
|
|
22
|
+
) internal pure returns (IDiamond.FacetCut memory) {
|
|
23
|
+
return IDiamond.FacetCut(facetAddress, action, selectors());
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function makeInitData() internal pure returns (bytes memory) {
|
|
27
|
+
return abi.encodeCall(MockLegacyArchitect.__Architect_init, ());
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function deploy() internal returns (address) {
|
|
31
|
+
return LibDeploy.deployCode("MockLegacyArchitect.sol", "");
|
|
32
|
+
}
|
|
33
|
+
}
|