@etherisc/gif-next 0.0.2-8d47fa1-080 → 0.0.2-8dd2f76-992

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 (482) hide show
  1. package/README.md +178 -14
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +842 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1048 -164
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +605 -0
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +658 -32
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +725 -135
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +508 -51
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +1047 -273
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +809 -144
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  19. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  23. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +190 -0
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1373 -1178
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +633 -0
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +2059 -1349
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1330 -0
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1289 -0
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1179 -0
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +741 -0
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +256 -0
  40. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +607 -0
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  44. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +67 -245
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  48. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  49. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  50. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
  51. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  53. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IComponents.sol/IComponents.json} +2 -2
  55. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  56. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  57. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  58. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  59. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  60. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  61. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  62. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  63. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  64. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  65. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  66. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1039 -0
  67. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +673 -0
  69. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1231 -0
  71. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +721 -0
  73. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +817 -0
  75. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +641 -0
  77. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1528 -256
  79. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  80. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +805 -0
  81. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  82. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +622 -0
  83. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  84. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +659 -0
  85. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IClaimService.sol/IClaimService.json} +272 -186
  87. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +850 -129
  89. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  90. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +606 -0
  91. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +499 -139
  93. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +119 -343
  95. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  96. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1092 -0
  97. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +697 -0
  99. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +753 -165
  101. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +661 -0
  103. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +375 -499
  105. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +653 -0
  107. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +60 -2
  109. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +250 -65
  111. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +378 -180
  113. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  114. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  115. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  116. package/artifacts/contracts/registry/Registry.sol/Registry.json +229 -206
  117. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  119. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +507 -210
  121. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +670 -0
  123. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
  125. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  127. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  128. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  129. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  131. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  132. package/artifacts/contracts/{instance/module/component/ComponentModule.sol/ComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +71 -50
  133. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  134. package/artifacts/contracts/{instance/module/component/IComponent.sol/IComponentModule.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +69 -57
  135. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +72 -8
  137. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  138. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  139. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  140. package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +146 -155
  141. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  142. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  143. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  144. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +251 -0
  145. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  146. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  147. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  148. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +355 -83
  149. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  150. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +204 -12
  151. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  152. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  153. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  154. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/Service.sol/Service.json} +231 -191
  155. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  156. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  157. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  158. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  159. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  160. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  161. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  163. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +204 -12
  165. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  166. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  167. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  168. package/artifacts/contracts/test/TestService.sol/TestService.json +287 -163
  169. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  170. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  171. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  172. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  173. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  174. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -174
  175. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  176. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  177. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  178. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  179. package/artifacts/contracts/types/Amount.sol/AmountLib.json +161 -0
  180. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  182. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  184. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  185. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  186. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  187. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Fee.sol/FeeLib.json +42 -11
  189. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  190. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  191. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  193. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  194. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  195. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  196. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  197. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  198. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  199. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  200. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  201. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  202. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +142 -0
  203. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  204. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  205. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  206. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  207. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  208. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  209. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  210. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  211. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  212. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  213. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  214. package/artifacts/contracts/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
  215. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  216. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  217. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  218. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  219. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  220. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  221. package/contracts/components/Component.sol +253 -0
  222. package/contracts/components/Distribution.sol +204 -79
  223. package/contracts/components/IComponent.sol +76 -0
  224. package/contracts/components/IDistributionComponent.sol +43 -19
  225. package/contracts/components/IPoolComponent.sol +88 -40
  226. package/contracts/components/IProductComponent.sol +11 -10
  227. package/contracts/components/Pool.sol +222 -165
  228. package/contracts/components/Product.sol +137 -143
  229. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  230. package/contracts/instance/BundleManager.sol +127 -0
  231. package/contracts/instance/Cloneable.sol +51 -0
  232. package/contracts/instance/IInstance.sol +86 -42
  233. package/contracts/instance/IInstanceService.sol +72 -0
  234. package/contracts/instance/Instance.sol +310 -68
  235. package/contracts/instance/InstanceAccessManager.sol +527 -0
  236. package/contracts/instance/InstanceReader.sol +291 -0
  237. package/contracts/instance/InstanceService.sol +495 -0
  238. package/contracts/instance/InstanceServiceManager.sol +54 -0
  239. package/contracts/instance/ObjectManager.sol +82 -0
  240. package/contracts/instance/base/ComponentService.sol +121 -0
  241. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  242. package/contracts/instance/base/ILifecycle.sol +3 -3
  243. package/contracts/instance/base/KeyValueStore.sol +60 -41
  244. package/contracts/instance/base/Lifecycle.sol +12 -3
  245. package/contracts/instance/module/IAccess.sol +54 -0
  246. package/contracts/instance/module/IBundle.sol +23 -0
  247. package/contracts/instance/module/IComponents.sol +41 -0
  248. package/contracts/instance/module/IDistribution.sol +41 -0
  249. package/contracts/instance/module/IPolicy.sol +72 -0
  250. package/contracts/instance/module/IRisk.sol +11 -0
  251. package/contracts/instance/module/ISetup.sol +33 -0
  252. package/contracts/instance/module/ITreasury.sol +23 -0
  253. package/contracts/instance/service/ApplicationService.sol +350 -0
  254. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  255. package/contracts/instance/service/BundleService.sol +431 -0
  256. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  257. package/contracts/instance/service/ClaimService.sol +151 -0
  258. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  259. package/contracts/instance/service/DistributionService.sol +403 -22
  260. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  261. package/contracts/instance/service/IApplicationService.sol +82 -0
  262. package/contracts/instance/service/IBundleService.sol +93 -0
  263. package/contracts/instance/service/IClaimService.sol +61 -0
  264. package/contracts/instance/service/IDistributionService.sol +88 -1
  265. package/contracts/instance/service/IPolicyService.sol +72 -0
  266. package/contracts/instance/service/IPoolService.sol +80 -18
  267. package/contracts/instance/service/IProductService.sol +9 -76
  268. package/contracts/instance/service/PolicyService.sol +362 -0
  269. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  270. package/contracts/instance/service/PoolService.sol +248 -94
  271. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  272. package/contracts/instance/service/ProductService.sol +135 -434
  273. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  274. package/contracts/registry/ChainNft.sol +49 -26
  275. package/contracts/registry/IRegistry.sol +57 -31
  276. package/contracts/registry/IRegistryService.sol +55 -16
  277. package/contracts/registry/ITransferInterceptor.sol +1 -0
  278. package/contracts/registry/Registry.sol +286 -324
  279. package/contracts/registry/RegistryAccessManager.sol +216 -0
  280. package/contracts/registry/RegistryService.sol +159 -260
  281. package/contracts/registry/RegistryServiceManager.sol +62 -0
  282. package/contracts/registry/ReleaseManager.sol +324 -0
  283. package/contracts/registry/TokenRegistry.sol +116 -0
  284. package/contracts/shared/ContractDeployerLib.sol +72 -0
  285. package/contracts/shared/ERC165.sol +15 -9
  286. package/contracts/shared/INftOwnable.sol +23 -0
  287. package/contracts/shared/IPolicyHolder.sol +26 -0
  288. package/contracts/shared/IRegisterable.sol +5 -12
  289. package/contracts/shared/IRegistryLinked.sol +12 -0
  290. package/contracts/shared/IService.sol +16 -0
  291. package/contracts/shared/IVersionable.sol +4 -47
  292. package/contracts/shared/NftOwnable.sol +120 -0
  293. package/contracts/shared/PolicyHolder.sol +81 -0
  294. package/contracts/shared/ProxyManager.sol +112 -58
  295. package/contracts/shared/Registerable.sol +23 -66
  296. package/contracts/shared/RegistryLinked.sol +48 -0
  297. package/contracts/shared/Service.sol +72 -0
  298. package/contracts/shared/TokenHandler.sol +33 -0
  299. package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
  300. package/contracts/shared/Versionable.sol +5 -93
  301. package/contracts/test/TestFee.sol +2 -2
  302. package/contracts/test/TestRegisterable.sol +1 -1
  303. package/contracts/test/TestRoleId.sol +1 -1
  304. package/contracts/test/TestService.sol +6 -7
  305. package/contracts/types/Amount.sol +60 -0
  306. package/contracts/types/Blocknumber.sol +1 -0
  307. package/contracts/types/ClaimId.sol +52 -0
  308. package/contracts/types/DistributorType.sol +55 -0
  309. package/contracts/types/Fee.sol +15 -7
  310. package/contracts/types/Key32.sol +8 -3
  311. package/contracts/types/NftId.sol +8 -0
  312. package/contracts/types/NftIdSet.sol +26 -24
  313. package/contracts/types/NumberId.sol +52 -0
  314. package/contracts/types/ObjectType.sol +40 -14
  315. package/contracts/types/PayoutId.sol +54 -0
  316. package/contracts/types/Referral.sol +89 -0
  317. package/contracts/types/RoleId.sol +68 -9
  318. package/contracts/types/Seconds.sol +54 -0
  319. package/contracts/types/StateId.sol +6 -1
  320. package/contracts/types/Timestamp.sol +17 -13
  321. package/contracts/types/UFixed.sol +129 -12
  322. package/contracts/types/Version.sol +5 -1
  323. package/package.json +6 -5
  324. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  325. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -213
  326. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  327. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -177
  328. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  329. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  330. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  331. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  332. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  334. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  335. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  336. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  337. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  338. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  340. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  342. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  343. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  344. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  345. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  346. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  347. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  348. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  349. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  350. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  351. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  352. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  353. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  354. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  355. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  356. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  357. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  358. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  359. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  360. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  361. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  362. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  363. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -393
  364. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  365. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  366. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  367. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  368. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  369. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  370. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -380
  371. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  372. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  373. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  374. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  375. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  376. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  377. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  378. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  379. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  380. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  381. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  382. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  383. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  384. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  385. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  386. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  387. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  388. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  389. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  390. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  391. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  392. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  393. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  394. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  395. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  396. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  397. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  398. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
  399. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  400. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
  401. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  402. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  403. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  404. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  405. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  406. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  407. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  408. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
  409. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  410. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  411. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  412. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
  413. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  414. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -690
  415. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  416. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  417. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  418. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  419. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  420. package/artifacts/contracts/registry/RegistryInstaller.sol/RegistryInstaller.dbg.json +0 -4
  421. package/artifacts/contracts/registry/RegistryInstaller.sol/RegistryInstaller.json +0 -344
  422. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  423. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  424. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  425. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -445
  426. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  427. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -602
  428. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  429. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -632
  430. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  431. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  432. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  433. package/contracts/components/BaseComponent.sol +0 -79
  434. package/contracts/components/IBaseComponent.sol +0 -19
  435. package/contracts/experiment/errors/Require.sol +0 -38
  436. package/contracts/experiment/errors/Revert.sol +0 -44
  437. package/contracts/experiment/inheritance/A.sol +0 -53
  438. package/contracts/experiment/inheritance/B.sol +0 -28
  439. package/contracts/experiment/inheritance/C.sol +0 -34
  440. package/contracts/experiment/inheritance/IA.sol +0 -13
  441. package/contracts/experiment/inheritance/IB.sol +0 -10
  442. package/contracts/experiment/inheritance/IC.sol +0 -12
  443. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  444. package/contracts/experiment/statemachine/ISM.sol +0 -25
  445. package/contracts/experiment/statemachine/SM.sol +0 -57
  446. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  447. package/contracts/experiment/types/TypeA.sol +0 -47
  448. package/contracts/experiment/types/TypeB.sol +0 -29
  449. package/contracts/instance/IInstanceLinked.sol +0 -8
  450. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  451. package/contracts/instance/base/IInstanceBase.sol +0 -23
  452. package/contracts/instance/base/IService.sol +0 -15
  453. package/contracts/instance/base/InstanceBase.sol +0 -89
  454. package/contracts/instance/base/ModuleBase.sol +0 -57
  455. package/contracts/instance/base/ServiceBase.sol +0 -43
  456. package/contracts/instance/module/access/Access.sol +0 -149
  457. package/contracts/instance/module/access/IAccess.sol +0 -53
  458. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  459. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  460. package/contracts/instance/module/component/ComponentModule.sol +0 -71
  461. package/contracts/instance/module/component/IComponent.sol +0 -28
  462. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  463. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  464. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  465. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  466. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  467. package/contracts/instance/module/pool/PoolModule.sol +0 -95
  468. package/contracts/instance/module/risk/IRisk.sol +0 -26
  469. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  470. package/contracts/instance/module/treasury/ITreasury.sol +0 -84
  471. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  472. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
  473. package/contracts/instance/service/ComponentOwnerService.sol +0 -272
  474. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  475. package/contracts/registry/IChainNft.sol +0 -22
  476. package/contracts/registry/IRegistryLinked.sol +0 -8
  477. package/contracts/registry/RegistryInstaller.sol +0 -100
  478. package/contracts/shared/IOwnable.sol +0 -6
  479. package/contracts/test/TestDistribution.sol +0 -22
  480. package/contracts/test/TestPool.sol +0 -27
  481. package/contracts/test/TestProduct.sol +0 -74
  482. package/contracts/types/ReferralId.sol +0 -48
@@ -1,16 +1,14 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC20Metadata} from "@openzeppelin5/contracts/token/ERC20/extensions/IERC20Metadata.sol";
4
+ import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
5
+ // import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
6
 
