@etherisc/gif-next 0.0.2-bb1081a-994 → 0.0.2-bbb7ced-843

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 (614) hide show
  1. package/README.md +10 -14
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1378 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/{components/IPoolComponent.sol/IPoolComponent.json → distribution/IDistributionComponent.sol/IDistributionComponent.json} +398 -276
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +827 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +61 -116
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +239 -1554
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +393 -189
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +430 -2524
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +661 -341
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +576 -320
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +389 -104
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3598 -0
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  35. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  36. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  38. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
  40. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  41. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +25 -150
  42. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  44. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  45. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  47. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  48. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  49. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  50. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  51. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
  52. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  53. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → oracle/IOracleComponent.sol/IOracleComponent.json} +223 -270
  54. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  55. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  56. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  57. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  58. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  60. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  61. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  62. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  63. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  64. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  66. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  67. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +269 -346
  68. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  69. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/IPoolComponent.sol/IPoolComponent.json} +448 -290
  70. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  71. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  72. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  73. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  74. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  75. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  76. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  78. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  79. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  80. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  82. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  83. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  84. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  86. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  87. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +211 -230
  88. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  89. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  90. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  91. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +251 -297
  92. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  93. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +270 -215
  94. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  95. package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +370 -281
  96. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  97. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IProductService.sol/IProductService.json} +126 -167
  98. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  99. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  100. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  102. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  103. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  104. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  106. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  107. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → product/Product.sol/Product.json} +822 -220
  108. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  109. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  110. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  112. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  113. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  114. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  115. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +203 -21
  116. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  117. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +360 -218
  118. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +92 -0
  120. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  121. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  122. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  123. package/artifacts/contracts/registry/Registry.sol/Registry.json +440 -36
  124. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  125. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1834 -0
  126. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  127. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +506 -254
  128. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +352 -95
  130. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  131. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +981 -241
  132. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  133. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +144 -0
  134. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  135. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +349 -82
  136. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  137. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1492 -0
  138. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  139. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  140. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  141. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
  142. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
  144. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  145. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
  146. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
  148. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  149. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  150. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  151. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
  152. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
  154. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  155. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +178 -242
  156. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  157. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  158. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  159. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1126 -0
  160. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  162. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  163. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  164. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  165. package/artifacts/contracts/{components/Component.sol/Component.json → shared/IComponent.sol/IComponent.json} +205 -187
  166. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  167. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  168. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  169. package/artifacts/contracts/{components/IDistributionComponent.sol/IDistributionComponent.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +221 -211
  170. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  171. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -11
  172. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  173. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  174. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  175. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  176. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  177. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  178. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -30
  180. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  181. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  182. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  183. package/artifacts/contracts/shared/IService.sol/IService.json +84 -154
  184. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  185. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  186. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  187. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  188. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  189. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  190. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  191. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  192. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  193. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  194. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  195. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  196. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +108 -35
  198. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  199. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  200. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  201. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -75
  202. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  203. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +131 -60
  204. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  205. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  206. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  207. package/artifacts/contracts/shared/Service.sol/Service.json +188 -157
  208. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  209. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  210. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  211. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  212. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  214. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  215. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  216. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  217. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  218. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  219. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  220. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  221. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  222. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  223. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  224. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  225. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  226. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  227. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  228. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  230. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2261 -0
  232. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  233. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  234. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  235. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  236. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  237. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  238. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  239. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  240. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  241. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  242. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  243. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  244. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  245. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  246. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  247. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  248. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  250. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  251. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  252. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
  254. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  256. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  258. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  260. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  261. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  262. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
  264. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  266. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  268. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  270. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  272. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  274. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  276. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  277. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  278. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  279. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  280. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  281. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  282. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  283. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  284. package/contracts/distribution/Distribution.sol +261 -0
  285. package/contracts/distribution/DistributionService.sol +297 -0
  286. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  287. package/contracts/distribution/IDistributionComponent.sol +66 -0
  288. package/contracts/distribution/IDistributionService.sol +81 -0
  289. package/contracts/instance/BundleManager.sol +15 -14
  290. package/contracts/instance/IInstance.sol +61 -46
  291. package/contracts/instance/IInstanceService.sol +77 -20
  292. package/contracts/instance/Instance.sol +176 -182
  293. package/contracts/instance/InstanceAdmin.sol +331 -0
  294. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  295. package/contracts/instance/InstanceReader.sol +159 -60
  296. package/contracts/instance/InstanceService.sol +322 -245
  297. package/contracts/instance/InstanceServiceManager.sol +12 -22
  298. package/contracts/instance/InstanceStore.sol +269 -0
  299. package/contracts/instance/base/BalanceStore.sol +123 -0
  300. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  301. package/contracts/instance/base/ObjectCounter.sol +21 -0
  302. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +12 -16
  303. package/contracts/instance/module/IAccess.sol +19 -21
  304. package/contracts/instance/module/IBundle.sol +8 -8
  305. package/contracts/instance/module/IComponents.sol +52 -0
  306. package/contracts/instance/module/IDistribution.sol +7 -4
  307. package/contracts/instance/module/IPolicy.sol +56 -17
  308. package/contracts/instance/module/IRisk.sol +1 -1
  309. package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
  310. package/contracts/oracle/IOracle.sol +20 -0
  311. package/contracts/oracle/IOracleComponent.sol +32 -0
  312. package/contracts/oracle/IOracleService.sol +65 -0
  313. package/contracts/oracle/Oracle.sol +145 -0
  314. package/contracts/oracle/OracleService.sol +278 -0
  315. package/contracts/oracle/OracleServiceManager.sol +42 -0
  316. package/contracts/pool/BundleService.sol +296 -0
  317. package/contracts/pool/BundleServiceManager.sol +42 -0
  318. package/contracts/pool/IBundleService.sol +106 -0
  319. package/contracts/pool/IPoolComponent.sol +112 -0
  320. package/contracts/pool/IPoolService.sol +150 -0
  321. package/contracts/pool/Pool.sol +299 -0
  322. package/contracts/pool/PoolService.sol +452 -0
  323. package/contracts/pool/PoolServiceManager.sol +42 -0
  324. package/contracts/product/ApplicationService.sol +254 -0
  325. package/contracts/product/ApplicationServiceManager.sol +38 -0
  326. package/contracts/product/ClaimService.sol +442 -0
  327. package/contracts/product/ClaimServiceManager.sol +38 -0
  328. package/contracts/product/IApplicationService.sol +62 -0
  329. package/contracts/product/IClaimService.sol +99 -0
  330. package/contracts/product/IPolicyService.sol +78 -0
  331. package/contracts/product/IPricingService.sol +39 -0
  332. package/contracts/product/IProductComponent.sol +42 -0
  333. package/contracts/product/IProductService.sol +33 -0
  334. package/contracts/product/PolicyService.sol +475 -0
  335. package/contracts/product/PolicyServiceManager.sol +42 -0
  336. package/contracts/product/PricingService.sol +300 -0
  337. package/contracts/product/PricingServiceManager.sol +42 -0
  338. package/contracts/product/Product.sol +377 -0
  339. package/contracts/product/ProductService.sol +124 -0
  340. package/contracts/product/ProductServiceManager.sol +42 -0
  341. package/contracts/registry/ChainNft.sol +16 -1
  342. package/contracts/registry/IRegistry.sol +47 -21
  343. package/contracts/registry/IRegistryService.sol +42 -38
  344. package/contracts/registry/IServiceAuthorization.sol +28 -0
  345. package/contracts/registry/ITransferInterceptor.sol +1 -0
  346. package/contracts/registry/Registry.sol +221 -97
  347. package/contracts/registry/RegistryAdmin.sol +331 -0
  348. package/contracts/registry/RegistryService.sol +108 -104
  349. package/contracts/registry/RegistryServiceManager.sol +22 -31
  350. package/contracts/registry/ReleaseManager.sol +558 -193
  351. package/contracts/registry/ServiceAuthorizationV3.sol +246 -0
  352. package/contracts/registry/TokenRegistry.sol +263 -60
  353. package/contracts/shared/AccessAdmin.sol +696 -0
  354. package/contracts/shared/AccessManagerCustom.sol +741 -0
  355. package/contracts/shared/AccessManagerExtended.sol +481 -0
  356. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  357. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  358. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  359. package/contracts/shared/Component.sol +281 -0
  360. package/contracts/shared/ComponentService.sol +617 -0
  361. package/contracts/shared/ComponentServiceManager.sol +35 -0
  362. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  363. package/contracts/shared/ERC165.sol +15 -13
  364. package/contracts/shared/IAccessAdmin.sol +146 -0
  365. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  366. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  367. package/contracts/shared/IComponent.sol +70 -0
  368. package/contracts/shared/IComponentService.sol +102 -0
  369. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  370. package/contracts/{instance/base → shared}/IKeyValueStore.sol +15 -11
  371. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  372. package/contracts/shared/INftOwnable.sol +13 -12
  373. package/contracts/shared/IPolicyHolder.sol +45 -0
  374. package/contracts/shared/IRegisterable.sol +3 -3
  375. package/contracts/shared/IRegistryLinked.sol +11 -0
  376. package/contracts/shared/IService.sol +14 -5
  377. package/contracts/shared/IVersionable.sol +5 -48
  378. package/contracts/shared/InitializableCustom.sol +177 -0
  379. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  380. package/contracts/shared/KeyValueStore.sol +127 -0
  381. package/contracts/{instance/base → shared}/Lifecycle.sol +37 -7
  382. package/contracts/shared/NftIdSetManager.sol +65 -0
  383. package/contracts/shared/NftOwnable.sol +59 -91
  384. package/contracts/shared/PolicyHolder.sol +102 -0
  385. package/contracts/shared/ProxyManager.sol +131 -26
  386. package/contracts/shared/Registerable.sol +19 -30
  387. package/contracts/shared/RegistryLinked.sol +43 -0
  388. package/contracts/shared/Service.sol +54 -31
  389. package/contracts/shared/TokenHandler.sol +37 -6
  390. package/contracts/shared/Versionable.sol +4 -92
  391. package/contracts/staking/IStaking.sol +168 -0
  392. package/contracts/staking/IStakingService.sol +153 -0
  393. package/contracts/staking/StakeManagerLib.sol +231 -0
  394. package/contracts/staking/Staking.sol +513 -0
  395. package/contracts/staking/StakingManager.sol +54 -0
  396. package/contracts/staking/StakingReader.sol +187 -0
  397. package/contracts/staking/StakingService.sol +411 -0
  398. package/contracts/staking/StakingServiceManager.sol +44 -0
  399. package/contracts/staking/StakingStore.sol +613 -0
  400. package/contracts/staking/TargetManagerLib.sol +207 -0
  401. package/contracts/{types → type}/AddressSet.sol +1 -1
  402. package/contracts/type/Amount.sol +128 -0
  403. package/contracts/{types → type}/Blocknumber.sol +21 -3
  404. package/contracts/type/ClaimId.sol +75 -0
  405. package/contracts/{types → type}/DistributorType.sol +2 -2
  406. package/contracts/{types → type}/Fee.sol +33 -23
  407. package/contracts/{types → type}/NftId.sol +21 -15
  408. package/contracts/{types → type}/NftIdSet.sol +2 -2
  409. package/contracts/type/ObjectType.sol +241 -0
  410. package/contracts/type/PayoutId.sol +82 -0
  411. package/contracts/{types → type}/Referral.sol +5 -1
  412. package/contracts/type/RequestId.sol +75 -0
  413. package/contracts/{types → type}/RiskId.sol +1 -1
  414. package/contracts/type/RoleId.sol +201 -0
  415. package/contracts/type/Seconds.sol +81 -0
  416. package/contracts/type/Selector.sol +102 -0
  417. package/contracts/{types → type}/StateId.sol +34 -4
  418. package/contracts/type/String.sol +53 -0
  419. package/contracts/{types → type}/Timestamp.sol +23 -14
  420. package/contracts/{types → type}/UFixed.sol +1 -0
  421. package/contracts/{types → type}/Version.sol +2 -1
  422. package/package.json +5 -5
  423. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  424. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  425. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  426. package/artifacts/contracts/components/IComponent.sol/IComponent.json +0 -502
  427. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  428. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  429. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  430. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  431. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  432. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  433. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  434. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  435. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  436. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  437. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  438. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  439. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  440. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  441. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  442. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  443. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  444. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  445. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  446. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  447. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  448. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  449. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  450. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  451. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  452. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  453. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  454. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  455. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  456. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  457. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  458. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  459. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  460. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  461. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  462. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  463. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  464. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  465. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  466. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  467. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  468. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  469. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  470. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  471. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  472. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  473. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1034
  474. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  475. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  476. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  477. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  478. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  479. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  480. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  481. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  482. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  483. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  484. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  485. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  486. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1167
  487. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  488. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -449
  489. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  490. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -772
  491. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  492. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -437
  493. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  494. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  495. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  496. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  497. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  498. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  499. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1227
  500. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  501. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -505
  502. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  503. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -806
  504. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  505. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -437
  506. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  507. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -856
  508. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  509. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -437
  510. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  511. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  512. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  513. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  514. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  515. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  516. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  517. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -313
  518. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  519. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  520. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  521. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -608
  522. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  523. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  524. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  525. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  526. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  527. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  528. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  529. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  530. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  531. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  532. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  533. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  534. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  535. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  536. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  537. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  538. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  539. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  540. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  541. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  542. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  543. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  544. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  545. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  546. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  547. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  548. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  549. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  550. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  551. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  552. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  553. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  554. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  555. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  556. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  557. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  558. package/contracts/components/Component.sol +0 -247
  559. package/contracts/components/Distribution.sol +0 -143
  560. package/contracts/components/IComponent.sol +0 -50
  561. package/contracts/components/IDistributionComponent.sol +0 -47
  562. package/contracts/components/IPoolComponent.sol +0 -77
  563. package/contracts/components/IProductComponent.sol +0 -39
  564. package/contracts/components/Pool.sol +0 -257
  565. package/contracts/components/Product.sol +0 -263
  566. package/contracts/experiment/cloning/Cloner.sol +0 -47
  567. package/contracts/experiment/errors/Require.sol +0 -38
  568. package/contracts/experiment/errors/Revert.sol +0 -44
  569. package/contracts/experiment/inheritance/A.sol +0 -53
  570. package/contracts/experiment/inheritance/B.sol +0 -28
  571. package/contracts/experiment/inheritance/C.sol +0 -34
  572. package/contracts/experiment/inheritance/IA.sol +0 -13
  573. package/contracts/experiment/inheritance/IB.sol +0 -10
  574. package/contracts/experiment/inheritance/IC.sol +0 -12
  575. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  576. package/contracts/experiment/statemachine/ISM.sol +0 -25
  577. package/contracts/experiment/statemachine/SM.sol +0 -57
  578. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  579. package/contracts/experiment/types/TypeA.sol +0 -47
  580. package/contracts/experiment/types/TypeB.sol +0 -29
  581. package/contracts/instance/InstanceAccessManager.sol +0 -298
  582. package/contracts/instance/base/ComponentService.sol +0 -134
  583. package/contracts/instance/base/KeyValueStore.sol +0 -172
  584. package/contracts/instance/module/ISetup.sol +0 -46
  585. package/contracts/instance/module/ITreasury.sol +0 -23
  586. package/contracts/instance/service/BundleService.sol +0 -299
  587. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  588. package/contracts/instance/service/DistributionService.sol +0 -106
  589. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  590. package/contracts/instance/service/IBundleService.sol +0 -54
  591. package/contracts/instance/service/IDistributionService.sol +0 -12
  592. package/contracts/instance/service/IPolicyService.sol +0 -94
  593. package/contracts/instance/service/IPoolService.sol +0 -20
  594. package/contracts/instance/service/IProductService.sol +0 -40
  595. package/contracts/instance/service/PolicyService.sol +0 -519
  596. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  597. package/contracts/instance/service/PoolService.sol +0 -109
  598. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  599. package/contracts/instance/service/ProductService.sol +0 -232
  600. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  601. package/contracts/registry/RegistryAccessManager.sol +0 -216
  602. package/contracts/shared/ContractDeployerLib.sol +0 -72
  603. package/contracts/test/TestFee.sol +0 -25
  604. package/contracts/test/TestRegisterable.sol +0 -18
  605. package/contracts/test/TestRoleId.sol +0 -14
  606. package/contracts/test/TestService.sol +0 -25
  607. package/contracts/test/TestVersion.sol +0 -44
  608. package/contracts/test/TestVersionable.sol +0 -17
  609. package/contracts/test/Usdc.sol +0 -26
  610. package/contracts/types/ChainId.sol +0 -38
  611. package/contracts/types/NumberId.sol +0 -52
  612. package/contracts/types/ObjectType.sol +0 -152
  613. package/contracts/types/RoleId.sol +0 -90
  614. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,377 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {Amount, AmountLib} from "../type/Amount.sol";
7
+ import {ClaimId} from "../type/ClaimId.sol";
8
+ import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
9
+ import {Fee, FeeLib} from "../type/Fee.sol";
10
+ import {IRisk} from "../instance/module/IRisk.sol";
11
+ import {IApplicationService} from "./IApplicationService.sol";
12
+ import {IComponentService} from "../shared/IComponentService.sol";
13
+ import {IPolicyService} from "./IPolicyService.sol";
14
+ import {IProductService} from "./IProductService.sol";
15
+ import {IClaimService} from "./IClaimService.sol";
16
+ import {IPricingService} from "./IPricingService.sol";
17
+ import {IProductComponent} from "./IProductComponent.sol";
18
+ import {NftId, NftIdLib} from "../type/NftId.sol";
19
+ import {PayoutId} from "../type/PayoutId.sol";
20
+ import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE } from "../type/ObjectType.sol";
21
+ import {ReferralId} from "../type/Referral.sol";
22
+ import {RiskId, RiskIdLib} from "../type/RiskId.sol";
23
+ import {Seconds} from "../type/Seconds.sol";
24
+ import {StateId} from "../type/StateId.sol";
25
+ import {Timestamp} from "../type/Timestamp.sol";
26
+
27
+ import {TokenHandler} from "../shared/TokenHandler.sol";
28
+
29
+ import {InstanceReader} from "../instance/InstanceReader.sol";
30
+ import {IPolicy} from "../instance/module/IPolicy.sol";
31
+ import {IComponents} from "../instance/module/IComponents.sol";
32
+ import {Pool} from "../pool/Pool.sol";
33
+ import {Distribution} from "../distribution/Distribution.sol";
34
+
35
+ abstract contract Product is
36
+ InstanceLinkedComponent,
37
+ IProductComponent
38
+ {
39
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.Product")) - 1)) & ~bytes32(uint256(0xff));
40
+ bytes32 public constant PRODUCT_STORAGE_LOCATION_V1 = 0x0bb7aafdb8e380f81267337bc5b5dfdf76e6d3a380ecadb51ec665246d9d6800;
41
+
42
+ struct ProductStorage {
43
+ IProductService _productService;
44
+ IApplicationService _applicationService;
45
+ IPolicyService _policyService;
46
+ IClaimService _claimService;
47
+ IPricingService _pricingService;
48
+ IComponentService _componentService;
49
+ NftId _poolNftId;
50
+ NftId _distributionNftId;
51
+ Pool _pool;
52
+ Distribution _distribution;
53
+ }
54
+
55
+ function initializeProduct(
56
+ address registry,
57
+ NftId instanceNftId,
58
+ address initialOwner,
59
+ string memory name,
60
+ address token,
61
+ bool isInterceptor,
62
+ address pool,
63
+ address distribution,
64
+ bytes memory registryData, // writeonly data that will saved in the object info record of the registry
65
+ bytes memory componentData // writeonly data that will saved in the object info record of the registry
66
+ )
67
+ public
68
+ virtual
69
+ onlyInitializing()
70
+ {
71
+ initializeInstanceLinkedComponent(registry, instanceNftId, name, token, PRODUCT(), isInterceptor, initialOwner, registryData, componentData);
72
+
73
+ ProductStorage storage $ = _getProductStorage();
74
+ // TODO add validation
75
+ // TODO refactor to go via registry ?
76
+ $._productService = IProductService(_getServiceAddress(PRODUCT()));
77
+ $._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
78
+ $._policyService = IPolicyService(_getServiceAddress(POLICY()));
79
+ $._claimService = IClaimService(_getServiceAddress(CLAIM()));
80
+ $._pricingService = IPricingService(_getServiceAddress(PRICE()));
81
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
82
+ $._pool = Pool(pool);
83
+ $._distribution = Distribution(distribution);
84
+ $._poolNftId = getRegistry().getNftId(pool);
85
+ $._distributionNftId = getRegistry().getNftId(distribution);
86
+
87
+ registerInterface(type(IProductComponent).interfaceId);
88
+ }
89
+
90
+
91
+ function register()
92
+ external
93
+ virtual
94
+ onlyOwner()
95
+ {
96
+ _getProductStorage()._componentService.registerProduct();
97
+ }
98
+
99
+
100
+ function setFees(
101
+ Fee memory productFee,
102
+ Fee memory processingFee
103
+ )
104
+ external
105
+ onlyOwner
106
+ restricted()
107
+ override
108
+ {
109
+ _getProductStorage()._componentService.setProductFees(productFee, processingFee);
110
+ }
111
+
112
+ function _createRisk(
113
+ RiskId id,
114
+ bytes memory data
115
+ ) internal {
116
+ _getProductService().createRisk(
117
+ id,
118
+ data
119
+ );
120
+ }
121
+
122
+ function _updateRisk(
123
+ RiskId id,
124
+ bytes memory data
125
+ ) internal {
126
+ _getProductService().updateRisk(
127
+ id,
128
+ data
129
+ );
130
+ }
131
+
132
+ function _updateRiskState(
133
+ RiskId id,
134
+ StateId state
135
+ ) internal {
136
+ _getProductService().updateRiskState(
137
+ id,
138
+ state
139
+ );
140
+ }
141
+
142
+ function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
143
+ return getInstance().getInstanceReader().getRiskInfo(id);
144
+ }
145
+
146
+ function _createApplication(
147
+ address applicationOwner,
148
+ RiskId riskId,
149
+ Amount sumInsuredAmount,
150
+ Seconds lifetime,
151
+ NftId bundleNftId,
152
+ ReferralId referralId,
153
+ bytes memory applicationData
154
+ )
155
+ internal
156
+ returns (NftId applicationNftId)
157
+ {
158
+ return _getProductStorage()._applicationService.create(
159
+ applicationOwner,
160
+ riskId,
161
+ sumInsuredAmount,
162
+ lifetime,
163
+ bundleNftId,
164
+ referralId,
165
+ applicationData
166
+ );
167
+ }
168
+
169
+ function _collateralize(
170
+ NftId policyNftId,
171
+ bool requirePremiumPayment,
172
+ Timestamp activateAt
173
+ )
174
+ internal
175
+ {
176
+ _getProductStorage()._policyService.collateralize(
177
+ policyNftId,
178
+ requirePremiumPayment,
179
+ activateAt);
180
+ }
181
+
182
+ function _collectPremium(
183
+ NftId policyNftId,
184
+ Timestamp activateAt
185
+ )
186
+ internal
187
+ {
188
+ _getProductStorage()._policyService.collectPremium(
189
+ policyNftId,
190
+ activateAt);
191
+ }
192
+
193
+ function _activate(
194
+ NftId policyNftId,
195
+ Timestamp activateAt
196
+ )
197
+ internal
198
+ {
199
+ _getProductStorage()._policyService.activate(
200
+ policyNftId,
201
+ activateAt);
202
+ }
203
+
204
+ function _close(
205
+ NftId policyNftId
206
+ )
207
+ internal
208
+ {
209
+ _getProductStorage()._policyService.close(
210
+ policyNftId);
211
+ }
212
+
213
+ function _submitClaim(
214
+ NftId policyNftId,
215
+ Amount claimAmount,
216
+ bytes memory claimData
217
+ )
218
+ internal
219
+ returns(ClaimId)
220
+ {
221
+ return _getProductStorage()._claimService.submit(
222
+ policyNftId,
223
+ claimAmount,
224
+ claimData);
225
+ }
226
+
227
+ function _confirmClaim(
228
+ NftId policyNftId,
229
+ ClaimId claimId,
230
+ Amount confirmedAmount,
231
+ bytes memory data
232
+ )
233
+ internal
234
+ {
235
+ _getProductStorage()._claimService.confirm(
236
+ policyNftId,
237
+ claimId,
238
+ confirmedAmount,
239
+ data);
240
+ }
241
+
242
+ function _declineClaim(
243
+ NftId policyNftId,
244
+ ClaimId claimId,
245
+ bytes memory data
246
+ )
247
+ internal
248
+ {
249
+ _getProductStorage()._claimService.decline(
250
+ policyNftId,
251
+ claimId,
252
+ data);
253
+ }
254
+
255
+ function _closeClaim(
256
+ NftId policyNftId,
257
+ ClaimId claimId
258
+ )
259
+ internal
260
+ {
261
+ _getProductStorage()._claimService.close(
262
+ policyNftId,
263
+ claimId);
264
+ }
265
+
266
+ function _createPayout(
267
+ NftId policyNftId,
268
+ ClaimId claimId,
269
+ Amount amount,
270
+ bytes memory data
271
+ )
272
+ internal
273
+ returns (PayoutId)
274
+ {
275
+ return _getProductStorage()._claimService.createPayout(
276
+ policyNftId,
277
+ claimId,
278
+ amount,
279
+ data);
280
+ }
281
+
282
+ function _processPayout(
283
+ NftId policyNftId,
284
+ PayoutId payoutId
285
+ )
286
+ internal
287
+ {
288
+ _getProductStorage()._claimService.processPayout(
289
+ policyNftId,
290
+ payoutId);
291
+ }
292
+
293
+ function calculatePremium(
294
+ Amount sumInsuredAmount,
295
+ RiskId riskId,
296
+ Seconds lifetime,
297
+ bytes memory applicationData,
298
+ NftId bundleNftId,
299
+ ReferralId referralId
300
+ )
301
+ external
302
+ view
303
+ override
304
+ returns (Amount premiumAmount)
305
+ {
306
+ IPolicy.Premium memory premium = _getProductStorage()._pricingService.calculatePremium(
307
+ getNftId(),
308
+ riskId,
309
+ sumInsuredAmount,
310
+ lifetime,
311
+ applicationData,
312
+ bundleNftId,
313
+ referralId
314
+ );
315
+
316
+ return AmountLib.toAmount(premium.premiumAmount);
317
+ }
318
+
319
+ function calculateNetPremium(
320
+ Amount sumInsuredAmount,
321
+ RiskId riskId,
322
+ Seconds lifetime,
323
+ bytes memory applicationData
324
+ )
325
+ external
326
+ view
327
+ virtual override
328
+ returns (Amount netPremiumAmount)
329
+ {
330
+ // default 10% of sum insured
331
+ return AmountLib.toAmount(sumInsuredAmount.toInt() / 10);
332
+ }
333
+
334
+
335
+ function getInitialProductInfo()
336
+ public
337
+ virtual
338
+ view
339
+ returns (IComponents.ProductInfo memory poolInfo)
340
+ {
341
+ ProductStorage storage $ = _getProductStorage();
342
+
343
+ return IComponents.ProductInfo({
344
+ distributionNftId: $._distributionNftId,
345
+ poolNftId: $._poolNftId,
346
+ productFee: FeeLib.zero(),
347
+ processingFee: FeeLib.zero(),
348
+ distributionFee: FeeLib.zero(),
349
+ minDistributionOwnerFee: FeeLib.zero(),
350
+ poolFee: FeeLib.zero(),
351
+ stakingFee: FeeLib.zero(),
352
+ performanceFee: FeeLib.zero()
353
+ });
354
+ }
355
+
356
+ function getPoolNftId() external view override returns (NftId poolNftId) {
357
+ return getRegistry().getNftId(address(_getProductStorage()._pool));
358
+ }
359
+
360
+ function getDistributionNftId() external view override returns (NftId distributionNftId) {
361
+ return getRegistry().getNftId(address(_getProductStorage()._distribution));
362
+ }
363
+
364
+ function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
365
+ return RiskIdLib.toRiskId(riskName);
366
+ }
367
+
368
+ function _getProductStorage() private pure returns (ProductStorage storage $) {
369
+ assembly {
370
+ $.slot := PRODUCT_STORAGE_LOCATION_V1
371
+ }
372
+ }
373
+
374
+ function _getProductService() internal view returns (IProductService) {
375
+ return _getProductStorage()._productService;
376
+ }
377
+ }
@@ -0,0 +1,124 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IRegistry} from "../registry/IRegistry.sol";
5
+ import {IProductComponent} from "./IProductComponent.sol";
6
+ import {Product} from "./Product.sol";
7
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.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
+ import {IProductService} from "./IProductService.sol";
15
+ import {IComponents} from "../instance/module/IComponents.sol";
16
+
17
+ import {TokenHandler} from "../shared/TokenHandler.sol";
18
+
19
+ import {IVersionable} from "../shared/IVersionable.sol";
20
+ import {Versionable} from "../shared/Versionable.sol";
21
+
22
+ import {Timestamp, zeroTimestamp} from "../type/Timestamp.sol";
23
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
24
+ import {Blocknumber, blockNumber} from "../type/Blocknumber.sol";
25
+ import {ObjectType, INSTANCE, PRODUCT, POOL, POLICY, REGISTRY} from "../type/ObjectType.sol";
26
+ import {APPLIED, ACTIVE, KEEP_STATE} from "../type/StateId.sol";
27
+ import {NftId, NftIdLib} from "../type/NftId.sol";
28
+ import {Fee, FeeLib} from "../type/Fee.sol";
29
+ import {ReferralId} from "../type/Referral.sol";
30
+ import {RiskId} from "../type/RiskId.sol";
31
+ import {StateId} from "../type/StateId.sol";
32
+ import {Version, VersionLib} from "../type/Version.sol";
33
+ import {RoleId, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
34
+
35
+ import {IService} from "../shared/IService.sol";
36
+ import {Service} from "../shared/Service.sol";
37
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
38
+ import {IInstanceService} from "../instance/IInstanceService.sol";
39
+ import {IProductService} from "./IProductService.sol";
40
+ import {IRegistryService} from "../registry/IRegistryService.sol";
41
+ import {InstanceReader} from "../instance/InstanceReader.sol";
42
+ import {IPoolService} from "../pool/PoolService.sol";
43
+
44
+ contract ProductService is
45
+ ComponentVerifyingService,
46
+ IProductService
47
+ {
48
+ IInstanceService private _instanceService;
49
+ IPoolService internal _poolService;
50
+ IRegistryService private _registryService;
51
+
52
+ event LogProductServiceSender(address sender);
53
+
54
+ function _initialize(
55
+ address owner,
56
+ bytes memory data
57
+ )
58
+ internal
59
+ initializer
60
+ virtual override
61
+ {
62
+ (
63
+ address registryAddress,,
64
+ //address managerAddress
65
+ address authority
66
+ ) = abi.decode(data, (address, address, address));
67
+
68
+ initializeService(registryAddress, authority, owner);
69
+
70
+ _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
71
+ _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
72
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
73
+
74
+ registerInterface(type(IProductService).interfaceId);
75
+ }
76
+
77
+
78
+ function createRisk(
79
+ RiskId riskId,
80
+ bytes memory data
81
+ )
82
+ external
83
+ override
84
+ {
85
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
86
+ IRisk.RiskInfo memory riskInfo = IRisk.RiskInfo(productNftId, data);
87
+
88
+ instance.getInstanceStore().createRisk(
89
+ riskId,
90
+ riskInfo
91
+ );
92
+ }
93
+
94
+
95
+ function updateRisk(
96
+ RiskId riskId,
97
+ bytes memory data
98
+ )
99
+ external
100
+ {
101
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
102
+ InstanceReader instanceReader = instance.getInstanceReader();
103
+
104
+ IRisk.RiskInfo memory riskInfo = instanceReader.getRiskInfo(riskId);
105
+ riskInfo.data = data;
106
+ instance.getInstanceStore().updateRisk(riskId, riskInfo, KEEP_STATE());
107
+ }
108
+
109
+
110
+ function updateRiskState(
111
+ RiskId riskId,
112
+ StateId state
113
+ )
114
+ external
115
+ {
116
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
117
+ instance.getInstanceStore().updateRiskState(riskId, state);
118
+ }
119
+
120
+
121
+ function _getDomain() internal pure override returns(ObjectType) {
122
+ return PRODUCT();
123
+ }
124
+ }
@@ -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
+ }
@@ -15,6 +15,7 @@ contract ChainNft is ERC721Enumerable {
15
15
  uint256 public constant PROTOCOL_NFT_ID = 1101;
16
16
  uint256 public constant GLOBAL_REGISTRY_ID = 2101;
17
17
 
18
+ // TODO rename errors to error pattern: CallerNotRegistry -> ErrorCallerNotRegistry etc.
18
19
  // custom errors
19
20
  error CallerNotRegistry(address caller);
20
21
  error RegistryAddressZero();
@@ -59,7 +60,13 @@ contract ChainNft is ERC721Enumerable {
59
60
  }
60
61
 
61
62
  _chainIdMultiplier = 10 ** _chainIdDigits;
62
- _idNext = 3;
63
+
64
+ // the first object registered through normal registration starts with id 4
65
+ // 1 -> protocol
66
+ // 2 -> registry
67
+ // 3 -> staking
68
+ // >= 4 -> all other objects
69
+ _idNext = 4;
63
70
  }
