@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,28 @@
|
|
|
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 {Deployer} from "scripts/common/Deployer.s.sol";
|
|
11
|
+
|
|
12
|
+
contract DeployEntrypoint is Deployer {
|
|
13
|
+
function versionName() public pure override returns (string memory) {
|
|
14
|
+
return "utils/entrypoint";
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function __deploy(address deployer) internal override returns (address) {
|
|
18
|
+
if (!isAnvil()) revert("not supported");
|
|
19
|
+
|
|
20
|
+
bytes32 salt = bytes32(uint256(1));
|
|
21
|
+
bytes32 initCodeHash = hashInitCode(type(EntryPoint).creationCode);
|
|
22
|
+
address soonToBe = computeCreate2Address(salt, initCodeHash);
|
|
23
|
+
vm.broadcast(deployer);
|
|
24
|
+
EntryPoint entrypoint = new EntryPoint{salt: salt}();
|
|
25
|
+
require(address(entrypoint) == soonToBe, "address mismatch");
|
|
26
|
+
return address(entrypoint);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.0;
|
|
3
|
+
|
|
4
|
+
//interfaces
|
|
5
|
+
|
|
6
|
+
//libraries
|
|
7
|
+
import {MerkleTree} from "test/utils/MerkleTree.sol";
|
|
8
|
+
|
|
9
|
+
//contracts
|
|
10
|
+
import {Deployer} from "scripts/common/Deployer.s.sol";
|
|
11
|
+
import {Member} from "src/tokens/Member.sol";
|
|
12
|
+
|
|
13
|
+
contract DeployMember is Deployer {
|
|
14
|
+
Member private member;
|
|
15
|
+
MerkleTree private merkle;
|
|
16
|
+
|
|
17
|
+
function versionName() public pure override returns (string memory) {
|
|
18
|
+
return "utils/member";
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function __deploy(address deployer) internal override returns (address) {
|
|
22
|
+
vm.startBroadcast(deployer);
|
|
23
|
+
member = new Member(
|
|
24
|
+
"Council Member",
|
|
25
|
+
"MEMBER",
|
|
26
|
+
"https://bafybeihuygd5wm43kmxl4pocbv5uchdrkimhfwk75qgbmtlrqsy2bwwijq.ipfs.nftstorage.link/metadata/",
|
|
27
|
+
""
|
|
28
|
+
);
|
|
29
|
+
member.startWaitlistMint();
|
|
30
|
+
member.startPublicMint();
|
|
31
|
+
vm.stopBroadcast();
|
|
32
|
+
return address(member);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function deployWithProof(address deployer) public returns (address) {
|
|
36
|
+
address[] memory accounts = new address[](5);
|
|
37
|
+
accounts[0] = address(0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266);
|
|
38
|
+
accounts[1] = address(0x70997970C51812dc3A010C7d01b50e0d17dc79C8);
|
|
39
|
+
accounts[2] = address(0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC);
|
|
40
|
+
accounts[3] = address(0x90F79bf6EB2c4f870365E785982E1f101E93b906);
|
|
41
|
+
accounts[4] = address(0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65);
|
|
42
|
+
|
|
43
|
+
uint256[] memory allowances = new uint256[](5);
|
|
44
|
+
allowances[0] = 1;
|
|
45
|
+
allowances[1] = 1;
|
|
46
|
+
allowances[2] = 1;
|
|
47
|
+
allowances[3] = 1;
|
|
48
|
+
allowances[4] = 1;
|
|
49
|
+
|
|
50
|
+
uint256[] memory points = new uint256[](5);
|
|
51
|
+
points[0] = 1;
|
|
52
|
+
points[1] = 1;
|
|
53
|
+
points[2] = 1;
|
|
54
|
+
points[3] = 1;
|
|
55
|
+
points[4] = 1;
|
|
56
|
+
|
|
57
|
+
merkle = new MerkleTree();
|
|
58
|
+
(bytes32 root, bytes32[][] memory tree) = merkle.constructTree(
|
|
59
|
+
accounts,
|
|
60
|
+
allowances,
|
|
61
|
+
points
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
vm.startBroadcast(deployer);
|
|
65
|
+
member = new Member(
|
|
66
|
+
"Council Member",
|
|
67
|
+
"MEMBER",
|
|
68
|
+
"https://bafybeihuygd5wm43kmxl4pocbv5uchdrkimhfwk75qgbmtlrqsy2bwwijq.ipfs.nftstorage.link/metadata/",
|
|
69
|
+
root
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
member.privateMint{value: member.MINT_PRICE()}(
|
|
73
|
+
accounts[0],
|
|
74
|
+
allowances[0],
|
|
75
|
+
merkle.getProof(tree, 0)
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
member.privateMint{value: member.MINT_PRICE()}(
|
|
79
|
+
accounts[1],
|
|
80
|
+
allowances[1],
|
|
81
|
+
merkle.getProof(tree, 1)
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
member.privateMint{value: member.MINT_PRICE()}(
|
|
85
|
+
accounts[2],
|
|
86
|
+
allowances[2],
|
|
87
|
+
merkle.getProof(tree, 2)
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
member.startWaitlistMint();
|
|
91
|
+
member.startPublicMint();
|
|
92
|
+
vm.stopBroadcast();
|
|
93
|
+
return address(member);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.24;
|
|
3
|
+
|
|
4
|
+
import {Deployer} from "scripts/common/Deployer.s.sol";
|
|
5
|
+
import {MockERC20} from "test/mocks/MockERC20.sol";
|
|
6
|
+
|
|
7
|
+
contract DeployMockERC20 is Deployer {
|
|
8
|
+
function versionName() public pure override returns (string memory) {
|
|
9
|
+
return "utils/mockERC20";
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function __deploy(address deployer) internal override returns (address) {
|
|
13
|
+
// bytes32 salt = bytes32(uint256(uint160(deployer))); // create a salt from address
|
|
14
|
+
|
|
15
|
+
// bytes32 initCodeHash = hashInitCode(type(MockERC20).creationCode);
|
|
16
|
+
// address predeterminedAddress = vm.computeCreate2Address(salt, initCodeHash);
|
|
17
|
+
|
|
18
|
+
vm.startBroadcast(deployer);
|
|
19
|
+
MockERC20 deployment = new MockERC20("TownsTest", "TToken");
|
|
20
|
+
vm.stopBroadcast();
|
|
21
|
+
|
|
22
|
+
return address(deployment);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
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
|
+
|
|
7
|
+
// libraries
|
|
8
|
+
import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
|
|
9
|
+
import {DynamicArrayLib} from "solady/utils/DynamicArrayLib.sol";
|
|
10
|
+
import {DeployERC721A} from "../facets/DeployERC721A.s.sol";
|
|
11
|
+
|
|
12
|
+
// contracts
|
|
13
|
+
import {MockERC721A} from "../../../test/mocks/MockERC721A.sol";
|
|
14
|
+
|
|
15
|
+
library DeployMockERC721A {
|
|
16
|
+
using DynamicArrayLib for DynamicArrayLib.DynamicArray;
|
|
17
|
+
|
|
18
|
+
function selectors() internal pure returns (bytes4[] memory res) {
|
|
19
|
+
DynamicArrayLib.DynamicArray memory arr = DynamicArrayLib.p().reserve(16);
|
|
20
|
+
arr.p(MockERC721A.mintTo.selector);
|
|
21
|
+
arr.p(MockERC721A.mint.selector);
|
|
22
|
+
arr.p(MockERC721A.burn.selector);
|
|
23
|
+
{
|
|
24
|
+
bytes4[] memory selectors_ = DeployERC721A.selectors();
|
|
25
|
+
for (uint256 i; i < selectors_.length; ++i) {
|
|
26
|
+
arr.p(selectors_[i]);
|
|
27
|
+
}
|
|
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 deploy() internal returns (address) {
|
|
43
|
+
return LibDeploy.deployCode("MockERC721A.sol", "");
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -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
|
+
|
|
7
|
+
//libraries
|
|
8
|
+
import {LibDeploy} from "@towns-protocol/diamond/src/utils/LibDeploy.sol";
|
|
9
|
+
|
|
10
|
+
//contracts
|
|
11
|
+
import {MockLegacyMembership} from "test/mocks/legacy/membership/MockLegacyMembership.sol";
|
|
12
|
+
|
|
13
|
+
library DeployMockLegacyMembership {
|
|
14
|
+
function selectors() internal pure returns (bytes4[] memory res) {
|
|
15
|
+
res = new bytes4[](1);
|
|
16
|
+
res[0] = MockLegacyMembership.joinSpaceLegacy.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("MockLegacyMembership.sol", "");
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.23;
|
|
3
|
+
|
|
4
|
+
//interfaces
|
|
5
|
+
|
|
6
|
+
//libraries
|
|
7
|
+
|
|
8
|
+
//contracts
|
|
9
|
+
import {Deployer} from "scripts/common/Deployer.s.sol";
|
|
10
|
+
import {MockMessenger} from "test/mocks/MockMessenger.sol";
|
|
11
|
+
|
|
12
|
+
contract DeployMockMessenger is Deployer {
|
|
13
|
+
function versionName() public pure override returns (string memory) {
|
|
14
|
+
return "facets/mockMessengerFacet";
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function __deploy(address deployer) internal override returns (address) {
|
|
18
|
+
if (isAnvil() || isTesting()) {
|
|
19
|
+
vm.startBroadcast(deployer);
|
|
20
|
+
MockMessenger messenger = new MockMessenger();
|
|
21
|
+
vm.stopBroadcast();
|
|
22
|
+
return address(messenger);
|
|
23
|
+
} else {
|
|
24
|
+
return _getMessenger();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function _getMessenger() internal view returns (address) {
|
|
29
|
+
// Base or Base (Sepolia)
|
|
30
|
+
if (block.chainid == 8453 || block.chainid == 84_532) {
|
|
31
|
+
return 0x4200000000000000000000000000000000000007;
|
|
32
|
+
} else if (block.chainid == 1) {
|
|
33
|
+
// Mainnet
|
|
34
|
+
return 0x866E82a600A1414e583f7F13623F1aC5d58b0Afa;
|
|
35
|
+
} else if (block.chainid == 11_155_111) {
|
|
36
|
+
// Sepolia
|
|
37
|
+
return 0xC34855F4De64F1840e5686e64278da901e261f20;
|
|
38
|
+
} else {
|
|
39
|
+
revert("DeployMockMessenger: Invalid network");
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.23;
|
|
3
|
+
|
|
4
|
+
// interfaces
|
|
5
|
+
|
|
6
|
+
// libraries
|
|
7
|
+
import {DeployDiamondCut} from "@towns-protocol/diamond/scripts/deployments/facets/DeployDiamondCut.sol";
|
|
8
|
+
import {DeployDiamondLoupe} from "@towns-protocol/diamond/scripts/deployments/facets/DeployDiamondLoupe.sol";
|
|
9
|
+
import {DeployIntrospection} from "@towns-protocol/diamond/scripts/deployments/facets/DeployIntrospection.sol";
|
|
10
|
+
import {DeployMockERC721A} from "../../deployments/utils/DeployMockERC721A.s.sol";
|
|
11
|
+
import {LibString} from "solady/utils/LibString.sol";
|
|
12
|
+
|
|
13
|
+
// contracts
|
|
14
|
+
import {DiamondHelper} from "@towns-protocol/diamond/scripts/common/helpers/DiamondHelper.s.sol";
|
|
15
|
+
import {Diamond} from "@towns-protocol/diamond/src/Diamond.sol";
|
|
16
|
+
import {MultiInit} from "@towns-protocol/diamond/src/initializers/MultiInit.sol";
|
|
17
|
+
|
|
18
|
+
// deployers
|
|
19
|
+
import {DeployFacet} from "../../common/DeployFacet.s.sol";
|
|
20
|
+
import {Deployer} from "../../common/Deployer.s.sol";
|
|
21
|
+
|
|
22
|
+
contract DeployMockNFT is DiamondHelper, Deployer {
|
|
23
|
+
using LibString for string;
|
|
24
|
+
|
|
25
|
+
DeployFacet private facetHelper = new DeployFacet();
|
|
26
|
+
|
|
27
|
+
function versionName() public pure override returns (string memory) {
|
|
28
|
+
return "utils/mockNFT";
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function diamondInitParams(address deployer) public returns (Diamond.InitParams memory) {
|
|
32
|
+
// Queue up all facets for batch deployment
|
|
33
|
+
facetHelper.add("MultiInit");
|
|
34
|
+
facetHelper.add("DiamondCutFacet");
|
|
35
|
+
facetHelper.add("DiamondLoupeFacet");
|
|
36
|
+
facetHelper.add("IntrospectionFacet");
|
|
37
|
+
facetHelper.add("MockERC721A");
|
|
38
|
+
|
|
39
|
+
// Deploy all facets in a single batch transaction
|
|
40
|
+
facetHelper.deployBatch(deployer);
|
|
41
|
+
|
|
42
|
+
// Get deployed addresses
|
|
43
|
+
address facet = facetHelper.getDeployedAddress("DiamondCutFacet");
|
|
44
|
+
addFacet(
|
|
45
|
+
makeCut(facet, FacetCutAction.Add, DeployDiamondCut.selectors()),
|
|
46
|
+
facet,
|
|
47
|
+
DeployDiamondCut.makeInitData()
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
facet = facetHelper.getDeployedAddress("DiamondLoupeFacet");
|
|
51
|
+
addFacet(
|
|
52
|
+
makeCut(facet, FacetCutAction.Add, DeployDiamondLoupe.selectors()),
|
|
53
|
+
facet,
|
|
54
|
+
DeployDiamondLoupe.makeInitData()
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
facet = facetHelper.getDeployedAddress("IntrospectionFacet");
|
|
58
|
+
addFacet(
|
|
59
|
+
makeCut(facet, FacetCutAction.Add, DeployIntrospection.selectors()),
|
|
60
|
+
facet,
|
|
61
|
+
DeployIntrospection.makeInitData()
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
// Add ERC721A mock
|
|
65
|
+
facet = facetHelper.getDeployedAddress("MockERC721A");
|
|
66
|
+
addCut(makeCut(facet, FacetCutAction.Add, DeployMockERC721A.selectors()));
|
|
67
|
+
|
|
68
|
+
address multiInit = facetHelper.getDeployedAddress("MultiInit");
|
|
69
|
+
|
|
70
|
+
return
|
|
71
|
+
Diamond.InitParams({
|
|
72
|
+
baseFacets: baseFacets(),
|
|
73
|
+
init: multiInit,
|
|
74
|
+
initData: abi.encodeCall(MultiInit.multiInit, (_initAddresses, _initDatas))
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function __deploy(address deployer) internal override returns (address) {
|
|
79
|
+
Diamond.InitParams memory initDiamondCut = diamondInitParams(deployer);
|
|
80
|
+
|
|
81
|
+
vm.broadcast(deployer);
|
|
82
|
+
Diamond diamond = new Diamond(initDiamondCut);
|
|
83
|
+
|
|
84
|
+
return address(diamond);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.24;
|
|
3
|
+
|
|
4
|
+
import {Deployer} from "scripts/common/Deployer.s.sol";
|
|
5
|
+
import {PoapEntitlement} from "src/spaces/entitlements/poap/PoapEntitlement.sol";
|
|
6
|
+
|
|
7
|
+
contract DeployPoapEntitlement is Deployer {
|
|
8
|
+
function versionName() public pure override returns (string memory) {
|
|
9
|
+
return "utils/poapEntitlement";
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function __deploy(address deployer) internal override returns (address) {
|
|
13
|
+
vm.broadcast(deployer);
|
|
14
|
+
return address(new PoapEntitlement(0x22C1f6050E56d2876009903609a2cC3fEf83B415));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.23;
|
|
3
|
+
|
|
4
|
+
// interfaces
|
|
5
|
+
|
|
6
|
+
// libraries
|
|
7
|
+
|
|
8
|
+
// contracts
|
|
9
|
+
import {Deployer} from "../../common/Deployer.s.sol";
|
|
10
|
+
import {ProxyBatchDelegation} from "src/tokens/mainnet/delegation/ProxyBatchDelegation.sol";
|
|
11
|
+
import {MockMessenger} from "test/mocks/MockMessenger.sol";
|
|
12
|
+
|
|
13
|
+
// deployments
|
|
14
|
+
import {DeployTownsMainnet} from "./DeployTownsMainnet.s.sol";
|
|
15
|
+
|
|
16
|
+
contract DeployProxyBatchDelegation is Deployer {
|
|
17
|
+
address internal constant CLAIMERS = 0x0bEe55b52d01C4D5d4D0cfcE1d6e0baE6722db05;
|
|
18
|
+
address internal constant BASE_REGISTRY = 0x7c0422b31401C936172C897802CF0373B35B7698;
|
|
19
|
+
address internal constant BASE_REGISTRY_SEPOLIA = 0x08cC41b782F27d62995056a4EF2fCBAe0d3c266F;
|
|
20
|
+
address internal constant MESSENGER = 0x866E82a600A1414e583f7F13623F1aC5d58b0Afa;
|
|
21
|
+
address internal constant MESSENGER_SEPOLIA = 0xC34855F4De64F1840e5686e64278da901e261f20;
|
|
22
|
+
|
|
23
|
+
// Mainnet
|
|
24
|
+
DeployTownsMainnet internal townsHelper = new DeployTownsMainnet();
|
|
25
|
+
|
|
26
|
+
address public townsToken;
|
|
27
|
+
address public claimers;
|
|
28
|
+
address public mainnetDelegation;
|
|
29
|
+
address public messenger;
|
|
30
|
+
address public vault;
|
|
31
|
+
|
|
32
|
+
function versionName() public pure override returns (string memory) {
|
|
33
|
+
return "utils/proxyBatchDelegation";
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function setDependencies(address mainnetDelegation_, address messenger_) external {
|
|
37
|
+
mainnetDelegation = mainnetDelegation_;
|
|
38
|
+
messenger = messenger_;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function __deploy(address deployer) internal override returns (address) {
|
|
42
|
+
townsToken = townsHelper.deploy(deployer);
|
|
43
|
+
debug("DeployProxyBatchDelegation: townsToken: %s", townsToken);
|
|
44
|
+
|
|
45
|
+
vault = townsHelper.vault();
|
|
46
|
+
|
|
47
|
+
claimers = _getClaimers(deployer);
|
|
48
|
+
debug("DeployProxyBatchDelegation: claimers: %s", claimers);
|
|
49
|
+
|
|
50
|
+
if (messenger == address(0)) {
|
|
51
|
+
if (isAnvil() || isTesting()) {
|
|
52
|
+
vm.broadcast(deployer);
|
|
53
|
+
messenger = address(new MockMessenger());
|
|
54
|
+
} else {
|
|
55
|
+
messenger = getMessenger();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
debug("DeployProxyBatchDelegation: messenger: %s", messenger);
|
|
59
|
+
|
|
60
|
+
if (mainnetDelegation == address(0)) {
|
|
61
|
+
mainnetDelegation = _getMainnetDelegation();
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (townsToken == address(0)) {
|
|
65
|
+
revert("DeployProxyBatchDelegation: Towns token not deployed");
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (claimers == address(0)) {
|
|
69
|
+
revert("DeployProxyBatchDelegation: Claimers not deployed");
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
vm.broadcast(deployer);
|
|
73
|
+
return
|
|
74
|
+
address(new ProxyBatchDelegation(townsToken, claimers, messenger, mainnetDelegation));
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function _getClaimers(address deployer) internal returns (address) {
|
|
78
|
+
if (block.chainid == 1) {
|
|
79
|
+
return CLAIMERS;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
vm.broadcast(deployer);
|
|
83
|
+
return deployCode("AuthorizedClaimers", "");
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function _getMainnetDelegation() internal returns (address) {
|
|
87
|
+
if (block.chainid == 84_532 || block.chainid == 11_155_111) {
|
|
88
|
+
// base registry on base sepolia
|
|
89
|
+
return BASE_REGISTRY_SEPOLIA;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (block.chainid == 1) {
|
|
93
|
+
// Base Registry contract on Base
|
|
94
|
+
return BASE_REGISTRY;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return getDeployment("baseRegistry");
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function getMessenger() public view returns (address) {
|
|
101
|
+
// Base or Base (Sepolia)
|
|
102
|
+
if (block.chainid == 8453 || block.chainid == 84_532) {
|
|
103
|
+
return 0x4200000000000000000000000000000000000007;
|
|
104
|
+
} else if (block.chainid == 1) {
|
|
105
|
+
return MESSENGER;
|
|
106
|
+
} else if (block.chainid == 11_155_111) {
|
|
107
|
+
return MESSENGER_SEPOLIA;
|
|
108
|
+
} else {
|
|
109
|
+
revert("DeployProxyDelegation: Invalid network");
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.23;
|
|
3
|
+
|
|
4
|
+
//interfaces
|
|
5
|
+
|
|
6
|
+
//libraries
|
|
7
|
+
|
|
8
|
+
//contracts
|
|
9
|
+
import {SpaceProxyInitializer} from "src/spaces/facets/proxy/SpaceProxyInitializer.sol";
|
|
10
|
+
import {Deployer} from "scripts/common/Deployer.s.sol";
|
|
11
|
+
|
|
12
|
+
contract DeploySpaceProxyInitializer is Deployer {
|
|
13
|
+
function versionName() public pure override returns (string memory) {
|
|
14
|
+
return "utils/spaceProxyInitializer";
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function __deploy(address deployer) internal override returns (address) {
|
|
18
|
+
bytes32 salt = bytes32(uint256(1));
|
|
19
|
+
bytes32 initCodeHash = hashInitCode(type(SpaceProxyInitializer).creationCode);
|
|
20
|
+
address soonToBe = vm.computeCreate2Address(salt, initCodeHash);
|
|
21
|
+
|
|
22
|
+
vm.broadcast(deployer);
|
|
23
|
+
SpaceProxyInitializer initializer = new SpaceProxyInitializer{salt: salt}();
|
|
24
|
+
|
|
25
|
+
require(address(initializer) == soonToBe, "address mismatch");
|
|
26
|
+
return address(initializer);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.23;
|
|
3
|
+
|
|
4
|
+
//interfaces
|
|
5
|
+
|
|
6
|
+
//libraries
|
|
7
|
+
|
|
8
|
+
//contracts
|
|
9
|
+
import {TieredLogPricing} from "scripts/deployments/utils/pricing/TieredLogPricing.s.sol";
|
|
10
|
+
import {TieredLogPricingOracleV2} from "src/spaces/facets/membership/pricing/tiered/TieredLogPricingOracleV2.sol";
|
|
11
|
+
|
|
12
|
+
contract DeployTieredLogPricingV2 is TieredLogPricing {
|
|
13
|
+
function versionName() public pure override returns (string memory) {
|
|
14
|
+
return "utils/tieredLogPricingV2";
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function __deploy(address deployer) internal override returns (address) {
|
|
18
|
+
address oracle = isAnvil() ? _setupLocalOracle(deployer) : _getOracleAddress();
|
|
19
|
+
|
|
20
|
+
vm.broadcast(deployer);
|
|
21
|
+
return address(new TieredLogPricingOracleV2(oracle));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.23;
|
|
3
|
+
|
|
4
|
+
//interfaces
|
|
5
|
+
|
|
6
|
+
//libraries
|
|
7
|
+
|
|
8
|
+
//contracts
|
|
9
|
+
import {TieredLogPricing} from "scripts/deployments/utils/pricing/TieredLogPricing.s.sol";
|
|
10
|
+
import {TieredLogPricingOracleV3} from "src/spaces/facets/membership/pricing/tiered/TieredLogPricingOracleV3.sol";
|
|
11
|
+
|
|
12
|
+
contract DeployTieredLogPricingV3 is TieredLogPricing {
|
|
13
|
+
function versionName() public pure override returns (string memory) {
|
|
14
|
+
return "utils/tieredLogPricingV3";
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function __deploy(address deployer) internal override returns (address) {
|
|
18
|
+
address oracle = isAnvil() ? _setupLocalOracle(deployer) : _getOracleAddress();
|
|
19
|
+
|
|
20
|
+
vm.broadcast(deployer);
|
|
21
|
+
return address(new TieredLogPricingOracleV3(oracle));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.19;
|
|
3
|
+
|
|
4
|
+
//interfaces
|
|
5
|
+
|
|
6
|
+
//libraries
|
|
7
|
+
import {Create2Utils} from "../../../src/utils/libraries/Create2Utils.sol";
|
|
8
|
+
|
|
9
|
+
//contracts
|
|
10
|
+
import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol";
|
|
11
|
+
import {Deployer} from "scripts/common/Deployer.s.sol";
|
|
12
|
+
import {Towns} from "src/tokens/towns/base/Towns.sol";
|
|
13
|
+
import {TownsDeployer} from "src/tokens/towns/base/TownsDeployer.sol";
|
|
14
|
+
import {TownsDeployer} from "src/tokens/towns/base/TownsDeployer.sol";
|
|
15
|
+
import {MockTowns} from "test/mocks/MockTowns.sol";
|
|
16
|
+
import {MockTownsDeployer} from "test/mocks/MockTownsDeployer.sol";
|
|
17
|
+
|
|
18
|
+
contract DeployTownsBase is Deployer {
|
|
19
|
+
address public l1Token = 0x000000Fa00b200406de700041CFc6b19BbFB4d13;
|
|
20
|
+
bytes32 public implSalt;
|
|
21
|
+
bytes32 public proxySalt;
|
|
22
|
+
|
|
23
|
+
function versionName() public pure override returns (string memory) {
|
|
24
|
+
return "utils/towns";
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function __deploy(address deployer) internal override returns (address) {
|
|
28
|
+
(implSalt, proxySalt) = _getSalts();
|
|
29
|
+
|
|
30
|
+
address vault = _getVault(deployer);
|
|
31
|
+
address proxy = _proxyAddress(_implAddress(implSalt), proxySalt, l1Token, vault);
|
|
32
|
+
|
|
33
|
+
vm.startBroadcast(deployer);
|
|
34
|
+
if (isAnvil()) {
|
|
35
|
+
new MockTownsDeployer(l1Token, vault, implSalt, proxySalt);
|
|
36
|
+
} else {
|
|
37
|
+
new TownsDeployer(l1Token, vault, implSalt, proxySalt);
|
|
38
|
+
}
|
|
39
|
+
vm.stopBroadcast();
|
|
40
|
+
|
|
41
|
+
return proxy;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function _implAddress(bytes32 salt) internal view returns (address impl) {
|
|
45
|
+
if (isAnvil()) {
|
|
46
|
+
impl = Create2Utils.computeCreate2Address(salt, type(MockTowns).creationCode);
|
|
47
|
+
} else {
|
|
48
|
+
impl = Create2Utils.computeCreate2Address(salt, type(Towns).creationCode);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function _proxyAddress(
|
|
53
|
+
address impl,
|
|
54
|
+
bytes32 salt,
|
|
55
|
+
address remoteToken,
|
|
56
|
+
address owner
|
|
57
|
+
) internal pure returns (address proxy) {
|
|
58
|
+
bytes memory byteCode = abi.encodePacked(
|
|
59
|
+
type(ERC1967Proxy).creationCode,
|
|
60
|
+
abi.encode(
|
|
61
|
+
impl,
|
|
62
|
+
abi.encodePacked(Towns.initialize.selector, abi.encode(remoteToken, owner))
|
|
63
|
+
)
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
proxy = Create2Utils.computeCreate2Address(salt, byteCode);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function setSalts(bytes32 impl, bytes32 proxy) public {
|
|
70
|
+
implSalt = impl;
|
|
71
|
+
proxySalt = proxy;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function _getVault(address deployer) internal view returns (address) {
|
|
75
|
+
if (isAnvil()) {
|
|
76
|
+
return deployer;
|
|
77
|
+
} else {
|
|
78
|
+
return 0x63217D4c321CC02Ed306cB3843309184D347667B; // DAO
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function _getSalts() internal view returns (bytes32 impl, bytes32 proxy) {
|
|
83
|
+
if (implSalt != bytes32(0) && proxySalt != bytes32(0)) {
|
|
84
|
+
return (implSalt, proxySalt);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (isAnvil()) {
|
|
88
|
+
impl = 0x4e59b44847b379578588920ca78fbf26c0b4956c346fdfc0a289d4a53c0000c0;
|
|
89
|
+
proxy = 0x4e59b44847b379578588920ca78fbf26c0b4956c83c2f2967966f90700000000;
|
|
90
|
+
} else {
|
|
91
|
+
impl = 0x4e59b44847b379578588920ca78fbf26c0b4956c8ea716a80f934b1756000020;
|
|
92
|
+
proxy = 0x4e59b44847b379578588920ca78fbf26c0b4956c1594db1b919831030e120040;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|