@towns-protocol/web3 0.0.191

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 (327) hide show
  1. package/LICENSE.txt +21 -0
  2. package/README.md +3 -0
  3. package/dist/ContractHelpers.d.ts +18 -0
  4. package/dist/ContractHelpers.d.ts.map +1 -0
  5. package/dist/ContractHelpers.js +75 -0
  6. package/dist/ContractHelpers.js.map +1 -0
  7. package/dist/ContractTypes.d.ts +143 -0
  8. package/dist/ContractTypes.d.ts.map +1 -0
  9. package/dist/ContractTypes.js +65 -0
  10. package/dist/ContractTypes.js.map +1 -0
  11. package/dist/ConvertersEntitlements.d.ts +10 -0
  12. package/dist/ConvertersEntitlements.d.ts.map +1 -0
  13. package/dist/ConvertersEntitlements.js +120 -0
  14. package/dist/ConvertersEntitlements.js.map +1 -0
  15. package/dist/ConvertersRoles.d.ts +8 -0
  16. package/dist/ConvertersRoles.d.ts.map +1 -0
  17. package/dist/ConvertersRoles.js +94 -0
  18. package/dist/ConvertersRoles.js.map +1 -0
  19. package/dist/DelegateRegistry.d.ts +3 -0
  20. package/dist/DelegateRegistry.d.ts.map +1 -0
  21. package/dist/DelegateRegistry.js +72 -0
  22. package/dist/DelegateRegistry.js.map +1 -0
  23. package/dist/EntitlementCache.d.ts +20 -0
  24. package/dist/EntitlementCache.d.ts.map +1 -0
  25. package/dist/EntitlementCache.js +41 -0
  26. package/dist/EntitlementCache.js.map +1 -0
  27. package/dist/EntitlementCache.test.d.ts +5 -0
  28. package/dist/EntitlementCache.test.d.ts.map +1 -0
  29. package/dist/EntitlementCache.test.js +130 -0
  30. package/dist/EntitlementCache.test.js.map +1 -0
  31. package/dist/ISpaceDapp.d.ts +193 -0
  32. package/dist/ISpaceDapp.d.ts.map +1 -0
  33. package/dist/ISpaceDapp.js +2 -0
  34. package/dist/ISpaceDapp.js.map +1 -0
  35. package/dist/IStaticContractsInfo.d.ts +28 -0
  36. package/dist/IStaticContractsInfo.d.ts.map +1 -0
  37. package/dist/IStaticContractsInfo.js +13 -0
  38. package/dist/IStaticContractsInfo.js.map +1 -0
  39. package/dist/LocalhostWeb3Provider.d.ts +15 -0
  40. package/dist/LocalhostWeb3Provider.d.ts.map +1 -0
  41. package/dist/LocalhostWeb3Provider.js +60 -0
  42. package/dist/LocalhostWeb3Provider.js.map +1 -0
  43. package/dist/MockCrossChainEntitlement.d.ts +6 -0
  44. package/dist/MockCrossChainEntitlement.d.ts.map +1 -0
  45. package/dist/MockCrossChainEntitlement.js +104 -0
  46. package/dist/MockCrossChainEntitlement.js.map +1 -0
  47. package/dist/MockERC1155.d.ts +6 -0
  48. package/dist/MockERC1155.d.ts.map +1 -0
  49. package/dist/MockERC1155.js +518 -0
  50. package/dist/MockERC1155.js.map +1 -0
  51. package/dist/MockERC20.d.ts +6 -0
  52. package/dist/MockERC20.d.ts.map +1 -0
  53. package/dist/MockERC20.js +574 -0
  54. package/dist/MockERC20.js.map +1 -0
  55. package/dist/MockERC721A.d.ts +1563 -0
  56. package/dist/MockERC721A.d.ts.map +1 -0
  57. package/dist/MockERC721A.js +1913 -0
  58. package/dist/MockERC721A.js.map +1 -0
  59. package/dist/RiverRegistryFactory.d.ts +5 -0
  60. package/dist/RiverRegistryFactory.d.ts.map +1 -0
  61. package/dist/RiverRegistryFactory.js +5 -0
  62. package/dist/RiverRegistryFactory.js.map +1 -0
  63. package/dist/SpaceDappFactory.d.ts +5 -0
  64. package/dist/SpaceDappFactory.d.ts.map +1 -0
  65. package/dist/SpaceDappFactory.js +8 -0
  66. package/dist/SpaceDappFactory.js.map +1 -0
  67. package/dist/TestCrossChainEntitlement.d.ts +14 -0
  68. package/dist/TestCrossChainEntitlement.d.ts.map +1 -0
  69. package/dist/TestCrossChainEntitlement.js +100 -0
  70. package/dist/TestCrossChainEntitlement.js.map +1 -0
  71. package/dist/TestEthBalance.d.ts +60 -0
  72. package/dist/TestEthBalance.d.ts.map +1 -0
  73. package/dist/TestEthBalance.js +94 -0
  74. package/dist/TestEthBalance.js.map +1 -0
  75. package/dist/TestGatingERC1155.d.ts +17 -0
  76. package/dist/TestGatingERC1155.d.ts.map +1 -0
  77. package/dist/TestGatingERC1155.js +101 -0
  78. package/dist/TestGatingERC1155.js.map +1 -0
  79. package/dist/TestGatingERC20.d.ts +17 -0
  80. package/dist/TestGatingERC20.d.ts.map +1 -0
  81. package/dist/TestGatingERC20.js +149 -0
  82. package/dist/TestGatingERC20.js.map +1 -0
  83. package/dist/TestGatingNFT.d.ts +17 -0
  84. package/dist/TestGatingNFT.d.ts.map +1 -0
  85. package/dist/TestGatingNFT.js +140 -0
  86. package/dist/TestGatingNFT.js.map +1 -0
  87. package/dist/TestGatingUtils.d.ts +15 -0
  88. package/dist/TestGatingUtils.d.ts.map +1 -0
  89. package/dist/TestGatingUtils.js +112 -0
  90. package/dist/TestGatingUtils.js.map +1 -0
  91. package/dist/Utils.d.ts +59 -0
  92. package/dist/Utils.d.ts.map +1 -0
  93. package/dist/Utils.js +122 -0
  94. package/dist/Utils.js.map +1 -0
  95. package/dist/Web3Constants.d.ts +6 -0
  96. package/dist/Web3Constants.d.ts.map +1 -0
  97. package/dist/Web3Constants.js +7 -0
  98. package/dist/Web3Constants.js.map +1 -0
  99. package/dist/Web3Constants.test.d.ts +2 -0
  100. package/dist/Web3Constants.test.d.ts.map +1 -0
  101. package/dist/Web3Constants.test.js +15 -0
  102. package/dist/Web3Constants.test.js.map +1 -0
  103. package/dist/chain.d.ts +65 -0
  104. package/dist/chain.d.ts.map +1 -0
  105. package/dist/chain.js +48 -0
  106. package/dist/chain.js.map +1 -0
  107. package/dist/entitlement.d.ts +146 -0
  108. package/dist/entitlement.d.ts.map +1 -0
  109. package/dist/entitlement.js +931 -0
  110. package/dist/entitlement.js.map +1 -0
  111. package/dist/entitlement.test.d.ts +2 -0
  112. package/dist/entitlement.test.d.ts.map +1 -0
  113. package/dist/entitlement.test.js +1743 -0
  114. package/dist/entitlement.test.js.map +1 -0
  115. package/dist/error-types.d.ts +7 -0
  116. package/dist/error-types.d.ts.map +1 -0
  117. package/dist/error-types.js +13 -0
  118. package/dist/error-types.js.map +1 -0
  119. package/dist/index.d.ts +76 -0
  120. package/dist/index.d.ts.map +1 -0
  121. package/dist/index.js +76 -0
  122. package/dist/index.js.map +1 -0
  123. package/dist/types.d.ts +29 -0
  124. package/dist/types.d.ts.map +1 -0
  125. package/dist/types.js +2 -0
  126. package/dist/types.js.map +1 -0
  127. package/dist/utils.test.d.ts +2 -0
  128. package/dist/utils.test.d.ts.map +1 -0
  129. package/dist/utils.test.js +44 -0
  130. package/dist/utils.test.js.map +1 -0
  131. package/dist/v3/BaseContractShim.d.ts +28 -0
  132. package/dist/v3/BaseContractShim.d.ts.map +1 -0
  133. package/dist/v3/BaseContractShim.js +185 -0
  134. package/dist/v3/BaseContractShim.js.map +1 -0
  135. package/dist/v3/BaseRegistry.d.ts +30 -0
  136. package/dist/v3/BaseRegistry.d.ts.map +1 -0
  137. package/dist/v3/BaseRegistry.js +64 -0
  138. package/dist/v3/BaseRegistry.js.map +1 -0
  139. package/dist/v3/EIP-712.d.ts +35 -0
  140. package/dist/v3/EIP-712.d.ts.map +1 -0
  141. package/dist/v3/EIP-712.js +57 -0
  142. package/dist/v3/EIP-712.js.map +1 -0
  143. package/dist/v3/IBanningShim.d.ts +7 -0
  144. package/dist/v3/IBanningShim.d.ts.map +1 -0
  145. package/dist/v3/IBanningShim.js +8 -0
  146. package/dist/v3/IBanningShim.js.map +1 -0
  147. package/dist/v3/IChannelShim.d.ts +8 -0
  148. package/dist/v3/IChannelShim.d.ts.map +1 -0
  149. package/dist/v3/IChannelShim.js +8 -0
  150. package/dist/v3/IChannelShim.js.map +1 -0
  151. package/dist/v3/ICreateSpaceShim.d.ts +9 -0
  152. package/dist/v3/ICreateSpaceShim.d.ts.map +1 -0
  153. package/dist/v3/ICreateSpaceShim.js +8 -0
  154. package/dist/v3/ICreateSpaceShim.js.map +1 -0
  155. package/dist/v3/IDropFacetShim.d.ts +7 -0
  156. package/dist/v3/IDropFacetShim.d.ts.map +1 -0
  157. package/dist/v3/IDropFacetShim.js +8 -0
  158. package/dist/v3/IDropFacetShim.js.map +1 -0
  159. package/dist/v3/IERC721AQueryableShim.d.ts +7 -0
  160. package/dist/v3/IERC721AQueryableShim.d.ts.map +1 -0
  161. package/dist/v3/IERC721AQueryableShim.js +8 -0
  162. package/dist/v3/IERC721AQueryableShim.js.map +1 -0
  163. package/dist/v3/IERC721AShim.d.ts +7 -0
  164. package/dist/v3/IERC721AShim.d.ts.map +1 -0
  165. package/dist/v3/IERC721AShim.js +8 -0
  166. package/dist/v3/IERC721AShim.js.map +1 -0
  167. package/dist/v3/IEntitlementCheckerShim.d.ts +7 -0
  168. package/dist/v3/IEntitlementCheckerShim.d.ts.map +1 -0
  169. package/dist/v3/IEntitlementCheckerShim.js +8 -0
  170. package/dist/v3/IEntitlementCheckerShim.js.map +1 -0
  171. package/dist/v3/IEntitlementDataQueryableShim.d.ts +8 -0
  172. package/dist/v3/IEntitlementDataQueryableShim.d.ts.map +1 -0
  173. package/dist/v3/IEntitlementDataQueryableShim.js +8 -0
  174. package/dist/v3/IEntitlementDataQueryableShim.js.map +1 -0
  175. package/dist/v3/IEntitlementsShim.d.ts +8 -0
  176. package/dist/v3/IEntitlementsShim.d.ts.map +1 -0
  177. package/dist/v3/IEntitlementsShim.js +8 -0
  178. package/dist/v3/IEntitlementsShim.js.map +1 -0
  179. package/dist/v3/ILegacySpaceArchitectShim.d.ts +8 -0
  180. package/dist/v3/ILegacySpaceArchitectShim.d.ts.map +1 -0
  181. package/dist/v3/ILegacySpaceArchitectShim.js +8 -0
  182. package/dist/v3/ILegacySpaceArchitectShim.js.map +1 -0
  183. package/dist/v3/IMembershipMetadataShim.d.ts +7 -0
  184. package/dist/v3/IMembershipMetadataShim.d.ts.map +1 -0
  185. package/dist/v3/IMembershipMetadataShim.js +8 -0
  186. package/dist/v3/IMembershipMetadataShim.js.map +1 -0
  187. package/dist/v3/IMembershipShim.d.ts +18 -0
  188. package/dist/v3/IMembershipShim.d.ts.map +1 -0
  189. package/dist/v3/IMembershipShim.js +73 -0
  190. package/dist/v3/IMembershipShim.js.map +1 -0
  191. package/dist/v3/IMulticallShim.d.ts +7 -0
  192. package/dist/v3/IMulticallShim.d.ts.map +1 -0
  193. package/dist/v3/IMulticallShim.js +8 -0
  194. package/dist/v3/IMulticallShim.js.map +1 -0
  195. package/dist/v3/INodeOperatorShim.d.ts +7 -0
  196. package/dist/v3/INodeOperatorShim.d.ts.map +1 -0
  197. package/dist/v3/INodeOperatorShim.js +8 -0
  198. package/dist/v3/INodeOperatorShim.js.map +1 -0
  199. package/dist/v3/INodeRegistryShim.d.ts +7 -0
  200. package/dist/v3/INodeRegistryShim.d.ts.map +1 -0
  201. package/dist/v3/INodeRegistryShim.js +8 -0
  202. package/dist/v3/INodeRegistryShim.js.map +1 -0
  203. package/dist/v3/IOperatorRegistryShim.d.ts +7 -0
  204. package/dist/v3/IOperatorRegistryShim.d.ts.map +1 -0
  205. package/dist/v3/IOperatorRegistryShim.js +8 -0
  206. package/dist/v3/IOperatorRegistryShim.js.map +1 -0
  207. package/dist/v3/IPrepayShim.d.ts +7 -0
  208. package/dist/v3/IPrepayShim.d.ts.map +1 -0
  209. package/dist/v3/IPrepayShim.js +8 -0
  210. package/dist/v3/IPrepayShim.js.map +1 -0
  211. package/dist/v3/IPricingShim.d.ts +8 -0
  212. package/dist/v3/IPricingShim.d.ts.map +1 -0
  213. package/dist/v3/IPricingShim.js +8 -0
  214. package/dist/v3/IPricingShim.js.map +1 -0
  215. package/dist/v3/IReviewShim.d.ts +61 -0
  216. package/dist/v3/IReviewShim.d.ts.map +1 -0
  217. package/dist/v3/IReviewShim.js +101 -0
  218. package/dist/v3/IReviewShim.js.map +1 -0
  219. package/dist/v3/IRiverPointsShim.d.ts +7 -0
  220. package/dist/v3/IRiverPointsShim.d.ts.map +1 -0
  221. package/dist/v3/IRiverPointsShim.js +8 -0
  222. package/dist/v3/IRiverPointsShim.js.map +1 -0
  223. package/dist/v3/IRolesShim.d.ts +8 -0
  224. package/dist/v3/IRolesShim.d.ts.map +1 -0
  225. package/dist/v3/IRolesShim.js +8 -0
  226. package/dist/v3/IRolesShim.js.map +1 -0
  227. package/dist/v3/IRuleEntitlementShim.d.ts +6 -0
  228. package/dist/v3/IRuleEntitlementShim.d.ts.map +1 -0
  229. package/dist/v3/IRuleEntitlementShim.js +3 -0
  230. package/dist/v3/IRuleEntitlementShim.js.map +1 -0
  231. package/dist/v3/IRuleEntitlementV2Shim.d.ts +6 -0
  232. package/dist/v3/IRuleEntitlementV2Shim.d.ts.map +1 -0
  233. package/dist/v3/IRuleEntitlementV2Shim.js +3 -0
  234. package/dist/v3/IRuleEntitlementV2Shim.js.map +1 -0
  235. package/dist/v3/ISpaceArchitectShim.d.ts +8 -0
  236. package/dist/v3/ISpaceArchitectShim.d.ts.map +1 -0
  237. package/dist/v3/ISpaceArchitectShim.js +38 -0
  238. package/dist/v3/ISpaceArchitectShim.js.map +1 -0
  239. package/dist/v3/ISpaceDelegationShim.d.ts +7 -0
  240. package/dist/v3/ISpaceDelegationShim.d.ts.map +1 -0
  241. package/dist/v3/ISpaceDelegationShim.js +8 -0
  242. package/dist/v3/ISpaceDelegationShim.js.map +1 -0
  243. package/dist/v3/ISpaceOwnerShim.d.ts +8 -0
  244. package/dist/v3/ISpaceOwnerShim.d.ts.map +1 -0
  245. package/dist/v3/ISpaceOwnerShim.js +8 -0
  246. package/dist/v3/ISpaceOwnerShim.js.map +1 -0
  247. package/dist/v3/IStreamRegistryShim.d.ts +7 -0
  248. package/dist/v3/IStreamRegistryShim.d.ts.map +1 -0
  249. package/dist/v3/IStreamRegistryShim.js +8 -0
  250. package/dist/v3/IStreamRegistryShim.js.map +1 -0
  251. package/dist/v3/ITippingShim.d.ts +20 -0
  252. package/dist/v3/ITippingShim.d.ts.map +1 -0
  253. package/dist/v3/ITippingShim.js +46 -0
  254. package/dist/v3/ITippingShim.js.map +1 -0
  255. package/dist/v3/ITreasuryShim.d.ts +7 -0
  256. package/dist/v3/ITreasuryShim.d.ts.map +1 -0
  257. package/dist/v3/ITreasuryShim.js +8 -0
  258. package/dist/v3/ITreasuryShim.js.map +1 -0
  259. package/dist/v3/MockERC721AShim.d.ts +7 -0
  260. package/dist/v3/MockERC721AShim.d.ts.map +1 -0
  261. package/dist/v3/MockERC721AShim.js +8 -0
  262. package/dist/v3/MockERC721AShim.js.map +1 -0
  263. package/dist/v3/OwnableFacetShim.d.ts +7 -0
  264. package/dist/v3/OwnableFacetShim.d.ts.map +1 -0
  265. package/dist/v3/OwnableFacetShim.js +8 -0
  266. package/dist/v3/OwnableFacetShim.js.map +1 -0
  267. package/dist/v3/PlatformRequirements.d.ts +10 -0
  268. package/dist/v3/PlatformRequirements.d.ts.map +1 -0
  269. package/dist/v3/PlatformRequirements.js +17 -0
  270. package/dist/v3/PlatformRequirements.js.map +1 -0
  271. package/dist/v3/PricingModules.d.ts +13 -0
  272. package/dist/v3/PricingModules.d.ts.map +1 -0
  273. package/dist/v3/PricingModules.js +23 -0
  274. package/dist/v3/PricingModules.js.map +1 -0
  275. package/dist/v3/RiverAirdropDapp.d.ts +16 -0
  276. package/dist/v3/RiverAirdropDapp.d.ts.map +1 -0
  277. package/dist/v3/RiverAirdropDapp.js +30 -0
  278. package/dist/v3/RiverAirdropDapp.js.map +1 -0
  279. package/dist/v3/RiverRegistry.d.ts +32 -0
  280. package/dist/v3/RiverRegistry.d.ts.map +1 -0
  281. package/dist/v3/RiverRegistry.js +96 -0
  282. package/dist/v3/RiverRegistry.js.map +1 -0
  283. package/dist/v3/RuleEntitlementShim.d.ts +11 -0
  284. package/dist/v3/RuleEntitlementShim.d.ts.map +1 -0
  285. package/dist/v3/RuleEntitlementShim.js +38 -0
  286. package/dist/v3/RuleEntitlementShim.js.map +1 -0
  287. package/dist/v3/RuleEntitlementV2Shim.d.ts +11 -0
  288. package/dist/v3/RuleEntitlementV2Shim.d.ts.map +1 -0
  289. package/dist/v3/RuleEntitlementV2Shim.js +38 -0
  290. package/dist/v3/RuleEntitlementV2Shim.js.map +1 -0
  291. package/dist/v3/Space.d.ts +97 -0
  292. package/dist/v3/Space.d.ts.map +1 -0
  293. package/dist/v3/Space.js +440 -0
  294. package/dist/v3/Space.js.map +1 -0
  295. package/dist/v3/SpaceDapp.d.ts +212 -0
  296. package/dist/v3/SpaceDapp.d.ts.map +1 -0
  297. package/dist/v3/SpaceDapp.js +1164 -0
  298. package/dist/v3/SpaceDapp.js.map +1 -0
  299. package/dist/v3/SpaceOwner.d.ts +13 -0
  300. package/dist/v3/SpaceOwner.d.ts.map +1 -0
  301. package/dist/v3/SpaceOwner.js +18 -0
  302. package/dist/v3/SpaceOwner.js.map +1 -0
  303. package/dist/v3/SpaceRegistrar.d.ts +25 -0
  304. package/dist/v3/SpaceRegistrar.d.ts.map +1 -0
  305. package/dist/v3/SpaceRegistrar.js +56 -0
  306. package/dist/v3/SpaceRegistrar.js.map +1 -0
  307. package/dist/v3/TokenPausableFacetShim.d.ts +7 -0
  308. package/dist/v3/TokenPausableFacetShim.d.ts.map +1 -0
  309. package/dist/v3/TokenPausableFacetShim.js +8 -0
  310. package/dist/v3/TokenPausableFacetShim.js.map +1 -0
  311. package/dist/v3/UserEntitlementShim.d.ts +11 -0
  312. package/dist/v3/UserEntitlementShim.d.ts.map +1 -0
  313. package/dist/v3/UserEntitlementShim.js +44 -0
  314. package/dist/v3/UserEntitlementShim.js.map +1 -0
  315. package/dist/v3/WalletLink.d.ts +50 -0
  316. package/dist/v3/WalletLink.d.ts.map +1 -0
  317. package/dist/v3/WalletLink.js +215 -0
  318. package/dist/v3/WalletLink.js.map +1 -0
  319. package/dist/v3/WalletLinkShim.d.ts +7 -0
  320. package/dist/v3/WalletLinkShim.d.ts.map +1 -0
  321. package/dist/v3/WalletLinkShim.js +8 -0
  322. package/dist/v3/WalletLinkShim.js.map +1 -0
  323. package/dist/v3/index.d.ts +24 -0
  324. package/dist/v3/index.d.ts.map +1 -0
  325. package/dist/v3/index.js +24 -0
  326. package/dist/v3/index.js.map +1 -0
  327. package/package.json +54 -0
