@etherisc/gif-next 0.0.2-e9a637d-547 → 0.0.2-eadf4ad-211

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 (417) hide show
  1. package/README.md +6 -12
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +61 -14
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1556 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +819 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +45 -14
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +24 -274
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +6 -6
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +93 -13
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +5 -43
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +109 -29
  20. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +6 -6
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +349 -64
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +49 -278
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +83 -133
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +427 -257
  32. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  33. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -1
  34. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  35. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +49 -0
  36. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  37. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  38. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +61 -12
  39. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  40. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +8 -8
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  42. package/artifacts/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol}/ObjectManager.json +3 -3
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  47. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  48. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  51. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  52. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1288 -0
  53. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  54. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +735 -0
  55. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  56. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +105 -29
  57. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  58. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +56 -25
  59. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  60. package/artifacts/contracts/{instance/service → pool}/IPoolService.sol/IPoolService.json +272 -39
  61. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  62. package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +56 -25
  63. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  64. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1622 -0
  65. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  66. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +747 -0
  67. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  68. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +918 -0
  69. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  70. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +687 -0
  71. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  72. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1386 -0
  73. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  74. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +787 -0
  75. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  76. package/artifacts/contracts/{instance/service/IClaimService.sol/IClaimService.json → product/IApplicationService.sol/IApplicationService.json} +119 -101
  77. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  78. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
  79. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  80. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +129 -84
  81. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  82. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +63 -175
  83. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  84. package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +53 -22
  85. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  86. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +6 -14
  87. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  88. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1281 -0
  89. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  90. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +779 -0
  91. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  92. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1004 -0
  93. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  94. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +727 -0
  95. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  96. package/artifacts/contracts/{components → product}/Product.sol/Product.json +53 -22
  97. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  98. package/artifacts/contracts/product/ProductService.sol/ProductService.json +864 -0
  99. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  100. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +679 -0
  101. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  102. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  103. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +73 -13
  104. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  105. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +154 -60
  106. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  107. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  108. package/artifacts/contracts/registry/Registry.sol/Registry.json +97 -29
  109. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  110. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +50 -97
  111. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  112. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +174 -80
  113. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  114. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +78 -47
  115. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  116. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +369 -82
  117. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  118. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +14 -27
  119. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  120. package/artifacts/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +3 -3
  121. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  122. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +38 -7
  123. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  124. package/artifacts/contracts/{instance/base → shared}/ComponentService.sol/ComponentService.json +38 -14
  125. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  126. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  127. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +38 -7
  128. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  129. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +0 -13
  130. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  131. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +69 -9
  132. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  133. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -13
  134. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  135. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  136. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  137. package/artifacts/contracts/shared/IService.sol/IService.json +5 -13
  138. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  139. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  140. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +8 -21
  141. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  142. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +80 -26
  143. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  144. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +49 -33
  145. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  146. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -21
  147. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  148. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  149. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  150. package/artifacts/contracts/shared/Service.sol/Service.json +5 -13
  151. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  152. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
  153. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  154. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  155. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  156. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  157. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +523 -0
  158. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  159. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +767 -0
  160. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +667 -0
  162. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  163. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  164. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  165. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  166. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  167. package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
  168. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  169. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  170. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  171. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  172. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  173. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  174. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  175. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  176. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  177. package/artifacts/contracts/{types → type}/NftId.sol/NftIdLib.json +5 -5
  178. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  179. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  180. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  181. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  182. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  183. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  184. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  185. package/artifacts/contracts/{types → type}/Referral.sol/ReferralLib.json +5 -5
  186. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  187. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  188. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  189. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  190. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  191. package/artifacts/contracts/{types → type}/Seconds.sol/SecondsLib.json +3 -3
  192. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  193. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  194. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  195. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +20 -7
  196. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  197. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  198. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  199. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  200. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  201. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  202. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  203. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  204. package/contracts/{components → distribution}/Distribution.sol +21 -16
  205. package/contracts/{instance/service → distribution}/DistributionService.sol +93 -179
  206. package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +14 -11
  207. package/contracts/{components → distribution}/IDistributionComponent.sol +7 -7
  208. package/contracts/{instance/service → distribution}/IDistributionService.sol +18 -30
  209. package/contracts/instance/BundleManager.sol +8 -9
  210. package/contracts/instance/IInstance.sol +30 -13
  211. package/contracts/instance/IInstanceService.sol +6 -17
  212. package/contracts/instance/Instance.sol +76 -46
  213. package/contracts/instance/InstanceAccessManager.sol +8 -5
  214. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  215. package/contracts/instance/InstanceReader.sol +91 -16
  216. package/contracts/instance/InstanceService.sol +78 -307
  217. package/contracts/instance/InstanceServiceManager.sol +11 -21
  218. package/contracts/instance/InstanceStore.sol +57 -65
  219. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +1 -1
  220. package/contracts/instance/base/IKeyValueStore.sol +14 -10
  221. package/contracts/instance/base/ILifecycle.sol +3 -3
  222. package/contracts/instance/base/KeyValueStore.sol +32 -43
  223. package/contracts/instance/base/Lifecycle.sol +17 -5
  224. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +7 -7
  225. package/contracts/instance/module/IAccess.sol +2 -2
  226. package/contracts/instance/module/IBundle.sol +5 -5
  227. package/contracts/instance/module/IComponents.sol +8 -8
  228. package/contracts/instance/module/IDistribution.sol +7 -6
  229. package/contracts/instance/module/IPolicy.sol +22 -16
  230. package/contracts/instance/module/IRisk.sol +1 -1
  231. package/contracts/instance/module/ISetup.sol +4 -4
  232. package/contracts/instance/module/ITreasury.sol +2 -2
  233. package/contracts/{instance/service → pool}/BundleService.sol +108 -155
  234. package/contracts/pool/BundleServiceManager.sol +42 -0
  235. package/contracts/{instance/service → pool}/IBundleService.sol +43 -18
  236. package/contracts/{components → pool}/IPoolComponent.sol +14 -13
  237. package/contracts/{instance/service → pool}/IPoolService.sol +28 -13
  238. package/contracts/{components → pool}/Pool.sol +20 -21
  239. package/contracts/{instance/service → pool}/PoolService.sol +160 -59
  240. package/contracts/pool/PoolServiceManager.sol +42 -0
  241. package/contracts/product/ApplicationService.sol +187 -0
  242. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
  243. package/contracts/product/ClaimService.sol +443 -0
  244. package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
  245. package/contracts/{instance/service → product}/IApplicationService.sol +14 -34
  246. package/contracts/product/IClaimService.sol +93 -0
  247. package/contracts/{instance/service → product}/IPolicyService.sol +34 -26
  248. package/contracts/product/IPricingService.sol +37 -0
  249. package/contracts/{components → product}/IProductComponent.sol +11 -10
  250. package/contracts/{instance/service → product}/IProductService.sol +10 -10
  251. package/contracts/{instance/service → product}/PolicyService.sol +154 -138
  252. package/contracts/product/PolicyServiceManager.sol +42 -0
  253. package/contracts/product/PricingService.sol +276 -0
  254. package/contracts/product/PricingServiceManager.sol +42 -0
  255. package/contracts/{components → product}/Product.sol +160 -74
  256. package/contracts/{instance/service → product}/ProductService.sol +50 -47
  257. package/contracts/product/ProductServiceManager.sol +42 -0
  258. package/contracts/registry/IRegistry.sol +23 -16
  259. package/contracts/registry/IRegistryService.sol +26 -36
  260. package/contracts/registry/Registry.sol +43 -39
  261. package/contracts/registry/RegistryAccessManager.sol +39 -123
  262. package/contracts/registry/RegistryService.sol +32 -83
  263. package/contracts/registry/RegistryServiceManager.sol +21 -11
  264. package/contracts/registry/ReleaseManager.sol +247 -189
  265. package/contracts/registry/TokenRegistry.sol +2 -2
  266. package/contracts/{components → shared}/Component.sol +26 -8
  267. package/contracts/{instance/base → shared}/ComponentService.sol +60 -40
  268. package/contracts/{components → shared}/IComponent.sol +19 -5
  269. package/contracts/shared/INftOwnable.sol +1 -1
  270. package/contracts/shared/IPolicyHolder.sol +24 -10
  271. package/contracts/shared/IRegistryLinked.sol +0 -1
  272. package/contracts/shared/IService.sol +3 -1
  273. package/contracts/shared/IVersionable.sol +1 -1
  274. package/contracts/shared/NftOwnable.sol +1 -3
  275. package/contracts/shared/PolicyHolder.sol +31 -18
  276. package/contracts/shared/ProxyManager.sol +29 -3
  277. package/contracts/shared/Registerable.sol +12 -11
  278. package/contracts/shared/RegistryLinked.sol +0 -5
  279. package/contracts/shared/Service.sol +3 -3
  280. package/contracts/shared/TokenHandler.sol +4 -2
  281. package/contracts/shared/Versionable.sol +1 -1
  282. package/contracts/staking/IStakingService.sol +102 -0
  283. package/contracts/staking/StakingService.sol +169 -0
  284. package/contracts/staking/StakingServiceManager.sol +40 -0
  285. package/contracts/{types → type}/Amount.sol +49 -0
  286. package/contracts/{types → type}/ClaimId.sol +25 -2
  287. package/contracts/{types → type}/Fee.sol +7 -6
  288. package/contracts/{types → type}/NftIdSet.sol +1 -1
  289. package/contracts/{types → type}/ObjectType.sol +10 -5
  290. package/contracts/{types → type}/PayoutId.sol +33 -5
  291. package/contracts/{types → type}/RoleId.sol +50 -8
  292. package/contracts/{types → type}/StateId.sol +6 -2
  293. package/contracts/{types → type}/Timestamp.sol +5 -0
  294. package/package.json +1 -1
  295. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  296. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  297. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  298. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  299. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  300. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  301. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  302. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  303. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  304. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  305. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  306. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  307. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  308. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1039
  309. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  310. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -673
  311. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  312. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1231
  313. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  314. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -721
  315. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  316. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -817
  317. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  318. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -641
  319. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  320. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1798
  321. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  322. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
  323. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  324. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  325. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  326. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  327. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  328. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  329. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  330. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  331. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1092
  332. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  333. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -697
  334. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  335. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1237
  336. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  337. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -661
  338. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  339. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -840
  340. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  341. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -653
  342. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  343. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  344. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  345. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  346. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  347. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  348. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  349. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  350. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  351. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -596
  352. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  353. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  354. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  355. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  356. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  357. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  358. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  359. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  360. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  361. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +0 -4
  362. package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -161
  363. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  364. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  365. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  366. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  367. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  368. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  369. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  370. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -288
  371. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  372. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  373. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  374. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  375. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  376. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  377. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  378. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  379. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  380. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  381. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  382. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  383. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  384. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  385. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  386. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  387. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  388. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  389. package/contracts/instance/service/ApplicationService.sol +0 -351
  390. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  391. package/contracts/instance/service/ClaimService.sol +0 -151
  392. package/contracts/instance/service/IClaimService.sol +0 -61
  393. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  394. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  395. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  396. package/contracts/shared/ContractDeployerLib.sol +0 -72
  397. package/contracts/test/TestFee.sol +0 -25
  398. package/contracts/test/TestRegisterable.sol +0 -18
  399. package/contracts/test/TestRoleId.sol +0 -14
  400. package/contracts/test/TestService.sol +0 -25
  401. package/contracts/test/TestToken.sol +0 -26
  402. package/contracts/test/TestVersion.sol +0 -44
  403. package/contracts/test/TestVersionable.sol +0 -17
  404. package/contracts/test/Usdc.sol +0 -26
  405. package/contracts/types/ChainId.sol +0 -38
  406. package/contracts/types/NumberId.sol +0 -52
  407. /package/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol +0 -0
  408. /package/contracts/{types → type}/AddressSet.sol +0 -0
  409. /package/contracts/{types → type}/Blocknumber.sol +0 -0
  410. /package/contracts/{types → type}/DistributorType.sol +0 -0
  411. /package/contracts/{types → type}/Key32.sol +0 -0
  412. /package/contracts/{types → type}/NftId.sol +0 -0
  413. /package/contracts/{types → type}/Referral.sol +0 -0
  414. /package/contracts/{types → type}/RiskId.sol +0 -0
  415. /package/contracts/{types → type}/Seconds.sol +0 -0
  416. /package/contracts/{types → type}/UFixed.sol +0 -0
  417. /package/contracts/{types → type}/Version.sol +0 -0