6
- import {IRegistry} from "../registry/IRegistry.sol";
7
+ import {IRegistry} from "./IRegistry.sol";
7
8
  import {IInstance} from "../instance/IInstance.sol";
8
9
 
9
- //import {ITreasury, ITreasuryModule} from "../../contracts/instance/module/treasury/ITreasury.sol";
10
- //import {TreasuryModule} from "../../contracts/instance/module/treasury/TreasuryModule.sol";
11
- import {IComponent, IComponentModule} from "../../contracts/instance/module/component/IComponent.sol";
12
- import {IPool} from "../../contracts/instance/module/pool/IPoolModule.sol";
13
- import {IBaseComponent} from "../../contracts/components/IBaseComponent.sol";
10
+ import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
11
+ import {IComponent} from "../../contracts/components/IComponent.sol";
14
12
  import {IPoolComponent} from "../../contracts/components/IPoolComponent.sol";
15
13
  import {IProductComponent} from "../../contracts/components/IProductComponent.sol";
16
14
  import {IDistributionComponent} from "../../contracts/components/IDistributionComponent.sol";
@@ -18,366 +16,267 @@ import {IDistributionComponent} from "../../contracts/components/IDistributionCo
18
16
  import {IVersionable} from "../../contracts/shared/IVersionable.sol";