@@ -0,0 +1,72 @@
1
+ import { ethers, utils } from 'ethers';
2
+ const v1RegistryContractAddress = '0x00000000000076a84fef008cdabe6409d2fe638b';
3
+ const delegationTypeAll = 1;
4
+ const delegateRegistryJsonAbi = `
5
+ [
6
+ {
7
+ "type": "function",
8
+ "name": "getDelegationsByDelegate",
9
+ "inputs": [
10
+ {
11
+ "name": "delegate",
12
+ "type": "address",
13
+ "internalType": "address"
14
+ }
15
+ ],
16
+ "outputs": [
17
+ {
18
+ "name": "",
19
+ "type": "tuple[]",
20
+ "internalType": "struct IDelegateRegistryV1.DelegationInfo[]",
21
+ "components": [
22
+ {
23
+ "name": "type_",
24
+ "type": "uint8",
25
+ "internalType": "enum IDelegateRegistryV1.DelegationType"
26
+ },
27
+ {
28
+ "name": "vault",
29
+ "type": "address",
30
+ "internalType": "address"
31
+ },
32
+ {
33
+ "name": "delegate",
34
+ "type": "address",
35
+ "internalType": "address"
36
+ },
37
+ {
38
+ "name": "contract_",
39
+ "type": "address",
40
+ "internalType": "address"
41
+ },
42
+ {
43
+ "name": "tokenId",
44
+ "type": "uint256",
45
+ "internalType": "uint256"
46
+ }
47
+ ]
48
+ }
49
+ ],
50
+ "stateMutability": "view"
51
+ }
52
+ ]`;
53
+ function newDelegateContract(provider) {
54
+ const iface = new utils.Interface(delegateRegistryJsonAbi);
55
+ const humanReadableAbi = iface.format(utils.FormatTypes.full);
56
+ return new ethers.Contract(v1RegistryContractAddress, humanReadableAbi, provider);
57
+ }
58
+ export async function computeDelegatorsForProvider(provider, wallets) {
59
+ const contract = newDelegateContract(provider);
60
+ const delegatorWallets = (await Promise.all(wallets.map(async (wallet) => {
61
+ return ((await contract.callStatic.getDelegationsByDelegate(wallet))
62
+ // Keep only delegations that cede the entire wallet
63
+ .filter((info) => info.type_ == delegationTypeAll)
64
+ // The 'vault' is the delegator wallet that cedes to one of wallets
65
+ // passed in via the parameters
66
+ .map((info) => info.vault));
67
+ }))).reduce((left, right) => [...left, ...right]);
68
+ // Return de-duped list of wallets, in case delegate wallets occur >1x across
69
+ // ethereum mainnet and testnets.
70
+ return [...new Set(delegatorWallets)];
71
+ }
72
+ //# sourceMappingURL=DelegateRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DelegateRegistry.js","sourceRoot":"","sources":["../src/DelegateRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAEtC,MAAM,yBAAyB,GAAG,4CAA4C,CAAA;AAC9E,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAE3B,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgD9B,CAAA;AAEF,SAAS,mBAAmB,CAAC,QAAuC;IAChE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAA;IAC1D,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAC7D,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,yBAAyB,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAA;AACrF,CAAC;AAUD,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAC9C,QAAuC,EACvC,OAAiB;IAEjB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC9C,MAAM,gBAAgB,GAAG,CACrB,MAAM,OAAO,CAAC,GAAG,CACb,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QACzB,OAAO,CAEC,CAAC,MAAM,QAAQ,CAAC,UAAU,CAAC,wBAAwB,CAC/C,MAAM,CACT,CACJ;YACG,oDAAoD;aACnD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,iBAAiB,CAAC;YAClD,mEAAmE;YACnE,+BAA+B;aAC9B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CACjC,CAAA;IACL,CAAC,CAAC,CACL,CACJ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAA;IAE9C,6EAA6E;IAC7E,iCAAiC;IACjC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAA;AACzC,CAAC"}
@@ -0,0 +1,20 @@
1
+ export interface Keyable {
2
+ toKey(): string;
3
+ }
4
+ export interface CacheResult<V> {
5
+ value: V;
6
+ cacheHit: boolean;
7
+ isPositive: boolean;
8
+ }
9
+ export declare class EntitlementCache<K extends Keyable, V> {
10
+ private readonly negativeCache;
11
+ private readonly positiveCache;
12
+ constructor(options?: {
13
+ positiveCacheTTLSeconds: number;
14
+ negativeCacheTTLSeconds: number;
15
+ positiveCacheSize?: number;
16
+ negativeCacheSize?: number;
17
+ });
18
+ executeUsingCache(keyable: K, onCacheMiss: (k: K) => Promise<CacheResult<V>>): Promise<CacheResult<V>>;
19
+ }
20
+ //# sourceMappingURL=EntitlementCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntitlementCache.d.ts","sourceRoot":"","sources":["../src/EntitlementCache.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,OAAO;IACpB,KAAK,IAAI,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC;IAC1B,KAAK,EAAE,CAAC,CAAA;IACR,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;CACtB;AAED,qBAAa,gBAAgB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC;IAC9C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkC;IAChE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkC;gBAEpD,OAAO,CAAC,EAAE;QAClB,uBAAuB,EAAE,MAAM,CAAA;QAC/B,uBAAuB,EAAE,MAAM,CAAA;QAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAC7B;IAgBK,iBAAiB,CACnB,OAAO,EAAE,CAAC,EACV,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAC/C,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAuB7B"}
@@ -0,0 +1,41 @@
1
+ import TTLCache from '@isaacs/ttlcache';
2
+ export class EntitlementCache {
3
+ negativeCache;
4
+ positiveCache;
5
+ constructor(options) {
6
+ const positiveCacheTTLSeconds = options?.positiveCacheTTLSeconds ?? 15 * 60;
7
+ const negativeCacheTTLSeconds = options?.negativeCacheTTLSeconds ?? 2;
8
+ const positiveCacheSize = options?.positiveCacheSize ?? 10000;
9
+ const negativeCacheSize = options?.negativeCacheSize ?? 10000;
10
+ this.negativeCache = new TTLCache({
11
+ ttl: negativeCacheTTLSeconds * 1000,
12
+ max: negativeCacheSize,
13
+ });
14
+ this.positiveCache = new TTLCache({
15
+ ttl: positiveCacheTTLSeconds * 1000,
16
+ max: positiveCacheSize,
17
+ });
18
+ }
19
+ async executeUsingCache(keyable, onCacheMiss) {
20
+ const key = keyable.toKey();
21
+ const negativeCacheResult = this.negativeCache.get(key);
22
+ if (negativeCacheResult !== undefined) {
23
+ negativeCacheResult.cacheHit = true;
24
+ return negativeCacheResult;
25
+ }
26
+ const positiveCacheResult = this.positiveCache.get(key);
27
+ if (positiveCacheResult !== undefined) {
28
+ positiveCacheResult.cacheHit = true;
29
+ return positiveCacheResult;
30
+ }
31
+ const result = await onCacheMiss(keyable);
32
+ if (result.isPositive) {
33
+ this.positiveCache.set(key, result);
34
+ }
35
+ else {
36
+ this.negativeCache.set(key, result);
37
+ }
38
+ return result;
39
+ }
40
+ }
41
+ //# sourceMappingURL=EntitlementCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntitlementCache.js","sourceRoot":"","sources":["../src/EntitlementCache.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,kBAAkB,CAAA;AAYvC,MAAM,OAAO,gBAAgB;IACR,aAAa,CAAkC;IAC/C,aAAa,CAAkC;IAEhE,YAAY,OAKX;QACG,MAAM,uBAAuB,GAAG,OAAO,EAAE,uBAAuB,IAAI,EAAE,GAAG,EAAE,CAAA;QAC3E,MAAM,uBAAuB,GAAG,OAAO,EAAE,uBAAuB,IAAI,CAAC,CAAA;QACrE,MAAM,iBAAiB,GAAG,OAAO,EAAE,iBAAiB,IAAI,KAAK,CAAA;QAC7D,MAAM,iBAAiB,GAAG,OAAO,EAAE,iBAAiB,IAAI,KAAK,CAAA;QAE7D,IAAI,CAAC,aAAa,GAAG,IAAI,QAAQ,CAAC;YAC9B,GAAG,EAAE,uBAAuB,GAAG,IAAI;YACnC,GAAG,EAAE,iBAAiB;SACzB,CAAC,CAAA;QACF,IAAI,CAAC,aAAa,GAAG,IAAI,QAAQ,CAAC;YAC9B,GAAG,EAAE,uBAAuB,GAAG,IAAI;YACnC,GAAG,EAAE,iBAAiB;SACzB,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,iBAAiB,CACnB,OAAU,EACV,WAA8C;QAE9C,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,CAAA;QAC3B,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACvD,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACpC,mBAAmB,CAAC,QAAQ,GAAG,IAAI,CAAA;YACnC,OAAO,mBAAmB,CAAA;QAC9B,CAAC;QAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACvD,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACpC,mBAAmB,CAAC,QAAQ,GAAG,IAAI,CAAA;YACnC,OAAO,mBAAmB,CAAA;QAC9B,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAA;QACzC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QACvC,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QACvC,CAAC;QAED,OAAO,MAAM,CAAA;IACjB,CAAC;CACJ"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @group main
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=EntitlementCache.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntitlementCache.test.d.ts","sourceRoot":"","sources":["../src/EntitlementCache.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * @group main
3
+ */
4
+ import { EntitlementCache } from './EntitlementCache';
5
+ class Key {
6
+ key;
7
+ toKey() {
8
+ return this.key;
9
+ }
10
+ constructor(key) {
11
+ this.key = key;
12
+ }
13
+ }
14
+ class BooleanCacheResult {
15
+ value;
16
+ cacheHit;
17
+ isPositive;
18
+ constructor(value) {
19
+ this.value = value;
20
+ this.cacheHit = false;
21
+ this.isPositive = value;
22
+ }
23
+ }
24
+ class StringCacheResult {
25
+ value;
26
+ cacheHit;
27
+ isPositive;
28
+ constructor(value) {
29
+ this.value = value;
30
+ this.cacheHit = false;
31
+ this.isPositive = value !== '';
32
+ }
33
+ }
34
+ describe('EntitlementsCacheTests', () => {
35
+ it('caches repeat positive values', async () => {
36
+ const cache = new EntitlementCache({
37
+ positiveCacheTTLSeconds: 10,
38
+ negativeCacheTTLSeconds: 10,
39
+ });
40
+ const onMiss = (_) => {
41
+ return Promise.resolve(new BooleanCacheResult(true));
42
+ };
43
+ const { value, cacheHit } = await cache.executeUsingCache(new Key('key'), onMiss);
44
+ expect(value).toBe(true);
45
+ expect(cacheHit).toBe(false);
46
+ const { value: value2, cacheHit: cacheHit2 } = await cache.executeUsingCache(new Key('key'), onMiss);
47
+ expect(value2).toBe(true);
48
+ expect(cacheHit2).toBe(true);
49
+ });
50
+ it('caches repeat negative values', async () => {
51
+ const cache = new EntitlementCache({
52
+ positiveCacheTTLSeconds: 10,
53
+ negativeCacheTTLSeconds: 10,
54
+ });
55
+ const onMiss = (_) => {
56
+ return Promise.resolve(new BooleanCacheResult(false));
57
+ };
58
+ const { value, cacheHit } = await cache.executeUsingCache(new Key('key'), onMiss);
59
+ expect(value).toBe(false);
60
+ expect(cacheHit).toBe(false);
61
+ const { value: value2, cacheHit: cacheHit2 } = await cache.executeUsingCache(new Key('key'), onMiss);
62
+ expect(value2).toBe(false);
63
+ expect(cacheHit2).toBe(true);
64
+ });
65
+ it('caches non-boolean positive values', async () => {
66
+ const cache = new EntitlementCache({
67
+ positiveCacheTTLSeconds: 10,
68
+ negativeCacheTTLSeconds: 10,
69
+ });
70
+ const onMiss = (_) => {
71
+ return Promise.resolve(new StringCacheResult('value'));
72
+ };
73
+ const { value, cacheHit } = await cache.executeUsingCache(new Key('key'), onMiss);
74
+ expect(value).toBe('value');
75
+ expect(cacheHit).toBe(false);
76
+ const { value: value2, cacheHit: cacheHit2 } = await cache.executeUsingCache(new Key('key'), onMiss);
77
+ expect(value2).toBe('value');
78
+ expect(cacheHit2).toBe(true);
79
+ });
80
+ it('caches non-boolean falsy keys', async () => {
81
+ const cache = new EntitlementCache({
82
+ positiveCacheTTLSeconds: 10,
83
+ negativeCacheTTLSeconds: 10,
84
+ });
85
+ const onMiss = (_) => {
86
+ return Promise.resolve(new StringCacheResult(''));
87
+ };
88
+ const { value, cacheHit } = await cache.executeUsingCache(new Key('key'), onMiss);
89
+ expect(value).toBe('');
90
+ expect(cacheHit).toBe(false);
91
+ const { value: value2, cacheHit: cacheHit2 } = await cache.executeUsingCache(new Key('key'), onMiss);
92
+ expect(value2).toBe('');
93
+ expect(cacheHit2).toBe(true);
94
+ });
95
+ it('positive cache values expire after ttl', async () => {
96
+ const cache = new EntitlementCache({
97
+ positiveCacheTTLSeconds: 1,
98
+ negativeCacheTTLSeconds: 10,
99
+ });
100
+ const onMiss = (_) => {
101
+ return Promise.resolve(new BooleanCacheResult(true));
102
+ };
103
+ const { value, cacheHit } = await cache.executeUsingCache(new Key('key'), onMiss);
104
+ expect(value).toBe(true);
105
+ expect(cacheHit).toBe(false);
106
+ // Wait 5 seconds for the positive auth cache to expire
107
+ await new Promise((f) => setTimeout(f, 5000));
108
+ const { value: value2, cacheHit: cacheHit2 } = await cache.executeUsingCache(new Key('key'), onMiss);
109
+ expect(value2).toBe(true);
110
+ expect(cacheHit2).toBe(false);
111
+ });
112
+ it('negative cache values expire after ttl', async () => {
113
+ const cache = new EntitlementCache({
114
+ positiveCacheTTLSeconds: 10,
115
+ negativeCacheTTLSeconds: 1,
116
+ });
117
+ const onMiss = (_) => {
118
+ return Promise.resolve(new BooleanCacheResult(false));
119
+ };
120
+ const { value, cacheHit } = await cache.executeUsingCache(new Key('key'), onMiss);
121
+ expect(value).toBe(false);
122
+ expect(cacheHit).toBe(false);
123
+ // Wait 5 seconds for the positive auth cache to expire
124
+ await new Promise((f) => setTimeout(f, 1000));
125
+ const { value: value2, cacheHit: cacheHit2 } = await cache.executeUsingCache(new Key('key'), onMiss);
126
+ expect(value2).toBe(false);
127
+ expect(cacheHit2).toBe(false);
128
+ });
129
+ });
130
+ //# sourceMappingURL=EntitlementCache.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntitlementCache.test.js","sourceRoot":"","sources":["../src/EntitlementCache.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,193 @@
1
+ import { BasicRoleInfo, ChannelDetails, ChannelMetadata, MembershipInfo, LegacyMembershipStruct, MembershipStruct, Permission, PricingModuleStruct, RoleDetails, TotalSupplyInfo } from './ContractTypes';
2
+ import { XchainConfig } from './entitlement';
3
+ import { WalletLink as WalletLinkV3 } from './v3/WalletLink';
4
+ import { BigNumber, BytesLike, ContractReceipt, ContractTransaction, ethers } from 'ethers';
5
+ import { SpaceInfo } from './types';
6
+ import { IRolesBase, Space, SpaceRegistrar, IRuleEntitlementBase, IRuleEntitlementV2Base, RiverAirdropDapp } from './v3';
7
+ import { PricingModules } from './v3/PricingModules';
8
+ import { BaseChainConfig } from './IStaticContractsInfo';
9
+ import { PlatformRequirements } from './v3/PlatformRequirements';
10
+ import { TipEventObject } from '@towns-protocol/generated/dev/typings/ITipping';
11
+ export type SignerType = ethers.Signer;
12
+ export interface CreateLegacySpaceParams {
13
+ spaceName: string;
14
+ uri: string;
15
+ channelName: string;
16
+ membership: LegacyMembershipStruct;
17
+ shortDescription?: string;
18
+ longDescription?: string;
19
+ }
20
+ export interface CreateSpaceParams {
21
+ spaceName: string;
22
+ uri: string;
23
+ channelName: string;
24
+ membership: MembershipStruct;
25
+ shortDescription?: string;
26
+ longDescription?: string;
27
+ prepaySupply?: number;
28
+ }
29
+ export interface UpdateChannelMetadataParams {
30
+ spaceId: string;
31
+ channelId: string;
32
+ channelName: string;
33
+ channelDescription: string;
34
+ roleIds: number[];
35
+ disabled?: boolean;
36
+ }
37
+ export interface UpdateChannelAccessParams {
38
+ spaceId: string;
39
+ channelId: string;
40
+ disabled: boolean;
41
+ }
42
+ export type UpdateChannelParams = UpdateChannelMetadataParams | UpdateChannelAccessParams;
43
+ export interface RemoveChannelParams {
44
+ spaceId: string;
45
+ channelId: string;
46
+ }
47
+ export interface LegacyUpdateRoleParams {
48
+ spaceNetworkId: string;
49
+ roleId: number;
50
+ roleName: string;
51
+ permissions: Permission[];
52
+ users: string[];
53
+ ruleData: IRuleEntitlementBase.RuleDataStruct;
54
+ }
55
+ export interface UpdateRoleParams {
56
+ spaceNetworkId: string;
57
+ roleId: number;
58
+ roleName: string;
59
+ permissions: Permission[];
60
+ users: string[];
61
+ ruleData: IRuleEntitlementV2Base.RuleDataV2Struct;
62
+ }
63
+ export interface SetChannelPermissionOverridesParams {
64
+ spaceNetworkId: string;
65
+ channelId: string;
66
+ roleId: number;
67
+ permissions: Permission[];
68
+ }
69
+ export interface ClearChannelPermissionOverridesParams {
70
+ spaceNetworkId: string;
71
+ channelId: string;
72
+ roleId: number;
73
+ }
74
+ export interface TransactionOpts {
75
+ retryCount?: number;
76
+ }
77
+ type TransactionType = ContractTransaction;
78
+ export type ContractEventListener = {
79
+ wait: () => Promise<{
80
+ success: boolean;
81
+ error?: Error | undefined;
82
+ [x: string]: unknown;
83
+ }>;
84
+ };
85
+ export interface ISpaceDapp {
86
+ readonly provider: ethers.providers.Provider;
87
+ readonly config: BaseChainConfig;
88
+ readonly spaceRegistrar: SpaceRegistrar;
89
+ readonly walletLink: WalletLinkV3;
90
+ readonly pricingModules: PricingModules;
91
+ readonly platformRequirements: PlatformRequirements;
92
+ readonly airdrop: RiverAirdropDapp | undefined;
93
+ isLegacySpace: (spaceId: string) => Promise<boolean>;
94
+ addRoleToChannel: (spaceId: string, channelNetworkId: string, roleId: number, signer: SignerType) => Promise<TransactionType>;
95
+ banWalletAddress: (spaceId: string, walletAddress: string, signer: SignerType) => Promise<TransactionType>;
96
+ unbanWalletAddress: (spaceId: string, walletAddress: string, signer: SignerType) => Promise<TransactionType>;
97
+ walletAddressIsBanned: (spaceId: string, walletAddress: string) => Promise<boolean>;
98
+ bannedWalletAddresses: (spaceId: string) => Promise<string[]>;
99
+ createLegacySpace: (params: CreateLegacySpaceParams, signer: SignerType, txnOpts?: TransactionOpts) => Promise<TransactionType>;
100
+ createSpace: (params: CreateSpaceParams, signer: SignerType, txnOpts?: TransactionOpts) => Promise<TransactionType>;
101
+ createChannel: (spaceId: string, channelName: string, channelDescription: string, channelNetworkId: string, roleIds: number[], signer: SignerType, txnOpts?: TransactionOpts) => Promise<TransactionType>;
102
+ createChannelWithPermissionOverrides: (spaceId: string, channelName: string, channelDescription: string, channelNetworkId: string, roles: {
103
+ roleId: number;
104
+ permissions: Permission[];
105
+ }[], signer: SignerType, txnOpts?: TransactionOpts) => Promise<TransactionType>;
106
+ legacyCreateRole(spaceId: string, roleName: string, permissions: Permission[], users: string[], ruleData: IRuleEntitlementBase.RuleDataStruct, signer: SignerType, txnOpts?: TransactionOpts): Promise<TransactionType>;
107
+ createRole(spaceId: string, roleName: string, permissions: Permission[], users: string[], ruleData: IRuleEntitlementV2Base.RuleDataV2Struct, signer: SignerType, txnOpts?: TransactionOpts): Promise<TransactionType>;
108
+ waitForRoleCreated(spaceId: string, txn: ContractTransaction): Promise<{
109
+ roleId: number | undefined;
110
+ error: Error | undefined;
111
+ }>;
112
+ createLegacyUpdatedEntitlements(space: Space, params: LegacyUpdateRoleParams): Promise<IRolesBase.CreateEntitlementStruct[]>;
113
+ createUpdatedEntitlements(space: Space, params: UpdateRoleParams): Promise<IRolesBase.CreateEntitlementStruct[]>;
114
+ deleteRole(spaceId: string, roleId: number, signer: SignerType, txnOpts?: TransactionOpts): Promise<TransactionType>;
115
+ refreshMetadata(spaceId: string, signer: ethers.Signer, txnOpts?: TransactionOpts): Promise<ContractTransaction>;
116
+ encodedUpdateChannelData(space: Space, params: UpdateChannelParams): Promise<BytesLike[]>;
117
+ getChannels: (spaceId: string) => Promise<ChannelMetadata[]>;
118
+ getChannelDetails: (spaceId: string, channelId: string) => Promise<ChannelDetails | null>;
119
+ getPermissionsByRoleId: (spaceId: string, roleId: number) => Promise<Permission[]>;
120
+ getChannelPermissionOverrides(spaceId: string, roleId: number, channelId: string): Promise<Permission[]>;
121
+ getRole: (spaceId: string, roleId: number) => Promise<RoleDetails | null>;
122
+ getRoles: (spaceId: string) => Promise<BasicRoleInfo[]>;
123
+ getSpaceInfo: (spaceId: string) => Promise<SpaceInfo | undefined>;
124
+ isEntitledToSpace: (spaceId: string, user: string, permission: Permission) => Promise<boolean>;
125
+ isEntitledToChannel: (spaceId: string, channelId: string, user: string, permission: Permission, xchainConfig: XchainConfig) => Promise<boolean>;
126
+ getEntitledWalletForJoiningSpace: (spaceId: string, wallet: string, xchainConfig: XchainConfig) => Promise<string | undefined>;
127
+ parseAllContractErrors: (args: {
128
+ spaceId?: string;
129
+ error: unknown;
130
+ }) => Error;
131
+ parseSpaceFactoryError: (error: unknown) => Error;
132
+ parseSpaceError: (spaceId: string, error: unknown) => Error;
133
+ parseSpaceLogs: (spaceId: string, logs: ethers.providers.Log[]) => Promise<(ethers.utils.LogDescription | undefined)[]>;
134
+ updateChannel: (params: UpdateChannelParams, signer: SignerType, txnOpts?: TransactionOpts) => Promise<TransactionType>;
135
+ removeChannel: (params: RemoveChannelParams, signer: SignerType, txnOpts?: TransactionOpts) => Promise<TransactionType>;
136
+ legacyUpdateRole: (params: LegacyUpdateRoleParams, signer: SignerType, txnOpts?: TransactionOpts) => Promise<TransactionType>;
137
+ updateRole: (params: UpdateRoleParams, signer: SignerType, txnOpts?: TransactionOpts) => Promise<TransactionType>;
138
+ setChannelPermissionOverrides: (params: SetChannelPermissionOverridesParams, signer: SignerType, txnOpts?: TransactionOpts) => Promise<TransactionType>;
139
+ clearChannelPermissionOverrides: (params: ClearChannelPermissionOverridesParams, signer: SignerType, txnOpts?: TransactionOpts) => Promise<TransactionType>;
140
+ updateSpaceInfo: (spaceId: string, name: string, uri: string, shortDescription: string, longDescription: string, signer: SignerType, txnOpts?: TransactionOpts) => Promise<TransactionType>;
141
+ setSpaceAccess: (spaceId: string, disabled: boolean, signer: SignerType) => Promise<TransactionType>;
142
+ setChannelAccess: (spaceId: string, channelId: string, disabled: boolean, signer: SignerType) => Promise<TransactionType>;
143
+ getSpace(spaceId: string): Space | undefined;
144
+ getSpaceMembershipTokenAddress: (spaceId: string) => Promise<string>;
145
+ getJoinSpacePriceDetails: (spaceId: string) => Promise<{
146
+ price: ethers.BigNumber;
147
+ prepaidSupply: ethers.BigNumber;
148
+ remainingFreeSupply: ethers.BigNumber;
149
+ }>;
150
+ joinSpace: (spaceId: string, recipient: string, signer: SignerType) => Promise<{
151
+ issued: true;
152
+ tokenId: string;
153
+ } | {
154
+ issued: false;
155
+ tokenId: undefined;
156
+ }>;
157
+ hasSpaceMembership: (spaceId: string, wallet: string) => Promise<boolean>;
158
+ getMembershipSupply: (spaceId: string) => Promise<TotalSupplyInfo>;
159
+ getMembershipInfo: (spaceId: string) => Promise<MembershipInfo>;
160
+ getWalletLink: () => WalletLinkV3;
161
+ getSpaceAddress: (receipt: ContractReceipt, senderAddress: string) => string | undefined;
162
+ listPricingModules: () => Promise<PricingModuleStruct[]>;
163
+ setMembershipPrice: (spaceId: string, price: string, signer: SignerType) => Promise<TransactionType>;
164
+ setMembershipPricingModule: (spaceId: string, moduleId: string, signer: SignerType) => Promise<TransactionType>;
165
+ setMembershipLimit: (spaceId: string, limit: number, signer: SignerType) => Promise<TransactionType>;
166
+ prepayMembership: (spaceId: string, supply: number, signer: SignerType) => Promise<TransactionType>;
167
+ getPrepaidMembershipSupply: (spaceId: string) => Promise<BigNumber>;
168
+ setMembershipFreeAllocation: (spaceId: string, freeAllocation: number, signer: SignerType) => Promise<TransactionType>;
169
+ listenForMembershipEvent: (spaceId: string, receiver: string, abortController?: AbortController) => Promise<{
170
+ issued: true;
171
+ tokenId: string;
172
+ } | {
173
+ issued: false;
174
+ tokenId: undefined;
175
+ }>;
176
+ getMembershipFreeAllocation: (spaceId: string) => Promise<BigNumber>;
177
+ withdrawSpaceFunds: (spaceId: string, recipient: string, signer: SignerType) => Promise<TransactionType>;
178
+ tip: (args: {
179
+ spaceId: string;
180
+ tokenId: string;
181
+ currency: string;
182
+ amount: bigint;
183
+ messageId: string;
184
+ channelId: string;
185
+ receiver: string;
186
+ }, signer: SignerType) => Promise<TransactionType>;
187
+ getLinkedWallets: (wallet: string) => Promise<string[]>;
188
+ getLinkedWalletsWithDelegations: (wallet: string, config: XchainConfig) => Promise<string[]>;
189
+ getTokenIdOfOwner: (spaceId: string, owner: string, config: XchainConfig) => Promise<string | undefined>;
190
+ getTipEvent: (spaceId: string, receipt: ContractReceipt, senderAddress: string) => TipEventObject | undefined;
191
+ }
192
+ export {};
193
+ //# sourceMappingURL=ISpaceDapp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ISpaceDapp.d.ts","sourceRoot":"","sources":["../src/ISpaceDapp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ISpaceDapp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ISpaceDapp.js","sourceRoot":"","sources":["../src/ISpaceDapp.ts"],"names":[],"mappings":""}
@@ -0,0 +1,28 @@
1
+ import { Address } from './ContractTypes';
2
+ export interface BaseChainConfig {
3
+ chainId: number;
4
+ addresses: {
5
+ spaceFactory: Address;
6
+ spaceOwner: Address;
7
+ baseRegistry: Address;
8
+ riverAirdrop?: Address;
9
+ utils: {
10
+ mockNFT?: Address;
11
+ member?: Address;
12
+ };
13
+ };
14
+ executionClient?: 'geth_dev' | undefined;
15
+ }
16
+ export interface RiverChainConfig {
17
+ chainId: number;
18
+ addresses: {
19
+ riverRegistry: Address;
20
+ };
21
+ }
22
+ export interface Web3Deployment {
23
+ base: BaseChainConfig;
24
+ river: RiverChainConfig;
25
+ }
26
+ export declare function getWeb3Deployment(riverEnv: string): Web3Deployment;
27
+ export declare function getWeb3Deployments(): string[];
28
+ //# sourceMappingURL=IStaticContractsInfo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IStaticContractsInfo.d.ts","sourceRoot":"","sources":["../src/IStaticContractsInfo.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAEzC,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE;QACP,YAAY,EAAE,OAAO,CAAA;QACrB,UAAU,EAAE,OAAO,CAAA;QACnB,YAAY,EAAE,OAAO,CAAA;QACrB,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,KAAK,EAAE;YACH,OAAO,CAAC,EAAE,OAAO,CAAA;YACjB,MAAM,CAAC,EAAE,OAAO,CAAA;SACnB,CAAA;KACJ,CAAA;IACD,eAAe,CAAC,EAAE,UAAU,GAAG,SAAS,CAAA;CAC3C;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE;QACP,aAAa,EAAE,OAAO,CAAA;KACzB,CAAA;CACJ;AAED,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,eAAe,CAAA;IACrB,KAAK,EAAE,gBAAgB,CAAA;CAC1B;AACD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAWlE;AAED,wBAAgB,kBAAkB,aAEjC"}
@@ -0,0 +1,13 @@
1
+ import DeploymentsJson from '@towns-protocol/generated/config/deployments.json' assert { type: 'json' };
2
+ export function getWeb3Deployment(riverEnv) {
3
+ // Cast to unknown first to avoid TypeScript error about property compatibility
4
+ const deployments = DeploymentsJson;
5
+ if (!deployments[riverEnv]) {
6
+ throw new Error(`Deployment ${riverEnv} not found, available environments: ${Object.keys(DeploymentsJson).join(', ')}`);
7
+ }
8
+ return deployments[riverEnv];
9
+ }
10
+ export function getWeb3Deployments() {
11
+ return Object.keys(DeploymentsJson);
12
+ }
13
+ //# sourceMappingURL=IStaticContractsInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IStaticContractsInfo.js","sourceRoot":"","sources":["../src/IStaticContractsInfo.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mDAAmD,CAAC,SAAS,IAAI,EAAE,MAAM,EAAE,CAAA;AA8BvG,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAC9C,+EAA+E;IAC/E,MAAM,WAAW,GAAG,eAA4D,CAAA;IAChF,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACX,cAAc,QAAQ,uCAAuC,MAAM,CAAC,IAAI,CACpE,eAAe,CAClB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACjB,CAAA;IACL,CAAC;IACD,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,kBAAkB;IAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;AACvC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { ethers } from 'ethers';
2
+ import { BaseChainConfig } from './IStaticContractsInfo';
3
+ export declare class LocalhostWeb3Provider extends ethers.providers.JsonRpcProvider {
4
+ wallet: ethers.Wallet;
5
+ get isMetaMask(): boolean;
6
+ get signer(): ethers.Signer;
7
+ constructor(rpcUrl: string, wallet?: ethers.Wallet);
8
+ fundWallet(walletToFund?: ethers.Wallet | string): Promise<boolean>;
9
+ mintMockNFT(config: BaseChainConfig): Promise<ethers.ContractTransaction>;
10
+ request({ method, params, }: {
11
+ method: string;
12
+ params?: unknown[];
13
+ }): Promise<any>;
14
+ }
15
+ //# sourceMappingURL=LocalhostWeb3Provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalhostWeb3Provider.d.ts","sourceRoot":"","sources":["../src/LocalhostWeb3Provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAMxD,qBAAa,qBAAsB,SAAQ,MAAM,CAAC,SAAS,CAAC,eAAe;IAEhE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAA;IAE5B,IAAW,UAAU,YAEpB;IAED,IAAW,MAAM,IAAI,MAAM,CAAC,MAAM,CAEjC;gBAEW,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM;IAMrC,UAAU,CAAC,YAAY,GAAE,MAAM,CAAC,MAAM,GAAG,MAAoB;IAY7D,WAAW,CAAC,MAAM,EAAE,eAAe;IAInC,OAAO,CAAC,EACjB,MAAM,EACN,MAAwB,GAC3B,EAAE;QACC,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KACrB;CAqBJ"}