@@ -1,44 +1,44 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {IRegistry} from "../../registry/IRegistry.sol";
5
- import {IProductComponent} from "../../components/IProductComponent.sol";
6
- import {Product} from "../../components/Product.sol";
7
- import {IComponent} from "../../components/IComponent.sol";
8
- import {IPoolComponent} from "../../components/IPoolComponent.sol";
9
- import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
10
- import {IInstance} from "../IInstance.sol";
11
- import {IPolicy} from "../module/IPolicy.sol";
12
- import {IRisk} from "../module/IRisk.sol";
13
- import {IBundle} from "../module/IBundle.sol";
4
+ import {IRegistry} from "../registry/IRegistry.sol";
5
+ import {IProductComponent} from "./IProductComponent.sol";
6
+ import {Product} from "./Product.sol";
7
+ import {IComponent} from "../shared/IComponent.sol";
8
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
9
+ import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
10
+ import {IInstance} from "../instance/IInstance.sol";
11
+ import {IPolicy} from "../instance/module/IPolicy.sol";
12
+ import {IRisk} from "../instance/module/IRisk.sol";
13
+ import {IBundle} from "../instance/module/IBundle.sol";
14
14
  import {IProductService} from "./IProductService.sol";
15
- import {ITreasury} from "../module/ITreasury.sol";
16
- import {ISetup} from "../module/ISetup.sol";
17
-
18
- import {TokenHandler} from "../../shared/TokenHandler.sol";
19
-
20
- import {IVersionable} from "../../shared/IVersionable.sol";
21
- import {Versionable} from "../../shared/Versionable.sol";
22
-
23
- import {Timestamp, zeroTimestamp} from "../../types/Timestamp.sol";
24
- import {UFixed, UFixedLib} from "../../types/UFixed.sol";
25
- import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
26
- import {ObjectType, PRODUCT, POOL, POLICY} from "../../types/ObjectType.sol";
27
- import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE} from "../../types/StateId.sol";
28
- import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
29
- import {Fee, FeeLib} from "../../types/Fee.sol";
30
- import {ReferralId} from "../../types/Referral.sol";
31
- import {RiskId} from "../../types/RiskId.sol";
32
- import {StateId} from "../../types/StateId.sol";
33
- import {Version, VersionLib} from "../../types/Version.sol";
34
- import {RoleId, PRODUCT_OWNER_ROLE} from "../../types/RoleId.sol";
35
-
36
- import {IService} from "../../shared/IService.sol";
37
- import {Service} from "../../shared/Service.sol";
38
- import {ComponentService} from "../base/ComponentService.sol";
15
+ import {ITreasury} from "../instance/module/ITreasury.sol";
16
+ import {ISetup} from "../instance/module/ISetup.sol";
17
+
18
+ import {TokenHandler} from "../shared/TokenHandler.sol";
19
+
20
+ import {IVersionable} from "../shared/IVersionable.sol";
21
+ import {Versionable} from "../shared/Versionable.sol";
22
+
23
+ import {Timestamp, zeroTimestamp} from "../type/Timestamp.sol";
24
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
25
+ import {Blocknumber, blockNumber} from "../type/Blocknumber.sol";
26
+ import {ObjectType, PRODUCT, POOL, POLICY} from "../type/ObjectType.sol";
27
+ import {APPLIED, ACTIVE, KEEP_STATE} from "../type/StateId.sol";
28
+ import {NftId, NftIdLib, zeroNftId} from "../type/NftId.sol";
29
+ import {Fee, FeeLib} from "../type/Fee.sol";
30
+ import {ReferralId} from "../type/Referral.sol";
31
+ import {RiskId} from "../type/RiskId.sol";
32
+ import {StateId} from "../type/StateId.sol";
33
+ import {Version, VersionLib} from "../type/Version.sol";
34
+ import {RoleId, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
35
+
36
+ import {IService} from "../shared/IService.sol";
37
+ import {Service} from "../shared/Service.sol";
38
+ import {ComponentService} from "../shared/ComponentService.sol";
39
39
  import {IProductService} from "./IProductService.sol";
40
- import {InstanceReader} from "../InstanceReader.sol";
41
- import {IPoolService} from "./PoolService.sol";
40
+ import {InstanceReader} from "../instance/InstanceReader.sol";
41
+ import {IPoolService} from "../pool/PoolService.sol";
42
42
 
43
43
  // TODO or name this ProtectionService to have Product be something more generic (loan, savings account, ...)
44
44
  contract ProductService is ComponentService, IProductService {
@@ -56,11 +56,13 @@ contract ProductService is ComponentService, IProductService {
56
56
  initializer
57
57
  virtual override
58
58
  {
59
- address registryAddress;
60
- address initialOwner;
61
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
59
+ (
60
+ address registryAddress,,
61
+ //address managerAddress
62
+ address authority
63
+ ) = abi.decode(data, (address, address, address));
62
64
 
63
- initializeService(registryAddress, address(0), owner);
65
+ initializeService(registryAddress, authority, owner);
64
66
 
65
67
  _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
66
68
 
@@ -157,7 +159,7 @@ contract ProductService is ComponentService, IProductService {
157
159
  {
158
160
  // TODO check args
159
161
 
160
- (NftId productNftId, IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
162
+ (NftId productNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
161
163
  InstanceReader instanceReader = instance.getInstanceReader();
162
164
 
163
165
  ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
@@ -175,8 +177,9 @@ contract ProductService is ComponentService, IProductService {
175
177
  external
176
178
  override
177
179
  {
178
- (NftId productNftId, IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
180
+ (NftId productNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
179
181
  IRisk.RiskInfo memory riskInfo = IRisk.RiskInfo(productNftId, data);
182
+
180
183
  instance.getInstanceStore().createRisk(
181
184
  riskId,
182
185
  riskInfo
@@ -189,7 +192,7 @@ contract ProductService is ComponentService, IProductService {
189
192
  )
190
193
  external
191
194
  {
192
- (,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
195
+ (,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
193
196
  InstanceReader instanceReader = instance.getInstanceReader();
194
197
 
195
198
  IRisk.RiskInfo memory riskInfo = instanceReader.getRiskInfo(riskId);
@@ -200,10 +203,10 @@ contract ProductService is ComponentService, IProductService {
200
203
  function updateRiskState(
201
204
  RiskId riskId,
202
205
  StateId state
203
- )
204
- external
206
+ )
207
+ external
205
208
  {
206
- (,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
209
+ (,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
207
210
  instance.getInstanceStore().updateRiskState(riskId, state);
208
211
  }
209
- }
212
+ }
@@ -0,0 +1,42 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../shared/ProxyManager.sol";
6
+ import {ProductService} from "./ProductService.sol";
7
+ import {Registry} from "../registry/Registry.sol";
8
+ import {RegistryService} from "../registry/RegistryService.sol";
9
+ import {VersionLib} from "../type/Version.sol";
10
+
11
+ contract ProductServiceManager is ProxyManager {
12
+
13
+ ProductService private _productService;
14
+
15
+ /// @dev initializes proxy manager with product service implementation
16
+ constructor(
17
+ address authority,
18
+ address registryAddress,
19
+ bytes32 salt
20
+ )
21
+ ProxyManager(registryAddress)
22
+ {
23
+ ProductService svc = new ProductService{salt: salt}();
24
+ bytes memory data = abi.encode(registryAddress, address(this), authority);
25
+ IVersionable versionable = deployDetermenistic(
26
+ address(svc),
27
+ data,
28
+ salt);
29
+
30
+ _productService = ProductService(address(versionable));
31
+ }
32
+
33
+ //--- view functions ----------------------------------------------------//
34
+ function getProductService()
35
+ external
36
+ view
37
+ returns (ProductService productService)
38
+ {
39
+ return _productService;
40
+ }
41
+
42
+ }
@@ -3,10 +3,11 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
 
6
- import {NftId} from "../types/NftId.sol";
7
- import {ObjectType} from "../types/ObjectType.sol";
8
- import {VersionPart} from "../types/Version.sol";
9
- import {Timestamp} from "../types/Timestamp.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {VersionPart} from "../type/Version.sol";
9
+ import {Timestamp} from "../type/Timestamp.sol";
10
+ import {RoleId} from "../type/RoleId.sol";
10
11
 
11
12
  interface IRegistry is IERC165 {
12
13
 
@@ -14,20 +15,20 @@ interface IRegistry is IERC165 {
14
15
  event LogServiceRegistration(VersionPart majorVersion, ObjectType domain);
15
16
 
16
17
  // registerService()
17
- error CallerNotReleaseManager();
18
- error ServiceAlreadyRegistered(address service);
18
+ error ErrorRegistryCallerNotReleaseManager();
19
+ error ErrorRegistryDomainZero(address service);
20
+ error ErrorRegistryDomainAlreadyRegistered(address service, VersionPart version, ObjectType domain);
19
21
 
20
22
  // register()
21
- error CallerNotRegistryService();
22
- error ServiceRegistration();
23
+ error ErrorRegistryCallerNotRegistryService();
23
24
 
24
25
  // registerWithCustomTypes()
25
- error CoreTypeRegistration();
26
+ error ErrorRegistryCoreTypeRegistration();
26
27
 
27
28
  // _register()
28
- error ZeroParentAddress();
29
- error InvalidTypesCombination(ObjectType objectType, ObjectType parentType);
30
- error ContractAlreadyRegistered(address objectAddress);
29
+ error ErrorRegistryParentAddressZero();
30
+ error ErrorRegistryTypesCombinationInvalid(ObjectType objectType, ObjectType parentType);
31
+ error ErrorRegistryContractAlreadyRegistered(address objectAddress);
31
32
 
32
33
  struct ObjectInfo {
33
34
  NftId nftId;
@@ -37,13 +38,17 @@ interface IRegistry is IERC165 {
37
38
  address objectAddress;
38
39
  address initialOwner;
39
40
  bytes data;
40
- }// TODO delete nftId and initialOwner(if not used) from struct
41
- // TODO strong disagree, keep nftId there (lets keep get object info return object consistent)
41
+ }
42
+
42
43
 
43
44
  struct ReleaseInfo {
45
+ VersionPart version;
46
+ address[] addresses;
47
+ RoleId[][] serviceRoles;
48
+ RoleId[][] functionRoles;
49
+ bytes4[][][] selectors;
44
50
  ObjectType[] domains;
45
- Timestamp createdAt;
46
- //Timestamp updatedAt;
51
+ Timestamp activatedAt;
47
52
  }
48
53
 
49
54
  function registerService(
@@ -95,6 +100,8 @@ interface IRegistry is IERC165 {
95
100
 
96
101
  function getReleaseManagerAddress() external view returns (address);
97
102
 
103
+ function getReleaseAccessManagerAddress(VersionPart version) external view returns (address);
104
+
98
105
  function getChainNftAddress() external view returns (address);
99
106
 
100
107
  function getOwner() external view returns (address);
@@ -3,50 +3,40 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  // import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
 
6
- import {NftId} from "../types/NftId.sol";
7
- import {ObjectType} from "../types/ObjectType.sol";
8
- import {RoleId} from "../types/RoleId.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {RoleId} from "../type/RoleId.sol";
9
9
  import {IService} from "../shared/IService.sol";
10
10
  import {IRegistry} from "./IRegistry.sol";
11
11
 
12
12
  import {IRegisterable} from "../shared/IRegisterable.sol";
13
- import {IComponent} from "../components/IComponent.sol";
13
+ import {IComponent} from "../shared/IComponent.sol";
14
14
 
15
15
  interface IRegistryService is
16
16
  IService
17
- // TODO cleanup
18
- // IAccessManaged
19
17
  {
20
- error SelfRegistration();
21
- error NotRegistryOwner();
22
-
23
- error NotService();
24
- error NotInstance();
25
- error NotProduct();
26
- error NotPool();
27
- error NotDistribution();
28
-
29
- error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
30
- error NotRegisterableOwner(address expectedOwner);
31
- error RegisterableOwnerIsZero();
32
- error RegisterableOwnerIsRegistered();
33
- error InvalidInitialOwner(address initialOwner);
34
- error InvalidAddress(address registerableAddress);
35
-
36
- struct FunctionConfig
37
- {
38
- ObjectType serviceDomain;
39
- bytes4[] selectors;
40
- }
41
-
42
- function getFunctionConfigs()
43
- external
44
- pure
45
- returns(
46
- FunctionConfig[] memory config
47
- );
48
-
49
- // TODO used by service -> add owner arg
18
+ error ErrorRegistryServiceNotRegistryOwner();
19
+
20
+ error ErrorRegistryServiceNotService(address notService);
21
+ error ErrorRegistryServiceNotInstance(address notInstance);
22
+ error ErrorRegistryServiceNotProduct(address notProduct);
23
+ error ErrorRegistryServiceNotPool(address notPool);
24
+ error ErrorRegistryServiceNotDistribution(address notDistribution);
25
+
26
+ error ErrorRegistryServiceRegisterableAddressInvalid(IRegisterable registerable, address found);
27
+ error ErrorRegistryServiceRegisterableTypeInvalid(IRegisterable registerable, ObjectType expected, ObjectType found);
28
+ error ErrorRegistryServiceRegisterableOwnerInvalid(IRegisterable registerable, address expected, address found);
29
+ error ErrorRegistryServiceRegisterableOwnerZero(IRegisterable registerable);
30
+ error ErrorRegistryServiceRegisterableOwnerRegistered(IRegisterable registerable, address owner);
31
+ error ErrorRegistryServiceRegisterableSelfRegistration(IRegisterable registerable);
32
+
33
+ error ErrorRegistryServiceObjectTypeInvalid(ObjectType expected, ObjectType found);
34
+ error ErrorRegistryServiceObjectOwnerRegistered(ObjectType objectType, address owner);
35
+ error ErrorRegistryServiceObjectOwnerZero(ObjectType objectType);
36
+
37
+ error ErrorRegistryServiceInvalidInitialOwner(address initialOwner);
38
+ error ErrorRegistryServiceInvalidAddress(address registerableAddress);
39
+
50
40
  function registerInstance(IRegisterable instance, address owner)
51
41
  external returns(IRegistry.ObjectInfo memory info);
52
42
 
@@ -3,9 +3,9 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
 
6
- import {NftId, toNftId, zeroNftId} from "../types/NftId.sol";
7
- import {VersionPart} from "../types/Version.sol";
8
- import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../types/ObjectType.sol";
6
+ import {NftId, toNftId, zeroNftId} from "../type/NftId.sol";
7
+ import {VersionPart} from "../type/Version.sol";
8
+ import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
9
9
 
10
10
  import {ChainNft} from "./ChainNft.sol";
11
11
  import {IRegistry} from "./IRegistry.sol";
@@ -48,14 +48,14 @@ contract Registry is
48
48
 
49
49
  modifier onlyRegistryService() {
50
50
  if(!_releaseManager.isActiveRegistryService(msg.sender)) {
51
- revert CallerNotRegistryService();
51
+ revert ErrorRegistryCallerNotRegistryService();
52
52
  }
53
53
  _;
54
54
  }
55
55
 
56
56
  modifier onlyReleaseManager() {
57
57
  if(msg.sender != address(_releaseManager)) {
58
- revert CallerNotReleaseManager();
58
+ revert ErrorRegistryCallerNotReleaseManager();
59
59
  }
60
60
  _;
61
61
  }
@@ -84,7 +84,16 @@ contract Registry is
84
84
  onlyReleaseManager
85
85
  returns(NftId nftId)
86
86
  {
87
+ address service = info.objectAddress;
87
88
  /* must be guaranteed by release manager
89
+ if(service == address(0)) {
90
+ revert();
91
+ }
92
+
93
+ if(version.eqz()) {
94
+ revert();
95
+ }
96
+
88
97
  if(info.objectType != SERVICE()) {
89
98
  revert();
90
99
  }
@@ -94,11 +103,15 @@ contract Registry is
94
103
  info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
95
104
  */
96
105
 
97
- if(_service[version][domain] > address(0)) {
98
- revert ServiceAlreadyRegistered(info.objectAddress);
106
+ if(domain.eqz()) {
107
+ revert ErrorRegistryDomainZero(service);
99
108
  }
100
109
 
101
- _service[version][domain] = info.objectAddress; // nftId;
110
+ if(_service[version][domain] > address(0)) {
111
+ revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
112
+ }
113
+
114
+ _service[version][domain] = service;
102
115
 
103
116
  nftId = _register(info);
104
117
 
@@ -113,23 +126,17 @@ contract Registry is
113
126
  ObjectType objectType = info.objectType;
114
127
  ObjectType parentType = _info[info.parentNftId].objectType;
115
128
 
116
- // TODO do not need it here -> SERVICE is no longer part of _coreContractCombinations
117
- // no service registrations
118
- if(objectType == SERVICE()) {
119
- revert ServiceRegistration();
120
- }
121
-
122
129
  // only valid core types combinations
123
130
  if(info.objectAddress == address(0))
124
131
  {
125
132
  if(_coreObjectCombinations[objectType][parentType] == false) {
126
- revert InvalidTypesCombination(objectType, parentType);
133
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
127
134
  }
128
135
  }
129
136
  else
130
137
  {
131
138
  if(_coreContractCombinations[objectType][parentType] == false) {
132
- revert InvalidTypesCombination(objectType, parentType);
139
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
133
140
  }
134
141
  }
135
142
 
@@ -145,7 +152,7 @@ contract Registry is
145
152
  ObjectType parentType = _info[info.parentNftId].objectType;
146
153
 
147
154
  if(_coreTypes[objectType]) {
148
- revert CoreTypeRegistration();
155
+ revert ErrorRegistryCoreTypeRegistration();
149
156
  }
150
157
 
151
158
  if(
@@ -153,7 +160,7 @@ contract Registry is
153
160
  parentType == REGISTRY() ||
154
161
  parentType == SERVICE()
155
162
  ) {
156
- revert InvalidTypesCombination(objectType, parentType);
163
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
157
164
  }
158
165
 
159
166
  _register(info);
@@ -189,10 +196,6 @@ contract Registry is
189
196
  return _chainNft.totalSupply();
190
197
  }
191
198
 
192
- function getReleaseManagerAddress() external view returns (address) {
193
- return address(_releaseManager);
194
- }
195
-
196
199
  function getNftId() external view returns (NftId nftId) {
197
200
  return _registryNftId;
198
201
  }
@@ -244,10 +247,15 @@ contract Registry is
244
247
  VersionPart releaseVersion
245
248
  ) external view returns (address service)
246
249
  {
247
- // TODO how can I get service address while release is not validated/activated ?!! -> user will check validity of release on its own
248
- //if(_releaseManager.isValidRelease(releaseVersion)) {
249
250
  service = _service[releaseVersion][serviceDomain];
250
- //}
251
+ }
252
+
253
+ function getReleaseAccessManagerAddress(VersionPart version) external view returns (address) {
254
+ return address(_releaseManager.getReleaseAccessManager(version));
255
+ }
256
+
257
+ function getReleaseManagerAddress() external view returns (address) {
258
+ return address(_releaseManager);
251
259
  }
252
260
 
253
261
  function getChainNftAddress() external view override returns (address) {
@@ -287,7 +295,7 @@ contract Registry is
287
295
  // special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
288
296
  // special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
289
297
  if(parentAddress == address(0)) {
290
- revert ZeroParentAddress();
298
+ revert ErrorRegistryParentAddressZero();
291
299
  }
292
300
 
293
301
  address interceptor = _getInterceptor(info.isInterceptor, info.objectAddress, parentInfo.isInterceptor, parentAddress);
@@ -302,7 +310,7 @@ contract Registry is
302
310
  address contractAddress = info.objectAddress;
303
311
 
304
312
  if(_nftIdByAddress[contractAddress].gtz()) {
305
- revert ContractAlreadyRegistered(contractAddress);
313
+ revert ErrorRegistryContractAlreadyRegistered(contractAddress);
306
314
  }
307
315
 
308
316
  _nftIdByAddress[contractAddress] = nftId;
@@ -437,30 +445,26 @@ contract Registry is
437
445
  _coreTypes[PRODUCT()] = true;
438
446
  _coreTypes[POOL()] = true;
439
447
  _coreTypes[DISTRIBUTION()] = true;
448
+ _coreTypes[DISTRIBUTOR()] = true;
449
+ _coreTypes[ORACLE()] = true;
440
450
  _coreTypes[POLICY()] = true;
441
451
  _coreTypes[BUNDLE()] = true;
442
452
  _coreTypes[STAKE()] = true;
443
-
444
- // registry as parent, ONLY registry owner
445
- //_coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
446
- _coreContractCombinations[TOKEN()][REGISTRY()] = true;
447
- //_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
448
453
 
449
- // registry as parent, ONLY approved
450
454
  _coreContractCombinations[INSTANCE()][REGISTRY()] = true;
451
-
452
- // instance as parent, ONLY approved
453
455
  _coreContractCombinations[PRODUCT()][INSTANCE()] = true;
454
456
  _coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
455
457
  _coreContractCombinations[ORACLE()][INSTANCE()] = true;
456
458
  _coreContractCombinations[POOL()][INSTANCE()] = true;
457
459
 
458
- _coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
460
+ uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
461
+ if(registryId == _chainNft.GLOBAL_REGISTRY_ID())
462
+ {// we are global registry
463
+ _coreObjectCombinations[REGISTRY()][REGISTRY()] = true;
464
+ }
459
465
 
460
- // product as parent, ONLY approved
466
+ _coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
461
467
  _coreObjectCombinations[POLICY()][PRODUCT()] = true;
462
-
463
- // pool as parent, ONLY approved
464
468
  _coreObjectCombinations[BUNDLE()][POOL()] = true;
465
469
  _coreObjectCombinations[STAKE()][POOL()] = true;
466
470
  }