19
17
  import {Versionable} from "../../contracts/shared/Versionable.sol";
20
18
  import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
19
+ import {Registerable} from "../../contracts/shared/Registerable.sol";
21
20
 
22
21
  import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/types/RoleId.sol";
23
- import {ObjectType, REGISTRY, TOKEN, SERVICE, PRODUCT, ORACLE, POOL, TOKEN, INSTANCE, DISTRIBUTION, POLICY, BUNDLE} from "../../contracts/types/ObjectType.sol";
22
+ import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE} from "../../contracts/types/ObjectType.sol";
24
23
  import {StateId, ACTIVE, PAUSED} from "../../contracts/types/StateId.sol";
25
24
  import {NftId, NftIdLib, zeroNftId} from "../../contracts/types/NftId.sol";
26
25
  import {Fee, FeeLib} from "../../contracts/types/Fee.sol";
27
26
  import {Version, VersionPart, VersionLib} from "../../contracts/types/Version.sol";
28
- //import {UFixed, UFixedMathLib} from "../../contracts/types/UFixed.sol";
29
27
 
30
-
31
- import {ServiceBase} from "../../contracts/instance/base/ServiceBase.sol";
32
- import {IService} from "../../contracts/instance/base/IService.sol";
28
+ import {Service} from "../shared/Service.sol";
29
+ import {IService} from "../shared/IService.sol";
33
30
  import {IRegistryService} from "./IRegistryService.sol";
