@towns-labs/web3 2.0.1
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/README.md +3 -0
- package/dist/BaseContractShim.d.ts +57 -0
- package/dist/BaseContractShim.d.ts.map +1 -0
- package/dist/BaseContractShim.js +224 -0
- package/dist/BaseContractShim.js.map +1 -0
- package/dist/airdrop/IDropFacetShim.d.ts +9 -0
- package/dist/airdrop/IDropFacetShim.d.ts.map +1 -0
- package/dist/airdrop/IDropFacetShim.js +9 -0
- package/dist/airdrop/IDropFacetShim.js.map +1 -0
- package/dist/airdrop/IRiverPointsShim.d.ts +9 -0
- package/dist/airdrop/IRiverPointsShim.d.ts.map +1 -0
- package/dist/airdrop/IRiverPointsShim.js +9 -0
- package/dist/airdrop/IRiverPointsShim.js.map +1 -0
- package/dist/airdrop/RiverAirdropDapp.d.ts +16 -0
- package/dist/airdrop/RiverAirdropDapp.d.ts.map +1 -0
- package/dist/airdrop/RiverAirdropDapp.js +30 -0
- package/dist/airdrop/RiverAirdropDapp.js.map +1 -0
- package/dist/app-registry/AppRegistryDapp.d.ts +68 -0
- package/dist/app-registry/AppRegistryDapp.d.ts.map +1 -0
- package/dist/app-registry/AppRegistryDapp.js +182 -0
- package/dist/app-registry/AppRegistryDapp.js.map +1 -0
- package/dist/app-registry/IAppFactoryShim.d.ts +9 -0
- package/dist/app-registry/IAppFactoryShim.d.ts.map +1 -0
- package/dist/app-registry/IAppFactoryShim.js +9 -0
- package/dist/app-registry/IAppFactoryShim.js.map +1 -0
- package/dist/app-registry/IAppInstallerShim.d.ts +9 -0
- package/dist/app-registry/IAppInstallerShim.d.ts.map +1 -0
- package/dist/app-registry/IAppInstallerShim.js +9 -0
- package/dist/app-registry/IAppInstallerShim.js.map +1 -0
- package/dist/app-registry/IAppRegistryShim.d.ts +9 -0
- package/dist/app-registry/IAppRegistryShim.d.ts.map +1 -0
- package/dist/app-registry/IAppRegistryShim.js +9 -0
- package/dist/app-registry/IAppRegistryShim.js.map +1 -0
- package/dist/app-registry/IIdentityRegistryShim.d.ts +9 -0
- package/dist/app-registry/IIdentityRegistryShim.d.ts.map +1 -0
- package/dist/app-registry/IIdentityRegistryShim.js +9 -0
- package/dist/app-registry/IIdentityRegistryShim.js.map +1 -0
- package/dist/app-registry/IReputationRegistryShim.d.ts +9 -0
- package/dist/app-registry/IReputationRegistryShim.d.ts.map +1 -0
- package/dist/app-registry/IReputationRegistryShim.js +9 -0
- package/dist/app-registry/IReputationRegistryShim.js.map +1 -0
- package/dist/app-registry/SimpleAppShim.d.ts +9 -0
- package/dist/app-registry/SimpleAppShim.d.ts.map +1 -0
- package/dist/app-registry/SimpleAppShim.js +9 -0
- package/dist/app-registry/SimpleAppShim.js.map +1 -0
- package/dist/base-registry/BaseRegistry.d.ts +32 -0
- package/dist/base-registry/BaseRegistry.d.ts.map +1 -0
- package/dist/base-registry/BaseRegistry.js +67 -0
- package/dist/base-registry/BaseRegistry.js.map +1 -0
- package/dist/base-registry/IEntitlementCheckerShim.d.ts +9 -0
- package/dist/base-registry/IEntitlementCheckerShim.d.ts.map +1 -0
- package/dist/base-registry/IEntitlementCheckerShim.js +9 -0
- package/dist/base-registry/IEntitlementCheckerShim.js.map +1 -0
- package/dist/base-registry/INodeOperatorShim.d.ts +9 -0
- package/dist/base-registry/INodeOperatorShim.d.ts.map +1 -0
- package/dist/base-registry/INodeOperatorShim.js +9 -0
- package/dist/base-registry/INodeOperatorShim.js.map +1 -0
- package/dist/base-registry/ISpaceDelegationShim.d.ts +9 -0
- package/dist/base-registry/ISpaceDelegationShim.d.ts.map +1 -0
- package/dist/base-registry/ISpaceDelegationShim.js +9 -0
- package/dist/base-registry/ISpaceDelegationShim.js.map +1 -0
- package/dist/base-registry/RewardsDistributionShim.d.ts +9 -0
- package/dist/base-registry/RewardsDistributionShim.d.ts.map +1 -0
- package/dist/base-registry/RewardsDistributionShim.js +9 -0
- package/dist/base-registry/RewardsDistributionShim.js.map +1 -0
- package/dist/cache/EntitlementCache.d.ts +25 -0
- package/dist/cache/EntitlementCache.d.ts.map +1 -0
- package/dist/cache/EntitlementCache.js +91 -0
- package/dist/cache/EntitlementCache.js.map +1 -0
- package/dist/cache/ICacheStorage.d.ts +44 -0
- package/dist/cache/ICacheStorage.d.ts.map +1 -0
- package/dist/cache/ICacheStorage.js +2 -0
- package/dist/cache/ICacheStorage.js.map +1 -0
- package/dist/cache/KVCacheStorage.d.ts +79 -0
- package/dist/cache/KVCacheStorage.d.ts.map +1 -0
- package/dist/cache/KVCacheStorage.js +227 -0
- package/dist/cache/KVCacheStorage.js.map +1 -0
- package/dist/cache/Keyable.d.ts +20 -0
- package/dist/cache/Keyable.d.ts.map +1 -0
- package/dist/cache/Keyable.js +62 -0
- package/dist/cache/Keyable.js.map +1 -0
- package/dist/cache/SimpleCache.d.ts +30 -0
- package/dist/cache/SimpleCache.d.ts.map +1 -0
- package/dist/cache/SimpleCache.js +84 -0
- package/dist/cache/SimpleCache.js.map +1 -0
- package/dist/cache/TTLCacheStorage.d.ts +19 -0
- package/dist/cache/TTLCacheStorage.d.ts.map +1 -0
- package/dist/cache/TTLCacheStorage.js +40 -0
- package/dist/cache/TTLCacheStorage.js.map +1 -0
- package/dist/chain.d.ts +89 -0
- package/dist/chain.d.ts.map +1 -0
- package/dist/chain.js +48 -0
- package/dist/chain.js.map +1 -0
- package/dist/delegate-registry/DelegateRegistry.d.ts +3 -0
- package/dist/delegate-registry/DelegateRegistry.d.ts.map +1 -0
- package/dist/delegate-registry/DelegateRegistry.js +72 -0
- package/dist/delegate-registry/DelegateRegistry.js.map +1 -0
- package/dist/eip-712/EIP-712.d.ts +35 -0
- package/dist/eip-712/EIP-712.d.ts.map +1 -0
- package/dist/eip-712/EIP-712.js +57 -0
- package/dist/eip-712/EIP-712.js.map +1 -0
- package/dist/erc-721/IERC721AQueryableShim.d.ts +9 -0
- package/dist/erc-721/IERC721AQueryableShim.d.ts.map +1 -0
- package/dist/erc-721/IERC721AQueryableShim.js +9 -0
- package/dist/erc-721/IERC721AQueryableShim.js.map +1 -0
- package/dist/erc-721/IERC721AShim.d.ts +9 -0
- package/dist/erc-721/IERC721AShim.d.ts.map +1 -0
- package/dist/erc-721/IERC721AShim.js +9 -0
- package/dist/erc-721/IERC721AShim.js.map +1 -0
- package/dist/index.d.ts +96 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +96 -0
- package/dist/index.js.map +1 -0
- package/dist/platform-requirements/PlatformRequirements.d.ts +12 -0
- package/dist/platform-requirements/PlatformRequirements.d.ts.map +1 -0
- package/dist/platform-requirements/PlatformRequirements.js +18 -0
- package/dist/platform-requirements/PlatformRequirements.js.map +1 -0
- package/dist/pricing-modules/IPricingShim.d.ts +9 -0
- package/dist/pricing-modules/IPricingShim.d.ts.map +1 -0
- package/dist/pricing-modules/IPricingShim.js +9 -0
- package/dist/pricing-modules/IPricingShim.js.map +1 -0
- package/dist/pricing-modules/PricingModules.d.ts +13 -0
- package/dist/pricing-modules/PricingModules.d.ts.map +1 -0
- package/dist/pricing-modules/PricingModules.js +23 -0
- package/dist/pricing-modules/PricingModules.js.map +1 -0
- package/dist/pricing-modules/helpers.d.ts +16 -0
- package/dist/pricing-modules/helpers.d.ts.map +1 -0
- package/dist/pricing-modules/helpers.js +35 -0
- package/dist/pricing-modules/helpers.js.map +1 -0
- package/dist/readContractRetryer.d.ts +10 -0
- package/dist/readContractRetryer.d.ts.map +1 -0
- package/dist/readContractRetryer.js +68 -0
- package/dist/readContractRetryer.js.map +1 -0
- package/dist/river-registry/INodeRegistryShim.d.ts +9 -0
- package/dist/river-registry/INodeRegistryShim.d.ts.map +1 -0
- package/dist/river-registry/INodeRegistryShim.js +9 -0
- package/dist/river-registry/INodeRegistryShim.js.map +1 -0
- package/dist/river-registry/IOperatorRegistryShim.d.ts +9 -0
- package/dist/river-registry/IOperatorRegistryShim.d.ts.map +1 -0
- package/dist/river-registry/IOperatorRegistryShim.js +9 -0
- package/dist/river-registry/IOperatorRegistryShim.js.map +1 -0
- package/dist/river-registry/IStreamRegistryShim.d.ts +9 -0
- package/dist/river-registry/IStreamRegistryShim.d.ts.map +1 -0
- package/dist/river-registry/IStreamRegistryShim.js +9 -0
- package/dist/river-registry/IStreamRegistryShim.js.map +1 -0
- package/dist/river-registry/RiverRegistry.d.ts +18 -0
- package/dist/river-registry/RiverRegistry.d.ts.map +1 -0
- package/dist/river-registry/RiverRegistry.js +42 -0
- package/dist/river-registry/RiverRegistry.js.map +1 -0
- package/dist/river-registry/RiverRegistryFactory.d.ts +5 -0
- package/dist/river-registry/RiverRegistryFactory.d.ts.map +1 -0
- package/dist/river-registry/RiverRegistryFactory.js +5 -0
- package/dist/river-registry/RiverRegistryFactory.js.map +1 -0
- package/dist/space/IAppAccountShim.d.ts +9 -0
- package/dist/space/IAppAccountShim.d.ts.map +1 -0
- package/dist/space/IAppAccountShim.js +9 -0
- package/dist/space/IAppAccountShim.js.map +1 -0
- package/dist/space/IBanningShim.d.ts +9 -0
- package/dist/space/IBanningShim.d.ts.map +1 -0
- package/dist/space/IBanningShim.js +9 -0
- package/dist/space/IBanningShim.js.map +1 -0
- package/dist/space/IChannelShim.d.ts +9 -0
- package/dist/space/IChannelShim.d.ts.map +1 -0
- package/dist/space/IChannelShim.js +9 -0
- package/dist/space/IChannelShim.js.map +1 -0
- package/dist/space/IEntitlementDataQueryableShim.d.ts +11 -0
- package/dist/space/IEntitlementDataQueryableShim.d.ts.map +1 -0
- package/dist/space/IEntitlementDataQueryableShim.js +9 -0
- package/dist/space/IEntitlementDataQueryableShim.js.map +1 -0
- package/dist/space/IEntitlementsShim.d.ts +13 -0
- package/dist/space/IEntitlementsShim.d.ts.map +1 -0
- package/dist/space/IEntitlementsShim.js +19 -0
- package/dist/space/IEntitlementsShim.js.map +1 -0
- package/dist/space/IMembershipMetadataShim.d.ts +9 -0
- package/dist/space/IMembershipMetadataShim.d.ts.map +1 -0
- package/dist/space/IMembershipMetadataShim.js +9 -0
- package/dist/space/IMembershipMetadataShim.js.map +1 -0
- package/dist/space/IMembershipShim.d.ts +33 -0
- package/dist/space/IMembershipShim.d.ts.map +1 -0
- package/dist/space/IMembershipShim.js +139 -0
- package/dist/space/IMembershipShim.js.map +1 -0
- package/dist/space/IMulticallShim.d.ts +13 -0
- package/dist/space/IMulticallShim.d.ts.map +1 -0
- package/dist/space/IMulticallShim.js +15 -0
- package/dist/space/IMulticallShim.js.map +1 -0
- package/dist/space/IReviewShim.d.ts +64 -0
- package/dist/space/IReviewShim.d.ts.map +1 -0
- package/dist/space/IReviewShim.js +102 -0
- package/dist/space/IReviewShim.js.map +1 -0
- package/dist/space/IRolesShim.d.ts +10 -0
- package/dist/space/IRolesShim.d.ts.map +1 -0
- package/dist/space/IRolesShim.js +9 -0
- package/dist/space/IRolesShim.js.map +1 -0
- package/dist/space/ITippingShim.d.ts +39 -0
- package/dist/space/ITippingShim.d.ts.map +1 -0
- package/dist/space/ITippingShim.js +76 -0
- package/dist/space/ITippingShim.js.map +1 -0
- package/dist/space/ITreasuryShim.d.ts +9 -0
- package/dist/space/ITreasuryShim.d.ts.map +1 -0
- package/dist/space/ITreasuryShim.js +9 -0
- package/dist/space/ITreasuryShim.js.map +1 -0
- package/dist/space/OwnableFacetShim.d.ts +12 -0
- package/dist/space/OwnableFacetShim.d.ts.map +1 -0
- package/dist/space/OwnableFacetShim.js +19 -0
- package/dist/space/OwnableFacetShim.js.map +1 -0
- package/dist/space/Space.d.ts +107 -0
- package/dist/space/Space.d.ts.map +1 -0
- package/dist/space/Space.js +511 -0
- package/dist/space/Space.js.map +1 -0
- package/dist/space/TokenPausableFacetShim.d.ts +9 -0
- package/dist/space/TokenPausableFacetShim.d.ts.map +1 -0
- package/dist/space/TokenPausableFacetShim.js +9 -0
- package/dist/space/TokenPausableFacetShim.js.map +1 -0
- package/dist/space/entitlements/ConvertersEntitlements.d.ts +14 -0
- package/dist/space/entitlements/ConvertersEntitlements.d.ts.map +1 -0
- package/dist/space/entitlements/ConvertersEntitlements.js +193 -0
- package/dist/space/entitlements/ConvertersEntitlements.js.map +1 -0
- package/dist/space/entitlements/RuleBuilder.d.ts +83 -0
- package/dist/space/entitlements/RuleBuilder.d.ts.map +1 -0
- package/dist/space/entitlements/RuleBuilder.js +86 -0
- package/dist/space/entitlements/RuleBuilder.js.map +1 -0
- package/dist/space/entitlements/RuleEntitlementShim.d.ts +353 -0
- package/dist/space/entitlements/RuleEntitlementShim.d.ts.map +1 -0
- package/dist/space/entitlements/RuleEntitlementShim.js +40 -0
- package/dist/space/entitlements/RuleEntitlementShim.js.map +1 -0
- package/dist/space/entitlements/RuleEntitlementV2Shim.d.ts +353 -0
- package/dist/space/entitlements/RuleEntitlementV2Shim.d.ts.map +1 -0
- package/dist/space/entitlements/RuleEntitlementV2Shim.js +40 -0
- package/dist/space/entitlements/RuleEntitlementV2Shim.js.map +1 -0
- package/dist/space/entitlements/UserEntitlementShim.d.ts +13 -0
- package/dist/space/entitlements/UserEntitlementShim.d.ts.map +1 -0
- package/dist/space/entitlements/UserEntitlementShim.js +45 -0
- package/dist/space/entitlements/UserEntitlementShim.js.map +1 -0
- package/dist/space/entitlements/XChainConfig.d.ts +14 -0
- package/dist/space/entitlements/XChainConfig.d.ts.map +1 -0
- package/dist/space/entitlements/XChainConfig.js +70 -0
- package/dist/space/entitlements/XChainConfig.js.map +1 -0
- package/dist/space/entitlements/entitlement.d.ts +147 -0
- package/dist/space/entitlements/entitlement.d.ts.map +1 -0
- package/dist/space/entitlements/entitlement.js +940 -0
- package/dist/space/entitlements/entitlement.js.map +1 -0
- package/dist/space/entitlements/validateAndParseXChainConfig.d.ts +6 -0
- package/dist/space/entitlements/validateAndParseXChainConfig.d.ts.map +1 -0
- package/dist/space/entitlements/validateAndParseXChainConfig.js +34 -0
- package/dist/space/entitlements/validateAndParseXChainConfig.js.map +1 -0
- package/dist/space-dapp/SpaceDapp.d.ts +223 -0
- package/dist/space-dapp/SpaceDapp.d.ts.map +1 -0
- package/dist/space-dapp/SpaceDapp.js +1260 -0
- package/dist/space-dapp/SpaceDapp.js.map +1 -0
- package/dist/space-dapp/SpaceDappFactory.d.ts +5 -0
- package/dist/space-dapp/SpaceDappFactory.d.ts.map +1 -0
- package/dist/space-dapp/SpaceDappFactory.js +8 -0
- package/dist/space-dapp/SpaceDappFactory.js.map +1 -0
- package/dist/space-dapp/wrapTransaction.d.ts +4 -0
- package/dist/space-dapp/wrapTransaction.d.ts.map +1 -0
- package/dist/space-dapp/wrapTransaction.js +99 -0
- package/dist/space-dapp/wrapTransaction.js.map +1 -0
- package/dist/space-owner/GuardianFacetShim.d.ts +9 -0
- package/dist/space-owner/GuardianFacetShim.d.ts.map +1 -0
- package/dist/space-owner/GuardianFacetShim.js +9 -0
- package/dist/space-owner/GuardianFacetShim.js.map +1 -0
- package/dist/space-owner/SpaceOwner.d.ts +48 -0
- package/dist/space-owner/SpaceOwner.d.ts.map +1 -0
- package/dist/space-owner/SpaceOwner.js +81 -0
- package/dist/space-owner/SpaceOwner.js.map +1 -0
- package/dist/space-registrar/ICreateSpaceShim.d.ts +11 -0
- package/dist/space-registrar/ICreateSpaceShim.d.ts.map +1 -0
- package/dist/space-registrar/ICreateSpaceShim.js +9 -0
- package/dist/space-registrar/ICreateSpaceShim.js.map +1 -0
- package/dist/space-registrar/ILegacySpaceArchitectShim.d.ts +10 -0
- package/dist/space-registrar/ILegacySpaceArchitectShim.d.ts.map +1 -0
- package/dist/space-registrar/ILegacySpaceArchitectShim.js +9 -0
- package/dist/space-registrar/ILegacySpaceArchitectShim.js.map +1 -0
- package/dist/space-registrar/ISpaceArchitectShim.d.ts +10 -0
- package/dist/space-registrar/ISpaceArchitectShim.d.ts.map +1 -0
- package/dist/space-registrar/ISpaceArchitectShim.js +39 -0
- package/dist/space-registrar/ISpaceArchitectShim.js.map +1 -0
- package/dist/space-registrar/SpaceRegistrar.d.ts +27 -0
- package/dist/space-registrar/SpaceRegistrar.d.ts.map +1 -0
- package/dist/space-registrar/SpaceRegistrar.js +58 -0
- package/dist/space-registrar/SpaceRegistrar.js.map +1 -0
- package/dist/test-helpers/LocalhostWeb3Provider.d.ts +19 -0
- package/dist/test-helpers/LocalhostWeb3Provider.d.ts.map +1 -0
- package/dist/test-helpers/LocalhostWeb3Provider.js +80 -0
- package/dist/test-helpers/LocalhostWeb3Provider.js.map +1 -0
- package/dist/test-helpers/MockCrossChainEntitlement.d.ts +6 -0
- package/dist/test-helpers/MockCrossChainEntitlement.d.ts.map +1 -0
- package/dist/test-helpers/MockCrossChainEntitlement.js +104 -0
- package/dist/test-helpers/MockCrossChainEntitlement.js.map +1 -0
- package/dist/test-helpers/MockERC1155.d.ts +6 -0
- package/dist/test-helpers/MockERC1155.d.ts.map +1 -0
- package/dist/test-helpers/MockERC1155.js +518 -0
- package/dist/test-helpers/MockERC1155.js.map +1 -0
- package/dist/test-helpers/MockERC20.d.ts +6 -0
- package/dist/test-helpers/MockERC20.d.ts.map +1 -0
- package/dist/test-helpers/MockERC20.js +574 -0
- package/dist/test-helpers/MockERC20.js.map +1 -0
- package/dist/test-helpers/MockERC721A.d.ts +1563 -0
- package/dist/test-helpers/MockERC721A.d.ts.map +1 -0
- package/dist/test-helpers/MockERC721A.js +1913 -0
- package/dist/test-helpers/MockERC721A.js.map +1 -0
- package/dist/test-helpers/MockERC721AShim.d.ts +9 -0
- package/dist/test-helpers/MockERC721AShim.d.ts.map +1 -0
- package/dist/test-helpers/MockERC721AShim.js +9 -0
- package/dist/test-helpers/MockERC721AShim.js.map +1 -0
- package/dist/test-helpers/TestCrossChainEntitlement.d.ts +14 -0
- package/dist/test-helpers/TestCrossChainEntitlement.d.ts.map +1 -0
- package/dist/test-helpers/TestCrossChainEntitlement.js +99 -0
- package/dist/test-helpers/TestCrossChainEntitlement.js.map +1 -0
- package/dist/test-helpers/TestEthBalance.d.ts +72 -0
- package/dist/test-helpers/TestEthBalance.d.ts.map +1 -0
- package/dist/test-helpers/TestEthBalance.js +94 -0
- package/dist/test-helpers/TestEthBalance.js.map +1 -0
- package/dist/test-helpers/TestGatingERC1155.d.ts +17 -0
- package/dist/test-helpers/TestGatingERC1155.d.ts.map +1 -0
- package/dist/test-helpers/TestGatingERC1155.js +100 -0
- package/dist/test-helpers/TestGatingERC1155.js.map +1 -0
- package/dist/test-helpers/TestGatingERC20.d.ts +17 -0
- package/dist/test-helpers/TestGatingERC20.d.ts.map +1 -0
- package/dist/test-helpers/TestGatingERC20.js +149 -0
- package/dist/test-helpers/TestGatingERC20.js.map +1 -0
- package/dist/test-helpers/TestGatingNFT.d.ts +17 -0
- package/dist/test-helpers/TestGatingNFT.d.ts.map +1 -0
- package/dist/test-helpers/TestGatingNFT.js +137 -0
- package/dist/test-helpers/TestGatingNFT.js.map +1 -0
- package/dist/test-helpers/TestGatingUtils.d.ts +15 -0
- package/dist/test-helpers/TestGatingUtils.d.ts.map +1 -0
- package/dist/test-helpers/TestGatingUtils.js +112 -0
- package/dist/test-helpers/TestGatingUtils.js.map +1 -0
- package/dist/test-helpers/utils.d.ts +22 -0
- package/dist/test-helpers/utils.d.ts.map +1 -0
- package/dist/test-helpers/utils.js +30 -0
- package/dist/test-helpers/utils.js.map +1 -0
- package/dist/towns-token/TownsToken.d.ts +17 -0
- package/dist/towns-token/TownsToken.d.ts.map +1 -0
- package/dist/towns-token/TownsToken.js +33 -0
- package/dist/towns-token/TownsToken.js.map +1 -0
- package/dist/types/ContractTypes.d.ts +240 -0
- package/dist/types/ContractTypes.d.ts.map +1 -0
- package/dist/types/ContractTypes.js +65 -0
- package/dist/types/ContractTypes.js.map +1 -0
- package/dist/types/error-types.d.ts +7 -0
- package/dist/types/error-types.d.ts.map +1 -0
- package/dist/types/error-types.js +13 -0
- package/dist/types/error-types.js.map +1 -0
- package/dist/types/typechain.d.ts +4 -0
- package/dist/types/typechain.d.ts.map +1 -0
- package/dist/types/typechain.js +2 -0
- package/dist/types/typechain.js.map +1 -0
- package/dist/types/types.d.ts +29 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/types.js +2 -0
- package/dist/types/types.js.map +1 -0
- package/dist/utils/ContractHelpers.d.ts +14 -0
- package/dist/utils/ContractHelpers.d.ts.map +1 -0
- package/dist/utils/ContractHelpers.js +54 -0
- package/dist/utils/ContractHelpers.js.map +1 -0
- package/dist/utils/Web3Constants.d.ts +6 -0
- package/dist/utils/Web3Constants.d.ts.map +1 -0
- package/dist/utils/Web3Constants.js +7 -0
- package/dist/utils/Web3Constants.js.map +1 -0
- package/dist/utils/ut.d.ts +46 -0
- package/dist/utils/ut.d.ts.map +1 -0
- package/dist/utils/ut.js +94 -0
- package/dist/utils/ut.js.map +1 -0
- package/dist/utils/web3Env.d.ts +36 -0
- package/dist/utils/web3Env.d.ts.map +1 -0
- package/dist/utils/web3Env.js +123 -0
- package/dist/utils/web3Env.js.map +1 -0
- package/dist/wallet-link/WalletLink.d.ts +58 -0
- package/dist/wallet-link/WalletLink.d.ts.map +1 -0
- package/dist/wallet-link/WalletLink.js +226 -0
- package/dist/wallet-link/WalletLink.js.map +1 -0
- package/dist/wallet-link/WalletLinkShim.d.ts +9 -0
- package/dist/wallet-link/WalletLinkShim.d.ts.map +1 -0
- package/dist/wallet-link/WalletLinkShim.js +9 -0
- package/dist/wallet-link/WalletLinkShim.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { createTestClient, http, publicActions, walletActions, parseEther } from 'viem';
|
|
2
|
+
import { foundry } from 'viem/chains';
|
|
3
|
+
import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';
|
|
4
|
+
import { MockERC20 } from './MockERC20';
|
|
5
|
+
import { deployContract, Mutex } from './TestGatingUtils';
|
|
6
|
+
import { dlogger } from '@towns-labs/utils';
|
|
7
|
+
const logger = dlogger('csb:TestGatingERC20');
|
|
8
|
+
const erc20Contracts = new Map();
|
|
9
|
+
const erc20ContractsMutex = new Mutex();
|
|
10
|
+
async function getContractAddress(tokenName) {
|
|
11
|
+
try {
|
|
12
|
+
await erc20ContractsMutex.lock();
|
|
13
|
+
if (!erc20Contracts.has(tokenName)) {
|
|
14
|
+
const contractAddress = await deployContract(tokenName, MockERC20.abi, MockERC20.bytecode, ['TestERC20', 'TST']);
|
|
15
|
+
erc20Contracts.set(tokenName, contractAddress);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
catch (e) {
|
|
19
|
+
logger.error('Failed to deploy contract', e);
|
|
20
|
+
throw new Error(
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
22
|
+
`Failed to get contract address: ${tokenName}`);
|
|
23
|
+
}
|
|
24
|
+
finally {
|
|
25
|
+
erc20ContractsMutex.unlock();
|
|
26
|
+
}
|
|
27
|
+
return erc20Contracts.get(tokenName);
|
|
28
|
+
}
|
|
29
|
+
async function publicMint(tokenName, toAddress, amount) {
|
|
30
|
+
const privateKey = generatePrivateKey();
|
|
31
|
+
const throwawayAccount = privateKeyToAccount(privateKey);
|
|
32
|
+
const client = createTestClient({
|
|
33
|
+
chain: foundry,
|
|
34
|
+
mode: 'anvil',
|
|
35
|
+
transport: http(),
|
|
36
|
+
account: throwawayAccount,
|
|
37
|
+
})
|
|
38
|
+
.extend(publicActions)
|
|
39
|
+
.extend(walletActions);
|
|
40
|
+
await client.setBalance({
|
|
41
|
+
address: throwawayAccount.address,
|
|
42
|
+
value: parseEther('1'),
|
|
43
|
+
});
|
|
44
|
+
const contractAddress = await getContractAddress(tokenName);
|
|
45
|
+
logger.log('minting', contractAddress, toAddress);
|
|
46
|
+
const nftReceipt = await client.writeContract({
|
|
47
|
+
address: contractAddress,
|
|
48
|
+
abi: MockERC20.abi,
|
|
49
|
+
functionName: 'mint',
|
|
50
|
+
args: [toAddress, amount],
|
|
51
|
+
account: throwawayAccount,
|
|
52
|
+
});
|
|
53
|
+
logger.log('minted', nftReceipt);
|
|
54
|
+
const receipt = await client.waitForTransactionReceipt({ hash: nftReceipt });
|
|
55
|
+
// create a filter to listen for the Transfer event to find the token id
|
|
56
|
+
// don't worry about the possibility of non-matching arguments, as we're specifying the contract
|
|
57
|
+
// address of the contract we're interested in.
|
|
58
|
+
const filter = await client.createContractEventFilter({
|
|
59
|
+
abi: MockERC20.abi,
|
|
60
|
+
address: contractAddress,
|
|
61
|
+
eventName: 'Transfer',
|
|
62
|
+
// @ts-ignore
|
|
63
|
+
args: {
|
|
64
|
+
to: toAddress,
|
|
65
|
+
},
|
|
66
|
+
fromBlock: receipt.blockNumber,
|
|
67
|
+
toBlock: receipt.blockNumber,
|
|
68
|
+
});
|
|
69
|
+
const eventLogs = await client.getFilterLogs({ filter });
|
|
70
|
+
for (const eventLog of eventLogs) {
|
|
71
|
+
if (eventLog.transactionHash === receipt.transactionHash) {
|
|
72
|
+
logger.log('mint logs', eventLog.args);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
throw Error('No mint event found');
|
|
77
|
+
}
|
|
78
|
+
async function totalSupply(contractName) {
|
|
79
|
+
const contractAddress = await getContractAddress(contractName);
|
|
80
|
+
const privateKey = generatePrivateKey();
|
|
81
|
+
const throwawayAccount = privateKeyToAccount(privateKey);
|
|
82
|
+
const client = createTestClient({
|
|
83
|
+
chain: foundry,
|
|
84
|
+
mode: 'anvil',
|
|
85
|
+
transport: http(),
|
|
86
|
+
account: throwawayAccount,
|
|
87
|
+
})
|
|
88
|
+
.extend(publicActions)
|
|
89
|
+
.extend(walletActions);
|
|
90
|
+
const totalSupply = await client.readContract({
|
|
91
|
+
address: contractAddress,
|
|
92
|
+
abi: MockERC20.abi,
|
|
93
|
+
functionName: 'totalSupply',
|
|
94
|
+
args: [],
|
|
95
|
+
});
|
|
96
|
+
return Number(totalSupply);
|
|
97
|
+
}
|
|
98
|
+
async function balanceOf(contractName, address) {
|
|
99
|
+
const contractAddress = await getContractAddress(contractName);
|
|
100
|
+
const privateKey = generatePrivateKey();
|
|
101
|
+
const throwawayAccount = privateKeyToAccount(privateKey);
|
|
102
|
+
const client = createTestClient({
|
|
103
|
+
chain: foundry,
|
|
104
|
+
mode: 'anvil',
|
|
105
|
+
transport: http(),
|
|
106
|
+
account: throwawayAccount,
|
|
107
|
+
})
|
|
108
|
+
.extend(publicActions)
|
|
109
|
+
.extend(walletActions);
|
|
110
|
+
const balance = await client.readContract({
|
|
111
|
+
address: contractAddress,
|
|
112
|
+
abi: MockERC20.abi,
|
|
113
|
+
functionName: 'balanceOf',
|
|
114
|
+
args: [address],
|
|
115
|
+
});
|
|
116
|
+
return Number(balance);
|
|
117
|
+
}
|
|
118
|
+
async function transfer(contractName, to, privateKey, amount) {
|
|
119
|
+
const account = privateKeyToAccount(privateKey);
|
|
120
|
+
const client = createTestClient({
|
|
121
|
+
chain: foundry,
|
|
122
|
+
mode: 'anvil',
|
|
123
|
+
transport: http(),
|
|
124
|
+
account: account,
|
|
125
|
+
})
|
|
126
|
+
.extend(publicActions)
|
|
127
|
+
.extend(walletActions);
|
|
128
|
+
await client.setBalance({
|
|
129
|
+
address: account.address,
|
|
130
|
+
value: parseEther('1'),
|
|
131
|
+
});
|
|
132
|
+
const contractAddress = await getContractAddress(contractName);
|
|
133
|
+
const tx = await client.writeContract({
|
|
134
|
+
address: contractAddress,
|
|
135
|
+
abi: MockERC20.abi,
|
|
136
|
+
functionName: 'transfer',
|
|
137
|
+
args: [to, amount],
|
|
138
|
+
});
|
|
139
|
+
const { transactionHash } = await client.waitForTransactionReceipt({ hash: tx });
|
|
140
|
+
return { transactionHash };
|
|
141
|
+
}
|
|
142
|
+
export const TestERC20 = {
|
|
143
|
+
getContractAddress,
|
|
144
|
+
balanceOf,
|
|
145
|
+
totalSupply,
|
|
146
|
+
publicMint,
|
|
147
|
+
transfer,
|
|
148
|
+
};
|
|
149
|
+
//# sourceMappingURL=TestGatingERC20.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestGatingERC20.js","sourceRoot":"","sources":["../../src/test-helpers/TestGatingERC20.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Address } from '../types/ContractTypes';
|
|
2
|
+
export declare class TestGatingNFT {
|
|
3
|
+
publicMint(toAddress: string): Promise<number>;
|
|
4
|
+
}
|
|
5
|
+
declare function getContractAddress(nftName: string): Promise<Address>;
|
|
6
|
+
export declare function getTestGatingNFTContractAddress(): Promise<Address>;
|
|
7
|
+
declare function publicMint(nftName: string, toAddress: Address): Promise<number>;
|
|
8
|
+
declare function burn(nftName: string, tokenId: number): Promise<void>;
|
|
9
|
+
declare function balanceOf(nftName: string, address: Address): Promise<number>;
|
|
10
|
+
export declare const TestERC721: {
|
|
11
|
+
publicMint: typeof publicMint;
|
|
12
|
+
burn: typeof burn;
|
|
13
|
+
balanceOf: typeof balanceOf;
|
|
14
|
+
getContractAddress: typeof getContractAddress;
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=TestGatingNFT.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestGatingNFT.d.ts","sourceRoot":"","sources":["../../src/test-helpers/TestGatingNFT.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAMhD,qBAAa,aAAa;IACT,UAAU,CAAC,SAAS,EAAE,MAAM;CAO5C;AAKD,iBAAe,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAsBnE;AAED,wBAAsB,+BAA+B,IAAI,OAAO,CAAC,OAAO,CAAC,CAExE;AAED,iBAAe,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAsD9E;AAED,iBAAe,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BnE;AAED,iBAAe,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAsB3E;AAED,eAAO,MAAM,UAAU;;;;;CAKtB,CAAA"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { createTestClient, http, publicActions, walletActions, parseEther } from 'viem';
|
|
2
|
+
import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';
|
|
3
|
+
import { foundry } from 'viem/chains';
|
|
4
|
+
import { MockERC721a } from './MockERC721A';
|
|
5
|
+
import { isHexString, deployContract, Mutex } from './TestGatingUtils';
|
|
6
|
+
import { dlogger } from '@towns-labs/utils';
|
|
7
|
+
const logger = dlogger('csb:TestGatingNFT');
|
|
8
|
+
export class TestGatingNFT {
|
|
9
|
+
async publicMint(toAddress) {
|
|
10
|
+
if (!isHexString(toAddress)) {
|
|
11
|
+
throw new Error('Invalid address');
|
|
12
|
+
}
|
|
13
|
+
return await publicMint('TestGatingNFT', toAddress);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
const nftContracts = new Map();
|
|
17
|
+
const nftContractsMutex = new Mutex();
|
|
18
|
+
async function getContractAddress(nftName) {
|
|
19
|
+
try {
|
|
20
|
+
await nftContractsMutex.lock();
|
|
21
|
+
if (!nftContracts.has(nftName)) {
|
|
22
|
+
const contractAddress = await deployContract(nftName, MockERC721a.abi, MockERC721a.bytecode.object);
|
|
23
|
+
nftContracts.set(nftName, contractAddress);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
logger.error('Failed to deploy contract', e);
|
|
28
|
+
throw new Error(
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
30
|
+
`Failed to get contract address: ${nftName}`);
|
|
31
|
+
}
|
|
32
|
+
finally {
|
|
33
|
+
nftContractsMutex.unlock();
|
|
34
|
+
}
|
|
35
|
+
return nftContracts.get(nftName);
|
|
36
|
+
}
|
|
37
|
+
export async function getTestGatingNFTContractAddress() {
|
|
38
|
+
return await getContractAddress('TestGatingNFT');
|
|
39
|
+
}
|
|
40
|
+
async function publicMint(nftName, toAddress) {
|
|
41
|
+
const privateKey = generatePrivateKey();
|
|
42
|
+
const throwawayAccount = privateKeyToAccount(privateKey);
|
|
43
|
+
const client = createTestClient({
|
|
44
|
+
chain: foundry,
|
|
45
|
+
mode: 'anvil',
|
|
46
|
+
transport: http(),
|
|
47
|
+
account: throwawayAccount,
|
|
48
|
+
})
|
|
49
|
+
.extend(publicActions)
|
|
50
|
+
.extend(walletActions);
|
|
51
|
+
await client.setBalance({
|
|
52
|
+
address: throwawayAccount.address,
|
|
53
|
+
value: parseEther('1'),
|
|
54
|
+
});
|
|
55
|
+
const contractAddress = await getContractAddress(nftName);
|
|
56
|
+
logger.log('minting', contractAddress, toAddress);
|
|
57
|
+
const nftReceipt = await client.writeContract({
|
|
58
|
+
address: contractAddress,
|
|
59
|
+
abi: MockERC721a.abi,
|
|
60
|
+
functionName: 'mint',
|
|
61
|
+
args: [toAddress, 1n],
|
|
62
|
+
account: throwawayAccount,
|
|
63
|
+
});
|
|
64
|
+
logger.log('minted', nftReceipt);
|
|
65
|
+
const receipt = await client.waitForTransactionReceipt({ hash: nftReceipt });
|
|
66
|
+
// create a filter to listen for the Transfer event to find the token id
|
|
67
|
+
// don't worry about the possibility of non-matching arguments, as we're specifying the contract
|
|
68
|
+
// address of the contract we're interested in.
|
|
69
|
+
const filter = await client.createContractEventFilter({
|
|
70
|
+
abi: MockERC721a.abi,
|
|
71
|
+
address: contractAddress,
|
|
72
|
+
eventName: 'Transfer',
|
|
73
|
+
args: {
|
|
74
|
+
to: toAddress,
|
|
75
|
+
},
|
|
76
|
+
fromBlock: receipt.blockNumber,
|
|
77
|
+
toBlock: receipt.blockNumber,
|
|
78
|
+
});
|
|
79
|
+
const eventLogs = await client.getFilterLogs({ filter });
|
|
80
|
+
for (const eventLog of eventLogs) {
|
|
81
|
+
if (eventLog.transactionHash === receipt.transactionHash) {
|
|
82
|
+
return Number(eventLog.args.tokenId);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
throw Error('No mint event found');
|
|
86
|
+
}
|
|
87
|
+
async function burn(nftName, tokenId) {
|
|
88
|
+
const privateKey = generatePrivateKey();
|
|
89
|
+
const throwawayAccount = privateKeyToAccount(privateKey);
|
|
90
|
+
const client = createTestClient({
|
|
91
|
+
chain: foundry,
|
|
92
|
+
mode: 'anvil',
|
|
93
|
+
transport: http(),
|
|
94
|
+
account: throwawayAccount,
|
|
95
|
+
})
|
|
96
|
+
.extend(publicActions)
|
|
97
|
+
.extend(walletActions);
|
|
98
|
+
await client.setBalance({
|
|
99
|
+
address: throwawayAccount.address,
|
|
100
|
+
value: parseEther('1'),
|
|
101
|
+
});
|
|
102
|
+
const nftReceipt = await client.writeContract({
|
|
103
|
+
address: await getContractAddress(nftName),
|
|
104
|
+
abi: MockERC721a.abi,
|
|
105
|
+
functionName: 'burn',
|
|
106
|
+
args: [BigInt(tokenId)],
|
|
107
|
+
account: throwawayAccount,
|
|
108
|
+
});
|
|
109
|
+
await client.waitForTransactionReceipt({ hash: nftReceipt });
|
|
110
|
+
}
|
|
111
|
+
async function balanceOf(nftName, address) {
|
|
112
|
+
const privateKey = generatePrivateKey();
|
|
113
|
+
const throwawayAccount = privateKeyToAccount(privateKey);
|
|
114
|
+
const client = createTestClient({
|
|
115
|
+
chain: foundry,
|
|
116
|
+
mode: 'anvil',
|
|
117
|
+
transport: http(),
|
|
118
|
+
account: throwawayAccount,
|
|
119
|
+
})
|
|
120
|
+
.extend(publicActions)
|
|
121
|
+
.extend(walletActions);
|
|
122
|
+
const contractAddress = await getContractAddress(nftName);
|
|
123
|
+
const balanceEncoded = await client.readContract({
|
|
124
|
+
address: contractAddress,
|
|
125
|
+
abi: MockERC721a.abi,
|
|
126
|
+
functionName: 'balanceOf',
|
|
127
|
+
args: [address],
|
|
128
|
+
});
|
|
129
|
+
return Number(balanceEncoded);
|
|
130
|
+
}
|
|
131
|
+
export const TestERC721 = {
|
|
132
|
+
publicMint,
|
|
133
|
+
burn,
|
|
134
|
+
balanceOf,
|
|
135
|
+
getContractAddress,
|
|
136
|
+
};
|
|
137
|
+
//# sourceMappingURL=TestGatingNFT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestGatingNFT.js","sourceRoot":"","sources":["../../src/test-helpers/TestGatingNFT.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Abi } from 'abitype';
|
|
2
|
+
import { Address } from '../types/ContractTypes';
|
|
3
|
+
export declare class Mutex {
|
|
4
|
+
queue: ((value: void | PromiseLike<void>) => void)[];
|
|
5
|
+
locked: boolean;
|
|
6
|
+
constructor();
|
|
7
|
+
lock(): Promise<void>;
|
|
8
|
+
unlock(): void;
|
|
9
|
+
}
|
|
10
|
+
export declare function toEIP55Address(address: Address): Address;
|
|
11
|
+
export declare function isEIP55Address(address: Address): boolean;
|
|
12
|
+
export declare function isHexString(value: unknown): value is Address;
|
|
13
|
+
export declare function deployContract(contractName: string, abi: Abi, bytecode: Address, // bytecode is a hex string
|
|
14
|
+
constructorArgs?: any[]): Promise<Address>;
|
|
15
|
+
//# sourceMappingURL=TestGatingUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestGatingUtils.d.ts","sourceRoot":"","sources":["../../src/test-helpers/TestGatingUtils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAMhD,qBAAa,KAAK;IACd,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,CAAA;IACpD,MAAM,EAAE,OAAO,CAAA;;IAMf,IAAI;IAiBJ,MAAM;CAQT;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAaxD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAExD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAM5D;AAED,wBAAsB,cAAc,CAChC,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,OAAO,EAAE,2BAA2B;AAC9C,eAAe,GAAE,GAAG,EAAO,GAC5B,OAAO,CAAC,OAAO,CAAC,CA4DlB"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { keccak256, parseEther } from 'viem/utils';
|
|
2
|
+
import { foundry } from 'viem/chains';
|
|
3
|
+
import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';
|
|
4
|
+
import { createTestClient, http, publicActions, walletActions } from 'viem';
|
|
5
|
+
import { dlogger } from '@towns-labs/utils';
|
|
6
|
+
const logger = dlogger('csb:TestGatingUtils');
|
|
7
|
+
export class Mutex {
|
|
8
|
+
queue;
|
|
9
|
+
locked;
|
|
10
|
+
constructor() {
|
|
11
|
+
this.queue = [];
|
|
12
|
+
this.locked = false;
|
|
13
|
+
}
|
|
14
|
+
lock() {
|
|
15
|
+
if (!this.locked) {
|
|
16
|
+
this.locked = true;
|
|
17
|
+
return Promise.resolve();
|
|
18
|
+
}
|
|
19
|
+
let unlockNext;
|
|
20
|
+
const promise = new Promise((resolve) => {
|
|
21
|
+
unlockNext = resolve;
|
|
22
|
+
});
|
|
23
|
+
this.queue.push(unlockNext);
|
|
24
|
+
return promise;
|
|
25
|
+
}
|
|
26
|
+
unlock() {
|
|
27
|
+
if (this.queue.length > 0) {
|
|
28
|
+
const unlockNext = this.queue.shift();
|
|
29
|
+
unlockNext?.();
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
this.locked = false;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export function toEIP55Address(address) {
|
|
37
|
+
const addressHash = keccak256(address.substring(2).toLowerCase());
|
|
38
|
+
let checksumAddress = '0x';
|
|
39
|
+
for (let i = 2; i < address.length; i++) {
|
|
40
|
+
if (parseInt(addressHash[i], 16) >= 8) {
|
|
41
|
+
checksumAddress += address[i].toUpperCase();
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
checksumAddress += address[i].toLowerCase();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return checksumAddress;
|
|
48
|
+
}
|
|
49
|
+
export function isEIP55Address(address) {
|
|
50
|
+
return address === toEIP55Address(address);
|
|
51
|
+
}
|
|
52
|
+
export function isHexString(value) {
|
|
53
|
+
// Check if the value is undefined first
|
|
54
|
+
if (value === undefined) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
return typeof value === 'string' && /^0x[0-9a-fA-F]+$/.test(value);
|
|
58
|
+
}
|
|
59
|
+
export async function deployContract(contractName, abi, bytecode, // bytecode is a hex string
|
|
60
|
+
constructorArgs = []) {
|
|
61
|
+
let retryCount = 0;
|
|
62
|
+
let lastError;
|
|
63
|
+
while (retryCount++ < 5) {
|
|
64
|
+
try {
|
|
65
|
+
const privateKey = generatePrivateKey();
|
|
66
|
+
const throwawayAccount = privateKeyToAccount(privateKey);
|
|
67
|
+
const client = createTestClient({
|
|
68
|
+
chain: foundry,
|
|
69
|
+
mode: 'anvil',
|
|
70
|
+
transport: http(),
|
|
71
|
+
account: throwawayAccount,
|
|
72
|
+
})
|
|
73
|
+
.extend(publicActions)
|
|
74
|
+
.extend(walletActions);
|
|
75
|
+
await client.setBalance({
|
|
76
|
+
address: throwawayAccount.address,
|
|
77
|
+
value: parseEther('1'),
|
|
78
|
+
});
|
|
79
|
+
const hash = await client.deployContract({
|
|
80
|
+
abi,
|
|
81
|
+
account: throwawayAccount,
|
|
82
|
+
args: constructorArgs,
|
|
83
|
+
bytecode,
|
|
84
|
+
});
|
|
85
|
+
const receipt = await client.waitForTransactionReceipt({ hash });
|
|
86
|
+
if (receipt.contractAddress) {
|
|
87
|
+
logger.info('deployed', receipt.contractAddress, isEIP55Address(receipt.contractAddress));
|
|
88
|
+
return toEIP55Address(receipt.contractAddress);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
throw new Error(`Failed to deploy contract ${contractName}`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch (e) {
|
|
95
|
+
lastError = e;
|
|
96
|
+
if (typeof e === 'object' &&
|
|
97
|
+
e !== null &&
|
|
98
|
+
'message' in e &&
|
|
99
|
+
typeof e.message === 'string' &&
|
|
100
|
+
(e.message.includes('nonce too low') ||
|
|
101
|
+
e.message.includes('NonceTooLowError') ||
|
|
102
|
+
e.message.includes('Nonce provided for the transaction is lower than the current nonce'))) {
|
|
103
|
+
logger.log('retrying because nonce too low', e, retryCount, contractName);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
throw e;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
throw lastError;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=TestGatingUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestGatingUtils.js","sourceRoot":"","sources":["../../src/test-helpers/TestGatingUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { SpaceDapp } from '../space-dapp/SpaceDapp';
|
|
2
|
+
export declare function makeDefaultMembershipInfo(spaceDapp: SpaceDapp, feeRecipient: string, pricing?: 'dynamic' | 'fixed', price?: bigint, freeAllocation?: number): Promise<{
|
|
3
|
+
settings: {
|
|
4
|
+
name: string;
|
|
5
|
+
symbol: string;
|
|
6
|
+
price: bigint;
|
|
7
|
+
maxSupply: number;
|
|
8
|
+
duration: number;
|
|
9
|
+
currency: string;
|
|
10
|
+
feeRecipient: string;
|
|
11
|
+
freeAllocation: number;
|
|
12
|
+
pricingModule: string;
|
|
13
|
+
};
|
|
14
|
+
permissions: ("Read" | "Write")[];
|
|
15
|
+
requirements: {
|
|
16
|
+
everyone: true;
|
|
17
|
+
users: never[];
|
|
18
|
+
syncEntitlements: false;
|
|
19
|
+
ruleData: `0x${string}`;
|
|
20
|
+
};
|
|
21
|
+
}>;
|
|
22
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/test-helpers/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGnD,wBAAsB,yBAAyB,CAC3C,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,SAAS,GAAG,OAAmB,EACxC,KAAK,SAAK,EACV,cAAc,SAAO;;;;;;;;;;;;;;;;;;;GA0BxB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Permission } from '../types/ContractTypes';
|
|
2
|
+
import { EncodedNoopRuleData } from '../space/entitlements/entitlement';
|
|
3
|
+
import { ETH_ADDRESS } from '../utils/ut';
|
|
4
|
+
import { getDynamicPricingModule, getFixedPricingModule } from '../pricing-modules/helpers';
|
|
5
|
+
export async function makeDefaultMembershipInfo(spaceDapp, feeRecipient, pricing = 'dynamic', price = 0n, freeAllocation = 1000) {
|
|
6
|
+
const pricingModule = pricing == 'dynamic'
|
|
7
|
+
? await getDynamicPricingModule(spaceDapp)
|
|
8
|
+
: await getFixedPricingModule(spaceDapp);
|
|
9
|
+
return {
|
|
10
|
+
settings: {
|
|
11
|
+
name: 'Everyone',
|
|
12
|
+
symbol: 'MEMBER',
|
|
13
|
+
price,
|
|
14
|
+
maxSupply: 1000,
|
|
15
|
+
duration: 0,
|
|
16
|
+
currency: ETH_ADDRESS,
|
|
17
|
+
feeRecipient: feeRecipient,
|
|
18
|
+
freeAllocation,
|
|
19
|
+
pricingModule: pricingModule.module,
|
|
20
|
+
},
|
|
21
|
+
permissions: [Permission.Read, Permission.Write],
|
|
22
|
+
requirements: {
|
|
23
|
+
everyone: true,
|
|
24
|
+
users: [],
|
|
25
|
+
syncEntitlements: false,
|
|
26
|
+
ruleData: EncodedNoopRuleData,
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/test-helpers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAE3F,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC3C,SAAoB,EACpB,YAAoB,EACpB,UAA+B,SAAS,EACxC,KAAK,GAAG,EAAE,EACV,cAAc,GAAG,IAAI;IAErB,MAAM,aAAa,GACf,OAAO,IAAI,SAAS;QAChB,CAAC,CAAC,MAAM,uBAAuB,CAAC,SAAS,CAAC;QAC1C,CAAC,CAAC,MAAM,qBAAqB,CAAC,SAAS,CAAC,CAAA;IAChD,OAAO;QACH,QAAQ,EAAE;YACN,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,QAAQ;YAChB,KAAK;YACL,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,WAAW;YACrB,YAAY,EAAE,YAAY;YAC1B,cAAc;YACd,aAAa,EAAE,aAAa,CAAC,MAAM;SACtC;QACD,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC;QAChD,YAAY,EAAE;YACV,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,EAAE;YACT,gBAAgB,EAAE,KAAK;YACvB,QAAQ,EAAE,mBAAmB;SAChC;KACuB,CAAA;AAChC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ethers } from 'ethers';
|
|
2
|
+
import { Towns as ITownsBase } from '@towns-labs/generated/dev/typings/Towns';
|
|
3
|
+
import { BaseContractShim } from '../BaseContractShim';
|
|
4
|
+
import { Towns__factory } from '@towns-labs/generated/dev/typings/factories/Towns__factory';
|
|
5
|
+
import { SpaceDappCreateStorageFn } from '../space-dapp/SpaceDapp';
|
|
6
|
+
export type { ITownsBase };
|
|
7
|
+
declare const connect: typeof Towns__factory.connect;
|
|
8
|
+
export declare class TownsToken extends BaseContractShim<typeof connect> {
|
|
9
|
+
private readonly balanceCache;
|
|
10
|
+
constructor(address: string, provider: ethers.providers.Provider, createStorageFn: SpaceDappCreateStorageFn | undefined);
|
|
11
|
+
getBalance(accountAddress: string): Promise<ethers.BigNumber>;
|
|
12
|
+
name(): Promise<string>;
|
|
13
|
+
symbol(): Promise<string>;
|
|
14
|
+
decimals(): Promise<number>;
|
|
15
|
+
totalSupply(): Promise<ethers.BigNumber>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=TownsToken.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TownsToken.d.ts","sourceRoot":"","sources":["../../src/towns-token/TownsToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,yCAAyC,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4DAA4D,CAAA;AAG3F,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AAElE,YAAY,EAAE,UAAU,EAAE,CAAA;AAE1B,QAAA,MAAa,OAAO,+BAAmB,CAAA;AAEvC,qBAAa,UAAW,SAAQ,gBAAgB,CAAC,OAAO,OAAO,CAAC;IAC5D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA+B;gBAGxD,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,eAAe,EAAE,wBAAwB,GAAG,SAAS;IAU5C,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;IAM7D,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAIzB,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAK3B,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;CAGxD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ethers } from 'ethers';
|
|
2
|
+
import { BaseContractShim } from '../BaseContractShim';
|
|
3
|
+
import { Towns__factory } from '@towns-labs/generated/dev/typings/factories/Towns__factory';
|
|
4
|
+
import { Keyable } from '../cache/Keyable';
|
|
5
|
+
import { SimpleCache } from '../cache/SimpleCache';
|
|
6
|
+
const { abi, connect } = Towns__factory;
|
|
7
|
+
export class TownsToken extends BaseContractShim {
|
|
8
|
+
balanceCache;
|
|
9
|
+
constructor(address, provider, createStorageFn) {
|
|
10
|
+
super(address, provider, connect, abi);
|
|
11
|
+
this.balanceCache = new SimpleCache({
|
|
12
|
+
ttlSeconds: 1 * 60, // 1 minute
|
|
13
|
+
createStorageFn,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
async getBalance(accountAddress) {
|
|
17
|
+
return this.balanceCache.executeUsingCache(Keyable.balanceOf(accountAddress), async () => this.read.balanceOf(accountAddress));
|
|
18
|
+
}
|
|
19
|
+
async name() {
|
|
20
|
+
return this.read.name();
|
|
21
|
+
}
|
|
22
|
+
async symbol() {
|
|
23
|
+
return this.read.symbol();
|
|
24
|
+
}
|
|
25
|
+
async decimals() {
|
|
26
|
+
const decimalsBN = await this.read.decimals();
|
|
27
|
+
return ethers.BigNumber.from(decimalsBN).toNumber();
|
|
28
|
+
}
|
|
29
|
+
async totalSupply() {
|
|
30
|
+
return this.read.totalSupply();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=TownsToken.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TownsToken.js","sourceRoot":"","sources":["../../src/towns-token/TownsToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4DAA4D,CAAA;AAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAKlD,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,cAAc,CAAA;AAEvC,MAAM,OAAO,UAAW,SAAQ,gBAAgC;IAC3C,YAAY,CAA+B;IAE5D,YACI,OAAe,EACf,QAAmC,EACnC,eAAqD;QAErD,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;QAEtC,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC;YAChC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,WAAW;YAC/B,eAAe;SAClB,CAAC,CAAA;IACN,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,cAAsB;QAC1C,OAAO,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,KAAK,IAAI,EAAE,CACrF,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CACtC,CAAA;IACL,CAAC;IAEM,KAAK,CAAC,IAAI;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IAC3B,CAAC;IAEM,KAAK,CAAC,MAAM;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAA;IAC7B,CAAC;IAEM,KAAK,CAAC,QAAQ;QACjB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;QAC7C,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAA;IACvD,CAAC;IAEM,KAAK,CAAC,WAAW;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;IAClC,CAAC;CACJ"}
|