64
71
 
65
72
  /**
@@ -95,6 +102,10 @@ contract ChainNft is ERC721Enumerable {
95
102
 
96
103
  _totalMinted++;
97
104
  _safeMint(to, tokenId);
105
+
106
+ if(interceptor != address(0)) {
107
+ ITransferInterceptor(interceptor).nftMint(to, tokenId);
108
+ }
98
109
  }
99
110
 
100
111
 
@@ -195,6 +206,10 @@ contract ChainNft is ERC721Enumerable {
195
206
  _chainIdDigits;
196
207
  }
197
208
 
209
+ function getNextTokenId() external view returns (uint256) {
210
+ return calculateTokenId(_idNext);
211
+ }
212
+
198
213
  function _getNextTokenId() private returns (uint256 id) {
199
214
  id = calculateTokenId(_idNext);
200
215
  _idNext++;
@@ -3,11 +3,11 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
 
6
- import {ChainNft} from "./ChainNft.sol";
7
- import {NftId} from "../types/NftId.sol";
8
- import {ObjectType} from "../types/ObjectType.sol";
9
- import {VersionPart} from "../types/Version.sol";
10
- 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";
11
11
 
12
12
  interface IRegistry is IERC165 {
13
13
 
@@ -15,20 +15,20 @@ interface IRegistry is IERC165 {
15
15
  event LogServiceRegistration(VersionPart majorVersion, ObjectType domain);
16
16
 
17
17
  // registerService()
18
- error CallerNotReleaseManager();
19
- error ServiceAlreadyRegistered(address service);
18
+ error ErrorRegistryCallerNotReleaseManager();
19
+ error ErrorRegistryDomainZero(address service);
20
+ error ErrorRegistryDomainAlreadyRegistered(address service, VersionPart version, ObjectType domain);
20
21
 
21
22
  // register()
22
- error CallerNotRegistryService();
23
- error ServiceRegistration();
23
+ error ErrorRegistryCallerNotRegistryService();
24
24
 
25
25
  // registerWithCustomTypes()
26
- error CoreTypeRegistration();
26
+ error ErrorRegistryCoreTypeRegistration();
27
27
 
28
28
  // _register()
29
- error ZeroParentAddress();
30
- error InvalidTypesCombination(ObjectType objectType, ObjectType parentType);
31
- error ContractAlreadyRegistered(address objectAddress);
29
+ error ErrorRegistryParentAddressZero();
30
+ error ErrorRegistryTypesCombinationInvalid(ObjectType objectType, ObjectType parentType);
31
+ error ErrorRegistryContractAlreadyRegistered(address objectAddress);
32
32
 
33
33
  struct ObjectInfo {
34
34
  NftId nftId;
@@ -38,13 +38,22 @@ interface IRegistry is IERC165 {
38
38
  address objectAddress;
39
39
  address initialOwner;
40
40
  bytes data;
41
- }// TODO delete nftId and initialOwner(if not used) from struct
42
- // TODO strong disagree, keep nftId there (lets keep get object info return object consistent)
41
+ }
42
+
43
43
 
44
44
  struct ReleaseInfo {
45
+ VersionPart version;
46
+ bytes32 salt;
47
+ address[] addresses;
48
+ string[] names;
49
+ RoleId[][] serviceRoles;
50
+ string[][] serviceRoleNames;
51
+ RoleId[][] functionRoles;
52
+ string[][] functionRoleNames;
53
+ bytes4[][][] selectors;
45
54
  ObjectType[] domains;
46
- Timestamp createdAt;
47
- //Timestamp updatedAt;
55
+ Timestamp activatedAt;
56
+ Timestamp disabledAt;
48
57
  }
49
58
 
50
59
  function registerService(
@@ -67,8 +76,6 @@ interface IRegistry is IERC165 {
67
76
 
68
77
  function getObjectCount() external view returns (uint256);
69
78
 
70
- function getNftId() external view returns (NftId nftId);
71
-
72
79
  function getNftId(address objectAddress) external view returns (NftId nftId);
73
80
 
74
81
  function ownerOf(NftId nftId) external view returns (address);
@@ -85,14 +92,33 @@ interface IRegistry is IERC165 {
85
92
 
86
93
  function isRegisteredService(address contractAddress) external view returns (bool);
87
94
 
88
- function isValidRelease(VersionPart version) external view returns (bool);
95
+ function isRegisteredComponent(address object) external view returns (bool);
96
+
97
+ function isActiveRelease(VersionPart version) external view returns (bool);
89
98
 
90
99
  function getServiceAddress(
91
100
  ObjectType serviceDomain,
92
101
  VersionPart releaseVersion
93
102
  ) external view returns (address serviceAddress);
94
103
 
95
- function getChainNft() external view returns (ChainNft);
104
+ function getProtocolNftId() external view returns (NftId protocolNftId);
105
+
106
+ function getNftId() external view returns (NftId nftId);
96
107
 
97
108
  function getOwner() external view returns (address);
109
+
110
+ // TODO refactor the address getters below to contract getters
111
+ function getChainNftAddress() external view returns (address);
112
+
113
+ function getReleaseManagerAddress() external view returns (address);
114
+
115
+ function getReleaseAccessManagerAddress(VersionPart version) external view returns (address);
116
+
117
+ function getStakingAddress() external view returns (address);
118
+
119
+ function getTokenRegistryAddress() external view returns (address);
120
+
121
+ function getRegistryAdminAddress() external view returns (address);
122
+
123
+ function getAuthority() external view returns (address);
98
124
  }