34
- import {Registry} from "../registry/Registry.sol";
31
+ import {Registry} from "./Registry.sol";
35
32
 
36
33
  contract RegistryService is
37
- ServiceBase,
34
+ Service,
38
35
  IRegistryService
39
36
  {
40
37
  using NftIdLib for NftId;
41
38
 
42
- error NotRegistryOwner();
43
- error MissingAllowance();
39
+ // TODO update to real hash when registry is stable
40
+ bytes32 public constant REGISTRY_CREATION_CODE_HASH = bytes32(0);
44
41
 
45
- error NotToken();
46
- error NotService();
47
- error NotComponent();
48
- error NotInstance();
42
+ // From IService
43
+ function getDomain() public pure override returns(ObjectType serviceDomain) {
44
+ return REGISTRY();
45
+ }
49
46
 
50
- error InvalidAddress(address registerableAddress);
51
- error InvalidInitialOwner(address initialOwner);
52
- error SelfRegistration();
53
- error InvalidType(ObjectType objectType);
47
+ // from Versionable
54
48
 
55
- string public constant NAME = "RegistryService";
49
+ /// @dev top level initializer
50
+ function _initialize(
51
+ address owner,
52
+ bytes memory data
53
+ )
54
+ internal
55
+ virtual override
56
+ initializer()
57
+ {
58
+ (
59
+ address registryAddress,
60
+ address initialAuthority
61
+ ) = abi.decode(data, (address, address));
56
62
 
57
- bytes32 public constant REGISTRY_CREATIONCODE_HASH = 0x7e569c7200a12c63728b648d78f84be7e32ef6804f9ee723e15363ce34d01251;
63
+ initializeService(registryAddress, initialAuthority, owner);
58
64
 
59
- address constant public NFT_LOCK_ADDRESS = address(0x1);
65
+ registerInterface(type(IRegistryService).interfaceId);
66
+ }
60
67
 
61
- /// @dev
62
- // msg.sender - ONLY registry owner
63
- // CAN register ANY non IRegisterable address
64
- // CAN register ONLY valid object-parent types combinations for TOKEN
65
- // CAN NOT register itself
66
- // IMPORTANT: MUST NOT call untrusted contract inbetween calls to registry/instance (trusted contracts)
67
- // motivation: registry/instance state may change during external call
68
- // TODO it may be usefull to have transferable token nft in order to delist token, make it invalid for new beginings
69
- // TODO: MUST prohibit registration of precompiles addresses
70
- function registerToken(address tokenAddress)
71
- external
72
- returns(NftId nftId)
68
+ function registerInstance(IRegisterable instance, address owner)
69
+ external
70
+ restricted
71
+ returns(
72
+ IRegistry.ObjectInfo memory info
73
+ )
73
74
  {
74
- IRegisterable registerable = IRegisterable(tokenAddress);
75
- bool isRegisterable;
76
-
77
- // registryOwner can not register IRegisterable as TOKEN
78
- try registerable.supportsInterface(type(IRegisterable).interfaceId) returns(bool result) {
79
- isRegisterable = result;
80
- } catch {
81
- isRegisterable = false;
75
+ if(!instance.supportsInterface(type(IInstance).interfaceId)) {
76
+ revert NotInstance();
82
77
  }
83
78
 
84
- if(isRegisterable) {
85
- revert NotToken();
86
- }
87
-
88
- IRegistry registry = getRegistry();
89
-
90
- if(msg.sender != registry.ownerOf(address(registry))) {
91
- revert NotRegistryOwner();
92
- }
79
+ info = _getAndVerifyContractInfo(instance, INSTANCE(), owner);
80
+ info.nftId = getRegistry().register(info);
93
81
 
94
- IRegistry.ObjectInfo memory info = IRegistry.ObjectInfo(
95
- zeroNftId(), // any value
96
- registry.getNftId(address(registry)),
97
- TOKEN(),
98
- false, // isInterceptor
99
- tokenAddress,
100
- NFT_LOCK_ADDRESS,
101
- "" // any value
102
- );
103
-
104
- nftId = registry.register(info);
82
+ instance.linkToRegisteredNftId(); // asume safe
105
83
  }
106
84
 
107
- /// @dev
108
- // msg.sender - ONLY registry owner
109
- // CAN register ONLY valid object-parent types combinations for SERVICE
110
- // CAN register ONLY IRegisterable address he owns
111
- // CAN NOT register itself
112
- // IMPORTANT: MUST NOT check owner before calling external contract
113
- function registerService(IService service)
85
+ function registerProduct(IComponent product, address owner)
114
86
  external
87
+ restricted
115
88
  returns(
116
- IRegistry.ObjectInfo memory info,
117
- bytes memory data
89
+ IRegistry.ObjectInfo memory info
118
90
  )
119
91
  {
120
- if(service.supportsInterface(type(IService).interfaceId) == false) {
121
- revert NotService();
122
- }
123
-
124
- (
125
- info,
126
- data
127
- ) = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
128
-
129
- IRegistry registry = getRegistry();
130
-
131
- if(msg.sender != registry.ownerOf(address(registry))) {
132
- revert NotRegistryOwner();
92
+ // CAN revert if no ERC165 support -> will revert with empty message
93
+ if(!product.supportsInterface(type(IProductComponent).interfaceId)) {
94
+ revert NotProduct();
133
95
  }
134
96
 
135
- info.initialOwner = NFT_LOCK_ADDRESS;//registry.getLockAddress();
136
- info.nftId = registry.register(info);
137
-
138
- return (
139
- info,
140
- data
141
- );
97
+ info = _getAndVerifyContractInfo(product, PRODUCT(), owner);
98
+ info.nftId = getRegistry().register(info);
142
99
  }
143
100
 
144
- // anybody can register component if instance gives a corresponding role
145
- //function registerComponent(IBaseComponent component, ObjectType componentType)
146
- function registerComponent(IBaseComponent component, ObjectType componentType, address owner)
101
+ function registerPool(IComponent pool, address owner)
147
102
  external
103
+ restricted
148
104
  returns(
149
- IRegistry.ObjectInfo memory info,
150
- bytes memory data
105
+ IRegistry.ObjectInfo memory info
151
106
  )
152
107
  {
153
- if(component.supportsInterface(type(IBaseComponent).interfaceId) == false) {
154
- revert NotComponent();
108
+ if(!pool.supportsInterface(type(IPoolComponent).interfaceId)) {
109
+ revert NotPool();
155
110
  }
156
111
 
157
- (
158
- info,
159
- data
160
- ) = _getAndVerifyContractInfo(component, componentType, owner);
161
-
162
- IRegistry registry = getRegistry();
163
- NftId serviceNftId = registry.getNftId(msg.sender);
164
-
165
- if(registry.allowance(serviceNftId, componentType) == false) {
166
- revert MissingAllowance();
167
- }
168
-
169
- info.nftId = registry.register(info);
170
-
171
- return (
172
- info,
173
- data
174
- );
112
+ info = _getAndVerifyContractInfo(pool, POOL(), owner);
113
+ info.nftId = getRegistry().register(info);
175
114
  }
176
115
 
177
- // TODO: when called by approved service: add owner arg (service must pass it's msg.sender as owner) & check service allowance
178
- //function registerInstance(IRegisterable instance, address owner)
179
- function registerInstance(IRegisterable instance)
180
- external
116
+ function registerDistribution(IComponent distribution, address owner)
117
+ external
118
+ restricted
181
119
  returns(
182
- IRegistry.ObjectInfo memory info,
183
- bytes memory data
120
+ IRegistry.ObjectInfo memory info
184
121
  )
185
122
  {
186
- if(instance.supportsInterface(type(IInstance).interfaceId) == false) {
187
- revert NotInstance();
123
+ if(!distribution.supportsInterface(type(IDistributionComponent).interfaceId)) {
124
+ revert NotDistribution();
188
125
  }
189
126
 
190
- (
191
- info,
192
- data
193
- ) = _getAndVerifyContractInfo(instance, INSTANCE(), msg.sender);// owner);
194
-
195
- IRegistry registry = getRegistry();
196
-
197
- //if(registry.allowance(registry.getNftId(msg.sender), INSTANCE()) == false) {
198
- // revert MissingAllowance();
199
- //}
127
+ info = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
128
+ info.nftId = getRegistry().register(info);
129
+ }
200
130
 
201
- info.nftId = registry.register(info);
202
-
203
- return (
204
- info,
205
- data
206
- );
131
+ function registerDistributor(IRegistry.ObjectInfo memory info)
132
+ external
133
+ restricted
134
+ returns(NftId nftId)
135
+ {
136
+ _verifyObjectInfo(info, DISTRIBUTOR());
137
+ nftId = getRegistry().register(info);
207
138
  }
208
139
 
209
140
  function registerPolicy(IRegistry.ObjectInfo memory info)
210
- external
141
+ external
142
+ restricted
211
143
  returns(NftId nftId)
212
144
  {
213
- IRegistry registry = getRegistry();
214
- NftId senderNftId = registry.getNftId(msg.sender);
215
-
216
- if(registry.allowance(senderNftId, POLICY()) == false) {
217
- revert MissingAllowance();
218
- }
219
-
220
145
  _verifyObjectInfo(info, POLICY());
221
146
 
222
- nftId = registry.register(info);
147
+ nftId = getRegistry().register(info);
223
148
  }
224
149
 
225
150
  function registerBundle(IRegistry.ObjectInfo memory info)
226
- external
151
+ external
152
+ restricted
227
153
  returns(NftId nftId)
228
154
  {
229
- IRegistry registry = getRegistry();
230
- NftId senderNftId = registry.getNftId(msg.sender);
231
-
232
- if(registry.allowance(senderNftId, BUNDLE()) == false) {
233
- revert MissingAllowance();
234
- }
235
-
236
155
  _verifyObjectInfo(info, BUNDLE());
237
156
 
238
- nftId = registry.register(info);
157
+ nftId = getRegistry().register(info);
239
158
  }
240
159
 
160
+ function registerStake(IRegistry.ObjectInfo memory info)
161
+ external
162
+ restricted
163
+ returns(NftId nftId)
164
+ {
165
+ _verifyObjectInfo(info, STAKE());
241
166
 
242
- // From IService
243
- function getName() public pure override(IService, ServiceBase) returns(string memory) {
244
- return NAME;
167
+ nftId = getRegistry().register(info);
245
168
  }
246
169
 
170
+ // from IRegisterable
247
171
 
248
- // from Versionable
249
-
250
- /// @dev top level initializer
251
- // 1) registry is non upgradeable -> don't need a proxy and uses constructor !
252
- // 2) deploy registry service first -> from its initialization func it is easier to deploy registry then vice versa
253
- // 3) deploy registry -> pass registry service address as constructor argument
254
- // registry is getting instantiated and locked to registry service address forever
255
- function _initialize(address protocolOwner, bytes memory registryCreationCode)
256
- internal
257
- initializer
258
- virtual override
172
+ function getFunctionConfigs()
173
+ external
174
+ pure
175
+ returns(
176
+ FunctionConfig[] memory config
177
+ )
259
178
  {
260
- // TODO check when stable
261
- //require(keccak256(registryCreationCode) == REGISTRY_CREATIONCODE_HASH, "INVALID_REGISTRY_CREATIONCODE");
179
+ config = new FunctionConfig[](8);
262
180
 
263
- bytes memory bytecode = abi.encodePacked(
264
- registryCreationCode,
265
- abi.encode(
266
- protocolOwner,
267
- getMajorVersion()
268
- )
269
- );
181
+ // order of service registrations MUST be reverse to this array
182
+ /*config[-1].serviceDomain = STAKE();
183
+ config[-1].selector = RegistryService.registerStake.selector;*/
270
184
 
271
- address registryAddress;
185
+ config[0].serviceDomain = POLICY();
186
+ config[0].selectors = new bytes4[](0);
272
187
 
273
- assembly {
274
- registryAddress := create(0, add(bytecode, 0x20), mload(bytecode))
188
+ config[1].serviceDomain = APPLICATION();
189
+ config[1].selectors = new bytes4[](1);
190
+ config[1].selectors[0] = RegistryService.registerPolicy.selector;
275
191
 
276
- if iszero(extcodesize(registryAddress)) {
277
- revert(0, 0)
278
- }
279
- }
192
+ config[2].serviceDomain = CLAIM();
193
+ config[2].selectors = new bytes4[](0);
194
+
195
+ config[3].serviceDomain = PRODUCT();
196
+ config[3].selectors = new bytes4[](1);
197
+ config[3].selectors[0] = RegistryService.registerProduct.selector;
198
+
199
+ config[4].serviceDomain = POOL();
200
+ config[4].selectors = new bytes4[](1);
201
+ config[4].selectors[0] = RegistryService.registerPool.selector;
280
202
 
281
- IRegistry registry = IRegistry(registryAddress);
282
- NftId registryNftId = registry.getNftId(registryAddress);
203
+ // registration of bundle service must preceed registration of pool service
204
+ config[5].serviceDomain = BUNDLE();
205
+ config[5].selectors = new bytes4[](1);
206
+ config[5].selectors[0] = RegistryService.registerBundle.selector;
283
207
 
284
- _initializeServiceBase(registryAddress, registryNftId, protocolOwner);
208
+ config[6].serviceDomain = DISTRIBUTION();
209
+ config[6].selectors = new bytes4[](2);
210
+ config[6].selectors[0] = RegistryService.registerDistribution.selector;
211
+ config[6].selectors[1] = RegistryService.registerDistributor.selector;
285
212
 
286
- _registerInterface(type(IRegistryService).interfaceId);
213
+ // registerInstance() have no restriction
214
+ config[7].serviceDomain = INSTANCE();
215
+ config[7].selectors = new bytes4[](1);
216
+ config[7].selectors[0] = RegistryService.registerInstance.selector;
287
217
  }
288
218
 
289
- // parent check done in registry because of approve()
219
+ // Internal
220
+
290
221
  function _getAndVerifyContractInfo(
291
222
  IRegisterable registerable,
292
- ObjectType objectType,
293
- address owner
223
+ ObjectType expectedType, // assume can be valid only
224
+ address expectedOwner // assume can be 0 when given by other service
294
225
  )
295
226
  internal
227
+ // view
296
228
  returns(
297
- IRegistry.ObjectInfo memory info,
298
- bytes memory data
229
+ IRegistry.ObjectInfo memory info
299
230
  )
300
231
  {
301
- (
302
- info,
303
- data
304
- ) = registerable.getInitialInfo();
232
+ info = registerable.getInitialInfo();
233
+ info.objectAddress = address(registerable);
305
234
 
306
- if(info.objectAddress != address(registerable)) {
307
- revert InvalidAddress(info.objectAddress);
235
+ if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
236
+ revert UnexpectedRegisterableType(expectedType, info.objectType);
308
237
  }
309
238
 
310
- if(
311
- getRegistry().isRegistered(owner) ||
312
- info.initialOwner != owner) { // contract owner protection
313
- revert InvalidInitialOwner(info.initialOwner);
239
+ address owner = info.initialOwner;
240
+
241
+ if(owner != expectedOwner) { // registerable owner protection
242
+ revert NotRegisterableOwner(expectedOwner);
314
243
  }
315
244
 
316
- if(msg.sender == address(registerable)) {
245
+ if(owner == address(registerable)) {
317
246
  revert SelfRegistration();
318
247
  }
248
+
249
+ if(owner == address(0)) {
250
+ revert RegisterableOwnerIsZero();
251
+ }
319
252
 
320
- if(info.objectType != objectType) {
321
- revert InvalidType(info.objectType);
253
+ if(getRegistry().isRegistered(owner)) {
254
+ revert RegisterableOwnerIsRegistered();
322
255
  }
323
-
324
- /*NftId parentNftId = info.parentNftId;
325
- IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
326
-
327
- if(parentInfo.objectType != parentType) { // parent registration + type
328
- revert InvalidParent(parentNftId);
329
- }*/
330
-
331
- return(
332
- info,
333
- data
334
- );
335
256
  }
336
257
 
337
- // parent checks done in registry because of approve()
338
258
  function _verifyObjectInfo(
339
259
  IRegistry.ObjectInfo memory info,
340
- ObjectType objectType
260
+ ObjectType expectedType
341
261
  )
342
262
  internal
343
263
  view
344
264
  {
345
- if(info.objectAddress > address(0)) {
346
- revert InvalidAddress(info.objectAddress);
347
- }
265
+ // enforce instead of check
266
+ info.objectAddress = address(0);
348
267
 
349
- if(
350
- getRegistry().isRegistered(info.initialOwner) ||
351
- info.initialOwner == address(0)) {
352
- // TODO non registered address can register object(e.g. POLICY()) and then transfer associated nft to registered contract
353
- // what are motivations to do so?
354
- // at least registered contract can not register objects by itself, SERVICE,
355
- revert InvalidInitialOwner(info.initialOwner);
268
+ if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
269
+ revert UnexpectedRegisterableType(expectedType, info.objectType);
356
270
  }
357
271
 
358
- // can catch all 3 if check that initialOwner is not registered
359
- /*if(info.initialOwner == msg.sender) {
360
- revert InitialOwnerIsParent();
361
- }
272
+ address owner = info.initialOwner;
362
273
 
363
- if(info.initialOwner == address(this)) {
364
- revert InitialOwnerIsService();
274
+ if(owner == address(0)) {
275
+ revert RegisterableOwnerIsZero();
365
276
  }
366
277
 
367
- if(info.initialOwner == address(getRegistry())) {
368
- revert InitialOwnerIsRegistry();
369
- }*/
370
-
371
-
372
- if(info.objectType != objectType) {
373
- revert InvalidType(info.objectType);
278
+ if(getRegistry().isRegistered(owner)) {
279
+ revert RegisterableOwnerIsRegistered();
374
280
  }
375
-
376
- /*NftId parentNftId = info.parentNftId;
377
- IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
378
-
379
- if(parentInfo.objectType != parentType) { // parent registration + type
380
- revert InvalidParent(parentNftId);
381
- }*/
382
281
  }
383
- }
282
+ }
@@ -0,0 +1,62 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
5
+
6
+ import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
7
+
8
+ import {Registry} from "./Registry.sol";
9
+ import {IVersionable} from "../shared/IVersionable.sol";
10
+ import {ProxyManager} from "../shared/ProxyManager.sol";
11
+ import {RegistryService} from "./RegistryService.sol";
12
+ import {TokenRegistry} from "./TokenRegistry.sol";
13
+
14
+
15
+ contract RegistryServiceManager is
16
+ ProxyManager
17
+ {
18
+ bytes32 constant public ACCESS_MANAGER_CREATION_CODE_HASH = 0x0;
19
+
20
+ RegistryService private immutable _registryService;
21
+
22
+ /// @dev initializes proxy manager with registry service implementation and deploys registry
23
+ constructor(
24
+ address initialAuthority, // used by implementation
25
+ address registryAddress) // used by implementation
26
+ ProxyManager(registryAddress)
27
+ {
28
+ require(initialAuthority > address(0), "RegistryServiceManager: initial authority is 0");
29
+ require(registryAddress > address(0), "RegistryServiceManager: registry is 0");
30
+
31
+ // implementation's initializer func `data` argument
32
+ RegistryService srv = new RegistryService();
33
+ bytes memory data = abi.encode(registryAddress, initialAuthority);
34
+ IVersionable versionable = deploy(
35
+ address(srv),
36
+ data);
37
+
38
+ _registryService = RegistryService(address(versionable));
39
+
40
+ // _linkToNftOwnable(address(_registryService));
41
+ }
42
+
43
+ // // from IRegisterable
44
+
45
+ // // IMPORTANT: registry here and in constructor MUST be the same
46
+ function linkOwnershipToServiceNft()
47
+ public
48
+ onlyOwner
49
+ {
50
+ _linkToNftOwnable(address(_registryService));
51
+ }
52
+
53
+ //--- view functions ----------------------------------------------------//
54
+
55
+ function getRegistryService()
56
+ external
57
+ view
58
+ returns (RegistryService registryService)
59
+ {
60
+ return _registryService;
61
+ }
62
+ }