@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.
Files changed (378) hide show
  1. package/README.md +3 -0
  2. package/dist/BaseContractShim.d.ts +57 -0
  3. package/dist/BaseContractShim.d.ts.map +1 -0
  4. package/dist/BaseContractShim.js +224 -0
  5. package/dist/BaseContractShim.js.map +1 -0
  6. package/dist/airdrop/IDropFacetShim.d.ts +9 -0
  7. package/dist/airdrop/IDropFacetShim.d.ts.map +1 -0
  8. package/dist/airdrop/IDropFacetShim.js +9 -0
  9. package/dist/airdrop/IDropFacetShim.js.map +1 -0
  10. package/dist/airdrop/IRiverPointsShim.d.ts +9 -0
  11. package/dist/airdrop/IRiverPointsShim.d.ts.map +1 -0
  12. package/dist/airdrop/IRiverPointsShim.js +9 -0
  13. package/dist/airdrop/IRiverPointsShim.js.map +1 -0
  14. package/dist/airdrop/RiverAirdropDapp.d.ts +16 -0
  15. package/dist/airdrop/RiverAirdropDapp.d.ts.map +1 -0
  16. package/dist/airdrop/RiverAirdropDapp.js +30 -0
  17. package/dist/airdrop/RiverAirdropDapp.js.map +1 -0
  18. package/dist/app-registry/AppRegistryDapp.d.ts +68 -0
  19. package/dist/app-registry/AppRegistryDapp.d.ts.map +1 -0
  20. package/dist/app-registry/AppRegistryDapp.js +182 -0
  21. package/dist/app-registry/AppRegistryDapp.js.map +1 -0
  22. package/dist/app-registry/IAppFactoryShim.d.ts +9 -0
  23. package/dist/app-registry/IAppFactoryShim.d.ts.map +1 -0
  24. package/dist/app-registry/IAppFactoryShim.js +9 -0
  25. package/dist/app-registry/IAppFactoryShim.js.map +1 -0
  26. package/dist/app-registry/IAppInstallerShim.d.ts +9 -0
  27. package/dist/app-registry/IAppInstallerShim.d.ts.map +1 -0
  28. package/dist/app-registry/IAppInstallerShim.js +9 -0
  29. package/dist/app-registry/IAppInstallerShim.js.map +1 -0
  30. package/dist/app-registry/IAppRegistryShim.d.ts +9 -0
  31. package/dist/app-registry/IAppRegistryShim.d.ts.map +1 -0
  32. package/dist/app-registry/IAppRegistryShim.js +9 -0
  33. package/dist/app-registry/IAppRegistryShim.js.map +1 -0
  34. package/dist/app-registry/IIdentityRegistryShim.d.ts +9 -0
  35. package/dist/app-registry/IIdentityRegistryShim.d.ts.map +1 -0
  36. package/dist/app-registry/IIdentityRegistryShim.js +9 -0
  37. package/dist/app-registry/IIdentityRegistryShim.js.map +1 -0
  38. package/dist/app-registry/IReputationRegistryShim.d.ts +9 -0
  39. package/dist/app-registry/IReputationRegistryShim.d.ts.map +1 -0
  40. package/dist/app-registry/IReputationRegistryShim.js +9 -0
  41. package/dist/app-registry/IReputationRegistryShim.js.map +1 -0
  42. package/dist/app-registry/SimpleAppShim.d.ts +9 -0
  43. package/dist/app-registry/SimpleAppShim.d.ts.map +1 -0
  44. package/dist/app-registry/SimpleAppShim.js +9 -0
  45. package/dist/app-registry/SimpleAppShim.js.map +1 -0
  46. package/dist/base-registry/BaseRegistry.d.ts +32 -0
  47. package/dist/base-registry/BaseRegistry.d.ts.map +1 -0
  48. package/dist/base-registry/BaseRegistry.js +67 -0
  49. package/dist/base-registry/BaseRegistry.js.map +1 -0
  50. package/dist/base-registry/IEntitlementCheckerShim.d.ts +9 -0
  51. package/dist/base-registry/IEntitlementCheckerShim.d.ts.map +1 -0
  52. package/dist/base-registry/IEntitlementCheckerShim.js +9 -0
  53. package/dist/base-registry/IEntitlementCheckerShim.js.map +1 -0
  54. package/dist/base-registry/INodeOperatorShim.d.ts +9 -0
  55. package/dist/base-registry/INodeOperatorShim.d.ts.map +1 -0
  56. package/dist/base-registry/INodeOperatorShim.js +9 -0
  57. package/dist/base-registry/INodeOperatorShim.js.map +1 -0
  58. package/dist/base-registry/ISpaceDelegationShim.d.ts +9 -0
  59. package/dist/base-registry/ISpaceDelegationShim.d.ts.map +1 -0
  60. package/dist/base-registry/ISpaceDelegationShim.js +9 -0
  61. package/dist/base-registry/ISpaceDelegationShim.js.map +1 -0
  62. package/dist/base-registry/RewardsDistributionShim.d.ts +9 -0
  63. package/dist/base-registry/RewardsDistributionShim.d.ts.map +1 -0
  64. package/dist/base-registry/RewardsDistributionShim.js +9 -0
  65. package/dist/base-registry/RewardsDistributionShim.js.map +1 -0
  66. package/dist/cache/EntitlementCache.d.ts +25 -0
  67. package/dist/cache/EntitlementCache.d.ts.map +1 -0
  68. package/dist/cache/EntitlementCache.js +91 -0
  69. package/dist/cache/EntitlementCache.js.map +1 -0
  70. package/dist/cache/ICacheStorage.d.ts +44 -0
  71. package/dist/cache/ICacheStorage.d.ts.map +1 -0
  72. package/dist/cache/ICacheStorage.js +2 -0
  73. package/dist/cache/ICacheStorage.js.map +1 -0
  74. package/dist/cache/KVCacheStorage.d.ts +79 -0
  75. package/dist/cache/KVCacheStorage.d.ts.map +1 -0
  76. package/dist/cache/KVCacheStorage.js +227 -0
  77. package/dist/cache/KVCacheStorage.js.map +1 -0
  78. package/dist/cache/Keyable.d.ts +20 -0
  79. package/dist/cache/Keyable.d.ts.map +1 -0
  80. package/dist/cache/Keyable.js +62 -0
  81. package/dist/cache/Keyable.js.map +1 -0
  82. package/dist/cache/SimpleCache.d.ts +30 -0
  83. package/dist/cache/SimpleCache.d.ts.map +1 -0
  84. package/dist/cache/SimpleCache.js +84 -0
  85. package/dist/cache/SimpleCache.js.map +1 -0
  86. package/dist/cache/TTLCacheStorage.d.ts +19 -0
  87. package/dist/cache/TTLCacheStorage.d.ts.map +1 -0
  88. package/dist/cache/TTLCacheStorage.js +40 -0
  89. package/dist/cache/TTLCacheStorage.js.map +1 -0
  90. package/dist/chain.d.ts +89 -0
  91. package/dist/chain.d.ts.map +1 -0
  92. package/dist/chain.js +48 -0
  93. package/dist/chain.js.map +1 -0
  94. package/dist/delegate-registry/DelegateRegistry.d.ts +3 -0
  95. package/dist/delegate-registry/DelegateRegistry.d.ts.map +1 -0
  96. package/dist/delegate-registry/DelegateRegistry.js +72 -0
  97. package/dist/delegate-registry/DelegateRegistry.js.map +1 -0
  98. package/dist/eip-712/EIP-712.d.ts +35 -0
  99. package/dist/eip-712/EIP-712.d.ts.map +1 -0
  100. package/dist/eip-712/EIP-712.js +57 -0
  101. package/dist/eip-712/EIP-712.js.map +1 -0
  102. package/dist/erc-721/IERC721AQueryableShim.d.ts +9 -0
  103. package/dist/erc-721/IERC721AQueryableShim.d.ts.map +1 -0
  104. package/dist/erc-721/IERC721AQueryableShim.js +9 -0
  105. package/dist/erc-721/IERC721AQueryableShim.js.map +1 -0
  106. package/dist/erc-721/IERC721AShim.d.ts +9 -0
  107. package/dist/erc-721/IERC721AShim.d.ts.map +1 -0
  108. package/dist/erc-721/IERC721AShim.js +9 -0
  109. package/dist/erc-721/IERC721AShim.js.map +1 -0
  110. package/dist/index.d.ts +96 -0
  111. package/dist/index.d.ts.map +1 -0
  112. package/dist/index.js +96 -0
  113. package/dist/index.js.map +1 -0
  114. package/dist/platform-requirements/PlatformRequirements.d.ts +12 -0
  115. package/dist/platform-requirements/PlatformRequirements.d.ts.map +1 -0
  116. package/dist/platform-requirements/PlatformRequirements.js +18 -0
  117. package/dist/platform-requirements/PlatformRequirements.js.map +1 -0
  118. package/dist/pricing-modules/IPricingShim.d.ts +9 -0
  119. package/dist/pricing-modules/IPricingShim.d.ts.map +1 -0
  120. package/dist/pricing-modules/IPricingShim.js +9 -0
  121. package/dist/pricing-modules/IPricingShim.js.map +1 -0
  122. package/dist/pricing-modules/PricingModules.d.ts +13 -0
  123. package/dist/pricing-modules/PricingModules.d.ts.map +1 -0
  124. package/dist/pricing-modules/PricingModules.js +23 -0
  125. package/dist/pricing-modules/PricingModules.js.map +1 -0
  126. package/dist/pricing-modules/helpers.d.ts +16 -0
  127. package/dist/pricing-modules/helpers.d.ts.map +1 -0
  128. package/dist/pricing-modules/helpers.js +35 -0
  129. package/dist/pricing-modules/helpers.js.map +1 -0
  130. package/dist/readContractRetryer.d.ts +10 -0
  131. package/dist/readContractRetryer.d.ts.map +1 -0
  132. package/dist/readContractRetryer.js +68 -0
  133. package/dist/readContractRetryer.js.map +1 -0
  134. package/dist/river-registry/INodeRegistryShim.d.ts +9 -0
  135. package/dist/river-registry/INodeRegistryShim.d.ts.map +1 -0
  136. package/dist/river-registry/INodeRegistryShim.js +9 -0
  137. package/dist/river-registry/INodeRegistryShim.js.map +1 -0
  138. package/dist/river-registry/IOperatorRegistryShim.d.ts +9 -0
  139. package/dist/river-registry/IOperatorRegistryShim.d.ts.map +1 -0
  140. package/dist/river-registry/IOperatorRegistryShim.js +9 -0
  141. package/dist/river-registry/IOperatorRegistryShim.js.map +1 -0
  142. package/dist/river-registry/IStreamRegistryShim.d.ts +9 -0
  143. package/dist/river-registry/IStreamRegistryShim.d.ts.map +1 -0
  144. package/dist/river-registry/IStreamRegistryShim.js +9 -0
  145. package/dist/river-registry/IStreamRegistryShim.js.map +1 -0
  146. package/dist/river-registry/RiverRegistry.d.ts +18 -0
  147. package/dist/river-registry/RiverRegistry.d.ts.map +1 -0
  148. package/dist/river-registry/RiverRegistry.js +42 -0
  149. package/dist/river-registry/RiverRegistry.js.map +1 -0
  150. package/dist/river-registry/RiverRegistryFactory.d.ts +5 -0
  151. package/dist/river-registry/RiverRegistryFactory.d.ts.map +1 -0
  152. package/dist/river-registry/RiverRegistryFactory.js +5 -0
  153. package/dist/river-registry/RiverRegistryFactory.js.map +1 -0
  154. package/dist/space/IAppAccountShim.d.ts +9 -0
  155. package/dist/space/IAppAccountShim.d.ts.map +1 -0
  156. package/dist/space/IAppAccountShim.js +9 -0
  157. package/dist/space/IAppAccountShim.js.map +1 -0
  158. package/dist/space/IBanningShim.d.ts +9 -0
  159. package/dist/space/IBanningShim.d.ts.map +1 -0
  160. package/dist/space/IBanningShim.js +9 -0
  161. package/dist/space/IBanningShim.js.map +1 -0
  162. package/dist/space/IChannelShim.d.ts +9 -0
  163. package/dist/space/IChannelShim.d.ts.map +1 -0
  164. package/dist/space/IChannelShim.js +9 -0
  165. package/dist/space/IChannelShim.js.map +1 -0
  166. package/dist/space/IEntitlementDataQueryableShim.d.ts +11 -0
  167. package/dist/space/IEntitlementDataQueryableShim.d.ts.map +1 -0
  168. package/dist/space/IEntitlementDataQueryableShim.js +9 -0
  169. package/dist/space/IEntitlementDataQueryableShim.js.map +1 -0
  170. package/dist/space/IEntitlementsShim.d.ts +13 -0
  171. package/dist/space/IEntitlementsShim.d.ts.map +1 -0
  172. package/dist/space/IEntitlementsShim.js +19 -0
  173. package/dist/space/IEntitlementsShim.js.map +1 -0
  174. package/dist/space/IMembershipMetadataShim.d.ts +9 -0
  175. package/dist/space/IMembershipMetadataShim.d.ts.map +1 -0
  176. package/dist/space/IMembershipMetadataShim.js +9 -0
  177. package/dist/space/IMembershipMetadataShim.js.map +1 -0
  178. package/dist/space/IMembershipShim.d.ts +33 -0
  179. package/dist/space/IMembershipShim.d.ts.map +1 -0
  180. package/dist/space/IMembershipShim.js +139 -0
  181. package/dist/space/IMembershipShim.js.map +1 -0
  182. package/dist/space/IMulticallShim.d.ts +13 -0
  183. package/dist/space/IMulticallShim.d.ts.map +1 -0
  184. package/dist/space/IMulticallShim.js +15 -0
  185. package/dist/space/IMulticallShim.js.map +1 -0
  186. package/dist/space/IReviewShim.d.ts +64 -0
  187. package/dist/space/IReviewShim.d.ts.map +1 -0
  188. package/dist/space/IReviewShim.js +102 -0
  189. package/dist/space/IReviewShim.js.map +1 -0
  190. package/dist/space/IRolesShim.d.ts +10 -0
  191. package/dist/space/IRolesShim.d.ts.map +1 -0
  192. package/dist/space/IRolesShim.js +9 -0
  193. package/dist/space/IRolesShim.js.map +1 -0
  194. package/dist/space/ITippingShim.d.ts +39 -0
  195. package/dist/space/ITippingShim.d.ts.map +1 -0
  196. package/dist/space/ITippingShim.js +76 -0
  197. package/dist/space/ITippingShim.js.map +1 -0
  198. package/dist/space/ITreasuryShim.d.ts +9 -0
  199. package/dist/space/ITreasuryShim.d.ts.map +1 -0
  200. package/dist/space/ITreasuryShim.js +9 -0
  201. package/dist/space/ITreasuryShim.js.map +1 -0
  202. package/dist/space/OwnableFacetShim.d.ts +12 -0
  203. package/dist/space/OwnableFacetShim.d.ts.map +1 -0
  204. package/dist/space/OwnableFacetShim.js +19 -0
  205. package/dist/space/OwnableFacetShim.js.map +1 -0
  206. package/dist/space/Space.d.ts +107 -0
  207. package/dist/space/Space.d.ts.map +1 -0
  208. package/dist/space/Space.js +511 -0
  209. package/dist/space/Space.js.map +1 -0
  210. package/dist/space/TokenPausableFacetShim.d.ts +9 -0
  211. package/dist/space/TokenPausableFacetShim.d.ts.map +1 -0
  212. package/dist/space/TokenPausableFacetShim.js +9 -0
  213. package/dist/space/TokenPausableFacetShim.js.map +1 -0
  214. package/dist/space/entitlements/ConvertersEntitlements.d.ts +14 -0
  215. package/dist/space/entitlements/ConvertersEntitlements.d.ts.map +1 -0
  216. package/dist/space/entitlements/ConvertersEntitlements.js +193 -0
  217. package/dist/space/entitlements/ConvertersEntitlements.js.map +1 -0
  218. package/dist/space/entitlements/RuleBuilder.d.ts +83 -0
  219. package/dist/space/entitlements/RuleBuilder.d.ts.map +1 -0
  220. package/dist/space/entitlements/RuleBuilder.js +86 -0
  221. package/dist/space/entitlements/RuleBuilder.js.map +1 -0
  222. package/dist/space/entitlements/RuleEntitlementShim.d.ts +353 -0
  223. package/dist/space/entitlements/RuleEntitlementShim.d.ts.map +1 -0
  224. package/dist/space/entitlements/RuleEntitlementShim.js +40 -0
  225. package/dist/space/entitlements/RuleEntitlementShim.js.map +1 -0
  226. package/dist/space/entitlements/RuleEntitlementV2Shim.d.ts +353 -0
  227. package/dist/space/entitlements/RuleEntitlementV2Shim.d.ts.map +1 -0
  228. package/dist/space/entitlements/RuleEntitlementV2Shim.js +40 -0
  229. package/dist/space/entitlements/RuleEntitlementV2Shim.js.map +1 -0
  230. package/dist/space/entitlements/UserEntitlementShim.d.ts +13 -0
  231. package/dist/space/entitlements/UserEntitlementShim.d.ts.map +1 -0
  232. package/dist/space/entitlements/UserEntitlementShim.js +45 -0
  233. package/dist/space/entitlements/UserEntitlementShim.js.map +1 -0
  234. package/dist/space/entitlements/XChainConfig.d.ts +14 -0
  235. package/dist/space/entitlements/XChainConfig.d.ts.map +1 -0
  236. package/dist/space/entitlements/XChainConfig.js +70 -0
  237. package/dist/space/entitlements/XChainConfig.js.map +1 -0
  238. package/dist/space/entitlements/entitlement.d.ts +147 -0
  239. package/dist/space/entitlements/entitlement.d.ts.map +1 -0
  240. package/dist/space/entitlements/entitlement.js +940 -0
  241. package/dist/space/entitlements/entitlement.js.map +1 -0
  242. package/dist/space/entitlements/validateAndParseXChainConfig.d.ts +6 -0
  243. package/dist/space/entitlements/validateAndParseXChainConfig.d.ts.map +1 -0
  244. package/dist/space/entitlements/validateAndParseXChainConfig.js +34 -0
  245. package/dist/space/entitlements/validateAndParseXChainConfig.js.map +1 -0
  246. package/dist/space-dapp/SpaceDapp.d.ts +223 -0
  247. package/dist/space-dapp/SpaceDapp.d.ts.map +1 -0
  248. package/dist/space-dapp/SpaceDapp.js +1260 -0
  249. package/dist/space-dapp/SpaceDapp.js.map +1 -0
  250. package/dist/space-dapp/SpaceDappFactory.d.ts +5 -0
  251. package/dist/space-dapp/SpaceDappFactory.d.ts.map +1 -0
  252. package/dist/space-dapp/SpaceDappFactory.js +8 -0
  253. package/dist/space-dapp/SpaceDappFactory.js.map +1 -0
  254. package/dist/space-dapp/wrapTransaction.d.ts +4 -0
  255. package/dist/space-dapp/wrapTransaction.d.ts.map +1 -0
  256. package/dist/space-dapp/wrapTransaction.js +99 -0
  257. package/dist/space-dapp/wrapTransaction.js.map +1 -0
  258. package/dist/space-owner/GuardianFacetShim.d.ts +9 -0
  259. package/dist/space-owner/GuardianFacetShim.d.ts.map +1 -0
  260. package/dist/space-owner/GuardianFacetShim.js +9 -0
  261. package/dist/space-owner/GuardianFacetShim.js.map +1 -0
  262. package/dist/space-owner/SpaceOwner.d.ts +48 -0
  263. package/dist/space-owner/SpaceOwner.d.ts.map +1 -0
  264. package/dist/space-owner/SpaceOwner.js +81 -0
  265. package/dist/space-owner/SpaceOwner.js.map +1 -0
  266. package/dist/space-registrar/ICreateSpaceShim.d.ts +11 -0
  267. package/dist/space-registrar/ICreateSpaceShim.d.ts.map +1 -0
  268. package/dist/space-registrar/ICreateSpaceShim.js +9 -0
  269. package/dist/space-registrar/ICreateSpaceShim.js.map +1 -0
  270. package/dist/space-registrar/ILegacySpaceArchitectShim.d.ts +10 -0
  271. package/dist/space-registrar/ILegacySpaceArchitectShim.d.ts.map +1 -0
  272. package/dist/space-registrar/ILegacySpaceArchitectShim.js +9 -0
  273. package/dist/space-registrar/ILegacySpaceArchitectShim.js.map +1 -0
  274. package/dist/space-registrar/ISpaceArchitectShim.d.ts +10 -0
  275. package/dist/space-registrar/ISpaceArchitectShim.d.ts.map +1 -0
  276. package/dist/space-registrar/ISpaceArchitectShim.js +39 -0
  277. package/dist/space-registrar/ISpaceArchitectShim.js.map +1 -0
  278. package/dist/space-registrar/SpaceRegistrar.d.ts +27 -0
  279. package/dist/space-registrar/SpaceRegistrar.d.ts.map +1 -0
  280. package/dist/space-registrar/SpaceRegistrar.js +58 -0
  281. package/dist/space-registrar/SpaceRegistrar.js.map +1 -0
  282. package/dist/test-helpers/LocalhostWeb3Provider.d.ts +19 -0
  283. package/dist/test-helpers/LocalhostWeb3Provider.d.ts.map +1 -0
  284. package/dist/test-helpers/LocalhostWeb3Provider.js +80 -0
  285. package/dist/test-helpers/LocalhostWeb3Provider.js.map +1 -0
  286. package/dist/test-helpers/MockCrossChainEntitlement.d.ts +6 -0
  287. package/dist/test-helpers/MockCrossChainEntitlement.d.ts.map +1 -0
  288. package/dist/test-helpers/MockCrossChainEntitlement.js +104 -0
  289. package/dist/test-helpers/MockCrossChainEntitlement.js.map +1 -0
  290. package/dist/test-helpers/MockERC1155.d.ts +6 -0
  291. package/dist/test-helpers/MockERC1155.d.ts.map +1 -0
  292. package/dist/test-helpers/MockERC1155.js +518 -0
  293. package/dist/test-helpers/MockERC1155.js.map +1 -0
  294. package/dist/test-helpers/MockERC20.d.ts +6 -0
  295. package/dist/test-helpers/MockERC20.d.ts.map +1 -0
  296. package/dist/test-helpers/MockERC20.js +574 -0
  297. package/dist/test-helpers/MockERC20.js.map +1 -0
  298. package/dist/test-helpers/MockERC721A.d.ts +1563 -0
  299. package/dist/test-helpers/MockERC721A.d.ts.map +1 -0
  300. package/dist/test-helpers/MockERC721A.js +1913 -0
  301. package/dist/test-helpers/MockERC721A.js.map +1 -0
  302. package/dist/test-helpers/MockERC721AShim.d.ts +9 -0
  303. package/dist/test-helpers/MockERC721AShim.d.ts.map +1 -0
  304. package/dist/test-helpers/MockERC721AShim.js +9 -0
  305. package/dist/test-helpers/MockERC721AShim.js.map +1 -0
  306. package/dist/test-helpers/TestCrossChainEntitlement.d.ts +14 -0
  307. package/dist/test-helpers/TestCrossChainEntitlement.d.ts.map +1 -0
  308. package/dist/test-helpers/TestCrossChainEntitlement.js +99 -0
  309. package/dist/test-helpers/TestCrossChainEntitlement.js.map +1 -0
  310. package/dist/test-helpers/TestEthBalance.d.ts +72 -0
  311. package/dist/test-helpers/TestEthBalance.d.ts.map +1 -0
  312. package/dist/test-helpers/TestEthBalance.js +94 -0
  313. package/dist/test-helpers/TestEthBalance.js.map +1 -0
  314. package/dist/test-helpers/TestGatingERC1155.d.ts +17 -0
  315. package/dist/test-helpers/TestGatingERC1155.d.ts.map +1 -0
  316. package/dist/test-helpers/TestGatingERC1155.js +100 -0
  317. package/dist/test-helpers/TestGatingERC1155.js.map +1 -0
  318. package/dist/test-helpers/TestGatingERC20.d.ts +17 -0
  319. package/dist/test-helpers/TestGatingERC20.d.ts.map +1 -0
  320. package/dist/test-helpers/TestGatingERC20.js +149 -0
  321. package/dist/test-helpers/TestGatingERC20.js.map +1 -0
  322. package/dist/test-helpers/TestGatingNFT.d.ts +17 -0
  323. package/dist/test-helpers/TestGatingNFT.d.ts.map +1 -0
  324. package/dist/test-helpers/TestGatingNFT.js +137 -0
  325. package/dist/test-helpers/TestGatingNFT.js.map +1 -0
  326. package/dist/test-helpers/TestGatingUtils.d.ts +15 -0
  327. package/dist/test-helpers/TestGatingUtils.d.ts.map +1 -0
  328. package/dist/test-helpers/TestGatingUtils.js +112 -0
  329. package/dist/test-helpers/TestGatingUtils.js.map +1 -0
  330. package/dist/test-helpers/utils.d.ts +22 -0
  331. package/dist/test-helpers/utils.d.ts.map +1 -0
  332. package/dist/test-helpers/utils.js +30 -0
  333. package/dist/test-helpers/utils.js.map +1 -0
  334. package/dist/towns-token/TownsToken.d.ts +17 -0
  335. package/dist/towns-token/TownsToken.d.ts.map +1 -0
  336. package/dist/towns-token/TownsToken.js +33 -0
  337. package/dist/towns-token/TownsToken.js.map +1 -0
  338. package/dist/types/ContractTypes.d.ts +240 -0
  339. package/dist/types/ContractTypes.d.ts.map +1 -0
  340. package/dist/types/ContractTypes.js +65 -0
  341. package/dist/types/ContractTypes.js.map +1 -0
  342. package/dist/types/error-types.d.ts +7 -0
  343. package/dist/types/error-types.d.ts.map +1 -0
  344. package/dist/types/error-types.js +13 -0
  345. package/dist/types/error-types.js.map +1 -0
  346. package/dist/types/typechain.d.ts +4 -0
  347. package/dist/types/typechain.d.ts.map +1 -0
  348. package/dist/types/typechain.js +2 -0
  349. package/dist/types/typechain.js.map +1 -0
  350. package/dist/types/types.d.ts +29 -0
  351. package/dist/types/types.d.ts.map +1 -0
  352. package/dist/types/types.js +2 -0
  353. package/dist/types/types.js.map +1 -0
  354. package/dist/utils/ContractHelpers.d.ts +14 -0
  355. package/dist/utils/ContractHelpers.d.ts.map +1 -0
  356. package/dist/utils/ContractHelpers.js +54 -0
  357. package/dist/utils/ContractHelpers.js.map +1 -0
  358. package/dist/utils/Web3Constants.d.ts +6 -0
  359. package/dist/utils/Web3Constants.d.ts.map +1 -0
  360. package/dist/utils/Web3Constants.js +7 -0
  361. package/dist/utils/Web3Constants.js.map +1 -0
  362. package/dist/utils/ut.d.ts +46 -0
  363. package/dist/utils/ut.d.ts.map +1 -0
  364. package/dist/utils/ut.js +94 -0
  365. package/dist/utils/ut.js.map +1 -0
  366. package/dist/utils/web3Env.d.ts +36 -0
  367. package/dist/utils/web3Env.d.ts.map +1 -0
  368. package/dist/utils/web3Env.js +123 -0
  369. package/dist/utils/web3Env.js.map +1 -0
  370. package/dist/wallet-link/WalletLink.d.ts +58 -0
  371. package/dist/wallet-link/WalletLink.d.ts.map +1 -0
  372. package/dist/wallet-link/WalletLink.js +226 -0
  373. package/dist/wallet-link/WalletLink.js.map +1 -0
  374. package/dist/wallet-link/WalletLinkShim.d.ts +9 -0
  375. package/dist/wallet-link/WalletLinkShim.d.ts.map +1 -0
  376. package/dist/wallet-link/WalletLinkShim.js +9 -0
  377. package/dist/wallet-link/WalletLinkShim.js.map +1 -0
  378. 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":"AAAA,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AACvF,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEzD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAE3C,MAAM,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAA;AAE7C,MAAM,cAAc,GAAG,IAAI,GAAG,EAAmB,CAAA;AACjD,MAAM,mBAAmB,GAAG,IAAI,KAAK,EAAE,CAAA;AAEvC,KAAK,UAAU,kBAAkB,CAAC,SAAiB;IAC/C,IAAI,CAAC;QACD,MAAM,mBAAmB,CAAC,IAAI,EAAE,CAAA;QAChC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,MAAM,eAAe,GAAG,MAAM,cAAc,CACxC,SAAS,EACT,SAAS,CAAC,GAAG,EACb,SAAS,CAAC,QAAQ,EAClB,CAAC,WAAW,EAAE,KAAK,CAAC,CACvB,CAAA;YACD,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;QAClD,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAA;QAC5C,MAAM,IAAI,KAAK;QACX,4EAA4E;QAC5E,mCAAmC,SAAS,EAAE,CACjD,CAAA;IACL,CAAC;YAAS,CAAC;QACP,mBAAmB,CAAC,MAAM,EAAE,CAAA;IAChC,CAAC;IAED,OAAO,cAAc,CAAC,GAAG,CAAC,SAAS,CAAE,CAAA;AACzC,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,SAAiB,EAAE,SAAkB,EAAE,MAAc;IAC3E,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAA;IACvC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAA;IACxD,MAAM,MAAM,GAAG,gBAAgB,CAAC;QAC5B,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,IAAI,EAAE;QACjB,OAAO,EAAE,gBAAgB;KAC5B,CAAC;SACG,MAAM,CAAC,aAAa,CAAC;SACrB,MAAM,CAAC,aAAa,CAAC,CAAA;IAE1B,MAAM,MAAM,CAAC,UAAU,CAAC;QACpB,OAAO,EAAE,gBAAgB,CAAC,OAAO;QACjC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;KACzB,CAAC,CAAA;IAEF,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAA;IAE3D,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,EAAE,SAAS,CAAC,CAAA;IAEjD,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;QAC1C,OAAO,EAAE,eAAe;QACxB,GAAG,EAAE,SAAS,CAAC,GAAG;QAClB,YAAY,EAAE,MAAM;QACpB,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;QACzB,OAAO,EAAE,gBAAgB;KAC5B,CAAC,CAAA;IAEF,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IAEhC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;IAE5E,wEAAwE;IACxE,gGAAgG;IAChG,+CAA+C;IAC/C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC;QAClD,GAAG,EAAE,SAAS,CAAC,GAAG;QAClB,OAAO,EAAE,eAAe;QACxB,SAAS,EAAE,UAAU;QACrB,aAAa;QACb,IAAI,EAAE;YACF,EAAE,EAAE,SAAS;SAChB;QACD,SAAS,EAAE,OAAO,CAAC,WAAW;QAC9B,OAAO,EAAE,OAAO,CAAC,WAAW;KAC/B,CAAC,CAAA;IACF,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;IACxD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,IAAI,QAAQ,CAAC,eAAe,KAAK,OAAO,CAAC,eAAe,EAAE,CAAC;YACvD,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;YACtC,OAAM;QACV,CAAC;IACL,CAAC;IAED,MAAM,KAAK,CAAC,qBAAqB,CAAC,CAAA;AACtC,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,YAAoB;IAC3C,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,YAAY,CAAC,CAAA;IAC9D,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAA;IACvC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAA;IACxD,MAAM,MAAM,GAAG,gBAAgB,CAAC;QAC5B,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,IAAI,EAAE;QACjB,OAAO,EAAE,gBAAgB;KAC5B,CAAC;SACG,MAAM,CAAC,aAAa,CAAC;SACrB,MAAM,CAAC,aAAa,CAAC,CAAA;IAE1B,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;QAC1C,OAAO,EAAE,eAAe;QACxB,GAAG,EAAE,SAAS,CAAC,GAAG;QAClB,YAAY,EAAE,aAAa;QAC3B,IAAI,EAAE,EAAE;KACX,CAAC,CAAA;IACF,OAAO,MAAM,CAAC,WAAW,CAAC,CAAA;AAC9B,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,YAAoB,EAAE,OAAgB;IAC3D,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,YAAY,CAAC,CAAA;IAC9D,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAA;IACvC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAA;IACxD,MAAM,MAAM,GAAG,gBAAgB,CAAC;QAC5B,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,IAAI,EAAE;QACjB,OAAO,EAAE,gBAAgB;KAC5B,CAAC;SACG,MAAM,CAAC,aAAa,CAAC;SACrB,MAAM,CAAC,aAAa,CAAC,CAAA;IAE1B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;QACtC,OAAO,EAAE,eAAe;QACxB,GAAG,EAAE,SAAS,CAAC,GAAG;QAClB,YAAY,EAAE,WAAW;QACzB,IAAI,EAAE,CAAC,OAAO,CAAC;KAClB,CAAC,CAAA;IAEF,OAAO,MAAM,CAAC,OAAO,CAAC,CAAA;AAC1B,CAAC;AAED,KAAK,UAAU,QAAQ,CACnB,YAAoB,EACpB,EAAW,EACX,UAAyB,EACzB,MAAc;IAEd,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAA;IAC/C,MAAM,MAAM,GAAG,gBAAgB,CAAC;QAC5B,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,IAAI,EAAE;QACjB,OAAO,EAAE,OAAO;KACnB,CAAC;SACG,MAAM,CAAC,aAAa,CAAC;SACrB,MAAM,CAAC,aAAa,CAAC,CAAA;IAE1B,MAAM,MAAM,CAAC,UAAU,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;KACzB,CAAC,CAAA;IAEF,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,YAAY,CAAC,CAAA;IAC9D,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;QAClC,OAAO,EAAE,eAAe;QACxB,GAAG,EAAE,SAAS,CAAC,GAAG;QAClB,YAAY,EAAE,UAAU;QACxB,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC;KACrB,CAAC,CAAA;IAEF,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;IAChF,OAAO,EAAE,eAAe,EAAE,CAAA;AAC9B,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG;IACrB,kBAAkB;IAClB,SAAS;IACT,WAAW;IACX,UAAU;IACV,QAAQ;CACX,CAAA"}
@@ -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"}