@etherisc/gif-next 0.0.2-abde86b-349 → 0.0.2-acc7efa-771

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 (398) hide show
  1. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +96 -37
  3. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  4. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  6. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  7. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -13
  9. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  11. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  13. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  14. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +154 -94
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +77 -17
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +94 -58
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +120 -86
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +72 -60
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +81 -58
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +29 -0
  31. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  32. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  33. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  34. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1501 -0
  35. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  36. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
  37. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  38. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2042 -0
  39. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  41. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +156 -96
  45. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +137 -77
  47. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +213 -135
  49. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +518 -171
  51. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  53. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
  55. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
  57. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  58. package/artifacts/contracts/instance/Instance.sol/Instance.json +62 -40
  59. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +148 -118
  61. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  62. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
  63. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +113 -130
  65. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +72 -130
  67. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +48 -40
  69. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +174 -103
  71. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  73. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  76. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  77. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  78. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  79. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  80. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  86. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  88. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +135 -75
  89. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +77 -17
  91. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  92. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +76 -53
  94. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  96. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +89 -53
  98. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +86 -47
  100. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +48 -36
  102. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +89 -71
  104. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
  106. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  107. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +180 -82
  108. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +90 -58
  110. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  111. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +53 -0
  112. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  113. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +76 -58
  114. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  115. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +136 -120
  116. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  117. package/artifacts/contracts/pool/Pool.sol/Pool.json +89 -58
  118. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  119. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +209 -180
  120. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +63 -47
  122. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  123. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +66 -32
  124. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  125. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -33
  126. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  127. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +134 -54
  128. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  129. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +77 -17
  130. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  131. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +167 -82
  132. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  133. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +82 -58
  134. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  135. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +29 -0
  136. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  137. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +56 -0
  138. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  139. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +58 -0
  140. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  141. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +80 -51
  142. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  143. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +121 -54
  144. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  145. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +29 -0
  146. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  147. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +139 -60
  148. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +67 -47
  150. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  151. package/artifacts/contracts/product/PricingService.sol/PricingService.json +149 -107
  152. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  153. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +61 -45
  154. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  155. package/artifacts/contracts/product/Product.sol/Product.json +134 -54
  156. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  157. package/artifacts/contracts/product/RiskService.sol/RiskService.json +60 -26
  158. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  159. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +42 -30
  160. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  161. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  162. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +48 -15
  164. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  165. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
  166. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  167. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  168. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  169. package/artifacts/contracts/registry/Registry.sol/Registry.json +92 -51
  170. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  171. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +193 -165
  172. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  173. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +145 -61
  174. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +41 -29
  176. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  177. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  178. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  179. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +121 -223
  180. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  181. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  182. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  183. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  184. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  185. package/artifacts/contracts/shared/Component.sol/Component.json +68 -28
  186. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  187. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +350 -155
  188. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  189. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +83 -63
  190. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  191. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +42 -0
  192. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  193. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +2 -2
  194. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -28
  196. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +321 -19
  198. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +76 -53
  200. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  202. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  203. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  204. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  205. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  206. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  207. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  208. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  209. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  210. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  211. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  212. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  213. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  214. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +89 -53
  215. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  216. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  217. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  218. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  219. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  220. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  221. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  222. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +18 -2
  223. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  224. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  225. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  226. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +66 -8
  227. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  228. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  229. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  230. package/artifacts/contracts/shared/Service.sol/Service.json +42 -0
  231. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  232. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  233. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  234. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
  235. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  236. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +55 -28
  237. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  238. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  239. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
  241. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  242. package/artifacts/contracts/staking/Staking.sol/Staking.json +138 -78
  243. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  245. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  246. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +68 -42
  247. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  248. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
  249. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  250. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +66 -53
  251. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  252. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +45 -33
  253. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  254. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +144 -103
  255. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  256. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
  257. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  258. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
  260. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  263. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  265. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  267. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  268. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  269. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  271. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  272. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  273. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  275. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  277. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  279. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  281. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  283. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  285. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  290. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  296. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  297. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  298. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +28 -12
  299. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  300. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  301. package/contracts/authorization/AccessAdmin.sol +65 -61
  302. package/contracts/authorization/Authorization.sol +106 -38
  303. package/contracts/authorization/IAccess.sol +1 -0
  304. package/contracts/authorization/IAccessAdmin.sol +4 -2
  305. package/contracts/authorization/IAuthorization.sol +13 -7
  306. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  307. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  308. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  309. package/contracts/distribution/BasicDistribution.sol +2 -1
  310. package/contracts/distribution/Distribution.sol +6 -16
  311. package/contracts/distribution/DistributionService.sol +52 -34
  312. package/contracts/distribution/IDistributionComponent.sol +1 -1
  313. package/contracts/examples/fire/DamageLevel.sol +59 -0
  314. package/contracts/examples/fire/FirePool.sol +87 -0
  315. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  316. package/contracts/examples/fire/FireProduct.sol +428 -0
  317. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  318. package/contracts/examples/fire/FireUSD.sol +26 -0
  319. package/contracts/examples/unpermissioned/SimpleDistribution.sol +4 -4
  320. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
  321. package/contracts/examples/unpermissioned/SimplePool.sol +11 -6
  322. package/contracts/examples/unpermissioned/SimpleProduct.sol +17 -23
  323. package/contracts/instance/IInstance.sol +4 -1
  324. package/contracts/instance/IInstanceService.sol +0 -20
  325. package/contracts/instance/Instance.sol +20 -17
  326. package/contracts/instance/InstanceAdmin.sol +16 -27
  327. package/contracts/instance/InstanceAuthorizationV3.sol +9 -19
  328. package/contracts/instance/InstanceReader.sol +9 -33
  329. package/contracts/instance/InstanceService.sol +13 -68
  330. package/contracts/instance/module/IComponents.sol +7 -4
  331. package/contracts/oracle/BasicOracle.sol +0 -1
  332. package/contracts/oracle/IOracleService.sol +2 -1
  333. package/contracts/oracle/Oracle.sol +4 -15
  334. package/contracts/oracle/OracleService.sol +37 -27
  335. package/contracts/pool/BasicPool.sol +18 -28
  336. package/contracts/pool/BasicPoolAuthorization.sol +0 -1
  337. package/contracts/pool/BundleService.sol +24 -1
  338. package/contracts/pool/IBundleService.sol +9 -0
  339. package/contracts/pool/IPoolService.sol +2 -6
  340. package/contracts/pool/Pool.sol +17 -41
  341. package/contracts/pool/PoolService.sol +41 -64
  342. package/contracts/product/BasicProduct.sol +8 -12
  343. package/contracts/product/BasicProductAuthorization.sol +0 -1
  344. package/contracts/product/ClaimService.sol +46 -28
  345. package/contracts/product/IClaimService.sol +2 -1
  346. package/contracts/product/IPolicyService.sol +3 -0
  347. package/contracts/product/IPricingService.sol +9 -9
  348. package/contracts/product/IProductComponent.sol +6 -0
  349. package/contracts/product/PolicyService.sol +50 -13
  350. package/contracts/product/PricingService.sol +4 -7
  351. package/contracts/product/Product.sol +54 -55
  352. package/contracts/registry/ChainNft.sol +6 -9
  353. package/contracts/registry/IRegistry.sol +4 -3
  354. package/contracts/registry/IRegistryService.sol +6 -4
  355. package/contracts/registry/ITransferInterceptor.sol +1 -2
  356. package/contracts/registry/Registry.sol +14 -4
  357. package/contracts/registry/RegistryAdmin.sol +7 -23
  358. package/contracts/registry/RegistryService.sol +37 -55
  359. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  360. package/contracts/registry/ReleaseRegistry.sol +201 -191
  361. package/contracts/registry/ServiceAuthorizationV3.sol +14 -19
  362. package/contracts/shared/Component.sol +25 -28
  363. package/contracts/shared/ComponentService.sol +224 -130
  364. package/contracts/shared/ComponentVerifyingService.sol +22 -12
  365. package/contracts/shared/IComponent.sol +6 -2
  366. package/contracts/shared/IComponentService.sol +25 -13
  367. package/contracts/shared/IInstanceLinkedComponent.sol +3 -11
  368. package/contracts/shared/ILifecycle.sol +3 -1
  369. package/contracts/shared/INftOwnable.sol +2 -0
  370. package/contracts/shared/IRegisterable.sol +11 -0
  371. package/contracts/shared/InstanceLinkedComponent.sol +67 -25
  372. package/contracts/shared/KeyValueStore.sol +1 -1
  373. package/contracts/shared/Lifecycle.sol +15 -4
  374. package/contracts/shared/NftOwnable.sol +19 -3
  375. package/contracts/shared/Registerable.sol +15 -5
  376. package/contracts/shared/Service.sol +4 -7
  377. package/contracts/staking/IStakingService.sol +0 -3
  378. package/contracts/staking/Staking.sol +2 -3
  379. package/contracts/staking/StakingReader.sol +12 -5
  380. package/contracts/staking/StakingService.sol +1 -15
  381. package/contracts/type/Amount.sol +15 -0
  382. package/contracts/type/ClaimId.sol +6 -1
  383. package/contracts/type/NftId.sol +1 -0
  384. package/contracts/type/ObjectType.sol +1 -0
  385. package/contracts/type/RiskId.sol +15 -1
  386. package/contracts/type/RoleId.sol +0 -12
  387. package/contracts/type/StateId.sol +14 -1
  388. package/contracts/upgradeability/ProxyManager.sol +2 -1
  389. package/package.json +2 -1
  390. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  391. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  392. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  393. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  394. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  395. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  396. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  397. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  398. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -3,20 +3,23 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount, AmountLib} from "../type/Amount.sol";
5
5
  import {ClaimId} from "../type/ClaimId.sol";
6
- import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
6
+ import {IComponent} from "../shared/IComponent.sol";
7
7
  import {Fee, FeeLib} from "../type/Fee.sol";
8
8
  import {IRisk} from "../instance/module/IRisk.sol";
9
9
  import {IApplicationService} from "./IApplicationService.sol";
10
10
  import {IAuthorization} from "../authorization/IAuthorization.sol";
11
11
  import {IComponentService} from "../shared/IComponentService.sol";
12
+ import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
13
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
12
14
  import {IPolicyService} from "./IPolicyService.sol";
13
15
  import {IRiskService} from "./IRiskService.sol";
14
16
  import {IClaimService} from "./IClaimService.sol";
15
17
  import {IPricingService} from "./IPricingService.sol";
16
18
  import {IProductComponent} from "./IProductComponent.sol";
17
- import {NftId} from "../type/NftId.sol";
19
+ import {NftId, NftIdLib} from "../type/NftId.sol";
20
+ import {ObjectType, COMPONENT, DISTRIBUTION, ORACLE, POOL, PRODUCT, BUNDLE, APPLICATION, POLICY, CLAIM, PRICE } from "../type/ObjectType.sol";
18
21
  import {PayoutId} from "../type/PayoutId.sol";
19
- import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE } from "../type/ObjectType.sol";
22
+ import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE, BUNDLE } from "../type/ObjectType.sol";
20
23
  import {ReferralId} from "../type/Referral.sol";
21
24
  import {RiskId, RiskIdLib} from "../type/RiskId.sol";
22
25
  import {Seconds} from "../type/Seconds.sol";
@@ -25,8 +28,9 @@ import {Timestamp} from "../type/Timestamp.sol";
25
28
 
26
29
  import {IPolicy} from "../instance/module/IPolicy.sol";
27
30
  import {IComponents} from "../instance/module/IComponents.sol";
28
- import {Pool} from "../pool/Pool.sol";
29
- import {Distribution} from "../distribution/Distribution.sol";
31
+ import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
32
+ import {IOracleComponent} from "../oracle/IOracleComponent.sol";
33
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
30
34
 
31
35
  abstract contract Product is
32
36
  InstanceLinkedComponent,
@@ -36,26 +40,23 @@ abstract contract Product is
36
40
  bytes32 public constant PRODUCT_STORAGE_LOCATION_V1 = 0x0bb7aafdb8e380f81267337bc5b5dfdf76e6d3a380ecadb51ec665246d9d6800;
37
41
 
38
42
  struct ProductStorage {
43
+ IComponents.ProductInfo _productInfo;
44
+ IComponentService _componentService;
39
45
  IRiskService _riskService;
40
46
  IApplicationService _applicationService;
41
47
  IPolicyService _policyService;
42
48
  IClaimService _claimService;
43
49
  IPricingService _pricingService;
44
- IComponentService _componentService;
45
- NftId _poolNftId;
46
- NftId _distributionNftId;
47
- Pool _pool;
48
- Distribution _distribution;
49
50
  }
50
51
 
51
52
 
52
- function register()
53
+ function registerComponent(address component)
53
54
  external
54
55
  virtual
55
56
  onlyOwner()
57
+ returns (NftId componentNftId)
56
58
  {
57
- _getProductStorage()._componentService.registerProduct();
58
- _approveTokenHandler(type(uint256).max);
59
+ return _getProductStorage()._componentService.registerComponent(component);
59
60
  }
60
61
 
61
62
 
@@ -67,6 +68,7 @@ abstract contract Product is
67
68
  external
68
69
  virtual
69
70
  restricted() // pool service role
71
+ onlyNftOfType(policyNftId, POLICY())
70
72
  {
71
73
  // default implementation does nothing
72
74
  }
@@ -83,6 +85,7 @@ abstract contract Product is
83
85
  public
84
86
  view
85
87
  override
88
+ onlyNftOfType(bundleNftId, BUNDLE())
86
89
  returns (Amount premiumAmount)
87
90
  {
88
91
  IPolicy.PremiumInfo memory premium = _getProductStorage()._pricingService.calculatePremium(
@@ -120,35 +123,18 @@ abstract contract Product is
120
123
  view
121
124
  returns (IComponents.ProductInfo memory poolInfo)
122
125
  {
123
- ProductStorage storage $ = _getProductStorage();
124
-
125
- return IComponents.ProductInfo({
126
- distributionNftId: $._distributionNftId,
127
- poolNftId: $._poolNftId,
128
- isProcessingFundedClaims: false,
129
- productFee: FeeLib.zero(),
130
- processingFee: FeeLib.zero(),
131
- distributionFee: FeeLib.zero(),
132
- minDistributionOwnerFee: FeeLib.zero(),
133
- poolFee: FeeLib.zero(),
134
- stakingFee: FeeLib.zero(),
135
- performanceFee: FeeLib.zero()
136
- });
126
+ return _getProductStorage()._productInfo;
137
127
  }
138
128
 
139
129
 
140
130
  function _initializeProduct(
141
131
  address registry,
142
132
  NftId instanceNftId,
143
- IAuthorization authorization,
144
- address initialOwner,
145
133
  string memory name,
146
134
  address token,
147
- bool isInterceptor,
148
- address pool, // switch to pool nft id (#527)
149
- address distribution, // switch to distribution nft id (#527)
150
- // add NftId [] oracleNftIds (#527)
151
- bytes memory registryData, // writeonly data that will saved in the object info record of the registry
135
+ IComponents.ProductInfo memory productInfo,
136
+ IAuthorization authorization,
137
+ address initialOwner,
152
138
  bytes memory componentData // writeonly data that will saved in the object info record of the registry
153
139
  )
154
140
  internal
@@ -162,24 +148,18 @@ abstract contract Product is
162
148
  token,
163
149
  PRODUCT(),
164
150
  authorization,
165
- isInterceptor,
151
+ productInfo.isInterceptingPolicyTransfers,
166
152
  initialOwner,
167
- registryData,
168
153
  componentData);
169
154
 
170
155
  ProductStorage storage $ = _getProductStorage();
171
- // TODO add validation
172
- // TODO refactor to go via registry for all components linked to this product (#527)
156
+ $._productInfo = productInfo;
173
157
  $._riskService = IRiskService(_getServiceAddress(PRODUCT()));
174
158
  $._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
175
159
  $._policyService = IPolicyService(_getServiceAddress(POLICY()));
176
160
  $._claimService = IClaimService(_getServiceAddress(CLAIM()));
177
161
  $._pricingService = IPricingService(_getServiceAddress(PRICE()));
178
162
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
179
- $._pool = Pool(pool);
180
- $._distribution = Distribution(distribution);
181
- $._poolNftId = getRegistry().getNftIdForAddress(pool);
182
- $._distributionNftId = getRegistry().getNftIdForAddress(distribution);
183
163
 
184
164
  _registerInterface(type(IProductComponent).interfaceId);
185
165
  }
@@ -199,8 +179,11 @@ abstract contract Product is
199
179
  function _createRisk(
200
180
  RiskId id,
201
181
  bytes memory data
202
- ) internal {
203
- _getRiskService().createRisk(
182
+ )
183
+ internal
184
+ virtual
185
+ {
186
+ _getProductStorage()._riskService.createRisk(
204
187
  id,
205
188
  data
206
189
  );
@@ -209,8 +192,11 @@ abstract contract Product is
209
192
  function _updateRisk(
210
193
  RiskId id,
211
194
  bytes memory data
212
- ) internal {
213
- _getRiskService().updateRisk(
195
+ )
196
+ internal
197
+ virtual
198
+ {
199
+ _getProductStorage()._riskService.updateRisk(
214
200
  id,
215
201
  data
216
202
  );
@@ -219,15 +205,18 @@ abstract contract Product is
219
205
  function _updateRiskState(
220
206
  RiskId id,
221
207
  StateId state
222
- ) internal {
223
- _getRiskService().updateRiskState(
208
+ )
209
+ internal
210
+ virtual
211
+ {
212
+ _getProductStorage()._riskService.updateRiskState(
224
213
  id,
225
214
  state
226
215
  );
227
216
  }
228
217
 
229
218
 
230
- function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
219
+ function _getRiskInfo(RiskId id) internal virtual view returns (IRisk.RiskInfo memory info) {
231
220
  return getInstance().getInstanceReader().getRiskInfo(id);
232
221
  }
233
222
 
@@ -243,6 +232,7 @@ abstract contract Product is
243
232
  bytes memory applicationData
244
233
  )
245
234
  internal
235
+ virtual
246
236
  returns (NftId applicationNftId)
247
237
  {
248
238
  return _getProductStorage()._applicationService.create(
@@ -262,6 +252,7 @@ abstract contract Product is
262
252
  Timestamp activateAt
263
253
  )
264
254
  internal
255
+ virtual
265
256
  {
266
257
  _getProductStorage()._policyService.createPolicy(
267
258
  applicationNftId,
@@ -272,6 +263,7 @@ abstract contract Product is
272
263
  NftId policyNftId
273
264
  )
274
265
  internal
266
+ virtual
275
267
  {
276
268
  _getProductStorage()._policyService.decline(
277
269
  policyNftId);
@@ -282,6 +274,7 @@ abstract contract Product is
282
274
  Timestamp expireAt
283
275
  )
284
276
  internal
277
+ virtual
285
278
  returns (Timestamp expiredAt)
286
279
  {
287
280
  expiredAt = _getProductStorage()._policyService.expire(policyNftId, expireAt);
@@ -292,6 +285,7 @@ abstract contract Product is
292
285
  Timestamp activateAt
293
286
  )
294
287
  internal
288
+ virtual
295
289
  {
296
290
  _getProductStorage()._policyService.collectPremium(
297
291
  policyNftId,
@@ -303,6 +297,7 @@ abstract contract Product is
303
297
  Timestamp activateAt
304
298
  )
305
299
  internal
300
+ virtual
306
301
  {
307
302
  _getProductStorage()._policyService.activate(
308
303
  policyNftId,
@@ -313,6 +308,7 @@ abstract contract Product is
313
308
  NftId policyNftId
314
309
  )
315
310
  internal
311
+ virtual
316
312
  {
317
313
  _getProductStorage()._policyService.close(
318
314
  policyNftId);
@@ -324,6 +320,7 @@ abstract contract Product is
324
320
  bytes memory claimData
325
321
  )
326
322
  internal
323
+ virtual
327
324
  returns(ClaimId)
328
325
  {
329
326
  return _getProductStorage()._claimService.submit(
@@ -339,6 +336,7 @@ abstract contract Product is
339
336
  bytes memory data
340
337
  )
341
338
  internal
339
+ virtual
342
340
  {
343
341
  _getProductStorage()._claimService.confirm(
344
342
  policyNftId,
@@ -353,6 +351,7 @@ abstract contract Product is
353
351
  bytes memory data
354
352
  )
355
353
  internal
354
+ virtual
356
355
  {
357
356
  _getProductStorage()._claimService.decline(
358
357
  policyNftId,
@@ -365,6 +364,7 @@ abstract contract Product is
365
364
  ClaimId claimId
366
365
  )
367
366
  internal
367
+ virtual
368
368
  {
369
369
  _getProductStorage()._claimService.close(
370
370
  policyNftId,
@@ -378,6 +378,7 @@ abstract contract Product is
378
378
  bytes memory data
379
379
  )
380
380
  internal
381
+ virtual
381
382
  returns (PayoutId)
382
383
  {
383
384
  return _getProductStorage()._claimService.createPayout(
@@ -395,6 +396,7 @@ abstract contract Product is
395
396
  bytes memory data
396
397
  )
397
398
  internal
399
+ virtual
398
400
  returns (PayoutId)
399
401
  {
400
402
  return _getProductStorage()._claimService.createPayoutForBeneficiary(
@@ -410,23 +412,20 @@ abstract contract Product is
410
412
  PayoutId payoutId
411
413
  )
412
414
  internal
415
+ virtual
413
416
  {
414
417
  _getProductStorage()._claimService.processPayout(
415
418
  policyNftId,
416
419
  payoutId);
417
420
  }
418
421
 
419
- function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
422
+ function _toRiskId(string memory riskName) internal virtual pure returns (RiskId riskId) {
420
423
  return RiskIdLib.toRiskId(riskName);
421
424
  }
422
425
 
423
- function _getProductStorage() internal pure returns (ProductStorage storage $) {
426
+ function _getProductStorage() internal virtual pure returns (ProductStorage storage $) {
424
427
  assembly {
425
428
  $.slot := PRODUCT_STORAGE_LOCATION_V1
426
429
  }
427
430
  }
428
-
429
- function _getRiskService() internal view returns (IRiskService) {
430
- return _getProductStorage()._riskService;
431
- }
432
431
  }
@@ -104,10 +104,6 @@ contract ChainNft is ERC721Enumerable {
104
104
  }
105
105
 
106
106
  _safeMintWithInterceptorAddress(to, tokenId, interceptor);
107
-
108
- if(interceptor != address(0)) {
109
- ITransferInterceptor(interceptor).nftMint(to, tokenId);
110
- }
111
107
  }
112
108
 
113
109
 
@@ -115,11 +111,12 @@ contract ChainNft is ERC721Enumerable {
115
111
  * @dev amend the open zeppelin transferFrom function by an interceptor call if such an interceptor is defined for the nft token id
116
112
  * this allows distribution, product and pool components to be notified when distributors, policies and bundles are transferred.
117
113
  */
118
- function transferFrom(address from, address to, uint256 tokenId) public override (ERC721, IERC721) {
114
+ function transferFrom(address from, address to, uint256 tokenId) public override (IERC721, ERC721) {
119
115
  super.transferFrom(from, to, tokenId);
120
116
 
121
117
  if (_interceptor[tokenId] != address(0)) {
122
- ITransferInterceptor(_interceptor[tokenId]).nftTransferFrom(from, to, tokenId);
118
+ address operator = msg.sender;
119
+ ITransferInterceptor(_interceptor[tokenId]).nftTransferFrom(from, to, tokenId, operator);
123
120
  }
124
121
  }
125
122
 
@@ -241,10 +238,10 @@ contract ChainNft is ERC721Enumerable {
241
238
  address interceptor
242
239
  )
243
240
  private
244
- {
245
- emit LogTokenInterceptorAddress(tokenId, interceptor);
246
-
241
+ {
247
242
  _totalMinted++;
248
243
  _safeMint(to, tokenId);
244
+
245
+ emit LogTokenInterceptorAddress(tokenId, interceptor);
249
246
  }
250
247
  }
@@ -65,9 +65,6 @@ interface IRegistry is IERC165 {
65
65
  StateId state;
66
66
  VersionPart version;
67
67
  bytes32 salt;
68
- address[] addresses;
69
- string[] names;
70
- ObjectType[] domains;
71
68
  IServiceAuthorization auth;
72
69
  Timestamp activatedAt;
73
70
  Timestamp disabledAt;
@@ -124,10 +121,14 @@ interface IRegistry is IERC165 {
124
121
 
125
122
  function ownerOf(NftId nftId) external view returns (address);
126
123
 
124
+ function isOwnerOf(NftId nftId, address expectedOwner) external view returns (bool);
125
+
127
126
  function ownerOf(address contractAddress) external view returns (address);
128
127
 
129
128
  function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory info);
130
129
 
130
+ function isObjectType(NftId nftId, ObjectType expectedObjectType) external view returns (bool);
131
+
131
132
  function getObjectAddress(NftId nftId) external view returns (address objectAddress);
132
133
 
133
134
  /// @dev Returns the object info for the specified object address.
@@ -21,10 +21,9 @@ interface IRegistryService is
21
21
 
22
22
  error ErrorRegistryServiceNotService(address notService);
23
23
  error ErrorRegistryServiceNotInstance(address notInstance);
24
- error ErrorRegistryServiceNotComponent(address notComponent);
25
24
  error ErrorRegistryServiceNotProduct(address notProduct);
26
- error ErrorRegistryServiceNotPool(address notPool);
27
- error ErrorRegistryServiceNotDistribution(address notDistribution);
25
+ error ErrorRegistryServiceNotComponent(address notComponent);
26
+ error ErrorRegistryServiceNotProductLinkedComponent(address notProductLinkedComponent);
28
27
 
29
28
  error ErrorRegistryServiceRegisterableAddressInvalid(IRegisterable registerable, address found);
30
29
  error ErrorRegistryServiceRegisterableTypeInvalid(IRegisterable registerable, ObjectType expected, ObjectType found);
@@ -47,7 +46,10 @@ interface IRegistryService is
47
46
  function registerInstance(IRegisterable instance, address owner)
48
47
  external returns(IRegistry.ObjectInfo memory info);
49
48
 
50
- function registerComponent(IComponent component, ObjectType objectType, address owner)
49
+ function registerProduct(IComponent product, address owner)
50
+ external returns(IRegistry.ObjectInfo memory info);
51
+
52
+ function registerProductLinkedComponent(IComponent component, ObjectType objectType, address owner)
51
53
  external returns(IRegistry.ObjectInfo memory info);
52
54
 
53
55
  function registerDistributor(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
@@ -2,6 +2,5 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  interface ITransferInterceptor {
5
- function nftMint(address to, uint256 tokenId) external;
6
- function nftTransferFrom(address from, address to, uint256 tokenId) external;
5
+ function nftTransferFrom(address from, address to, uint256 tokenId, address operator) external;
7
6
  }
@@ -342,6 +342,10 @@ contract Registry is
342
342
  return CHAIN_NFT.ownerOf(nftId.toInt());
343
343
  }
344
344
 
345
+ function isOwnerOf(NftId nftId, address expectedOwner) public view returns (bool) {
346
+ return CHAIN_NFT.ownerOf(nftId.toInt()) == expectedOwner;
347
+ }
348
+
345
349
  function ownerOf(address contractAddress) public view returns (address) {
346
350
  return CHAIN_NFT.ownerOf(_nftIdByAddress[contractAddress].toInt());
347
351
  }
@@ -350,6 +354,10 @@ contract Registry is
350
354
  return _info[nftId];
351
355
  }
352
356
 
357
+ function isObjectType(NftId nftId, ObjectType expectedObjectType) external view returns (bool) {
358
+ return _info[nftId].objectType == expectedObjectType;
359
+ }
360
+
353
361
  function getObjectAddress(NftId nftId) external view returns (address) {
354
362
  return _info[nftId].objectAddress;
355
363
  }
@@ -691,13 +699,15 @@ contract Registry is
691
699
 
692
700
  // components with instance parent
693
701
  _coreContractCombinations[PRODUCT()][INSTANCE()] = true;
694
- _coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
695
- _coreContractCombinations[ORACLE()][INSTANCE()] = true;
696
- _coreContractCombinations[POOL()][INSTANCE()] = true;
702
+
703
+ // components with product parent
704
+ _coreContractCombinations[DISTRIBUTION()][PRODUCT()] = true;
705
+ _coreContractCombinations[ORACLE()][PRODUCT()] = true;
706
+ _coreContractCombinations[POOL()][PRODUCT()] = true;
697
707
 
698
708
  // objects with component parents
699
- _coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
700
709
  _coreObjectCombinations[POLICY()][PRODUCT()] = true;
710
+ _coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
701
711
  _coreObjectCombinations[BUNDLE()][POOL()] = true;
702
712
 
703
713
  // staking
@@ -115,21 +115,6 @@ contract RegistryAdmin is
115
115
  address(service));
116
116
  }
117
117
 
118
- function revokeServiceRole(
119
- IService service,
120
- ObjectType domain,
121
- VersionPart version
122
- )
123
- external
124
- restricted()
125
- {
126
- _revokeRoleFromAccount(
127
- RoleIdLib.roleForTypeAndVersion(
128
- domain,
129
- version),
130
- address(service));
131
- }
132
-
133
118
  function grantServiceRoleForAllVersions(IService service, ObjectType domain)
134
119
  external
135
120
  restricted()
@@ -139,13 +124,11 @@ contract RegistryAdmin is
139
124
  address(service));
140
125
  }
141
126
 
142
- function revokeServiceRoleForAllVersions(IService service, ObjectType domain)
127
+ function setServiceLocked(IService service, bool locked)
143
128
  external
144
129
  restricted()
145
130
  {
146
- _revokeRoleFromAccount(
147
- RoleIdLib.roleForTypeAndAllVersions(domain),
148
- address(service));
131
+ _setTargetClosed(address(service), locked);
149
132
  }
150
133
 
151
134
  /*function transferAdmin(address to)
@@ -188,6 +171,8 @@ contract RegistryAdmin is
188
171
  true,
189
172
  false);
190
173
 
174
+ _setTargetClosed(address(service), true);
175
+
191
176
  // create service role
192
177
  RoleId serviceRoleId = RoleIdLib.roleForTypeAndVersion(
193
178
  serviceDomain,
@@ -330,12 +315,11 @@ contract RegistryAdmin is
330
315
  name: RELEASE_REGISTRY_ROLE_NAME}));
331
316
 
332
317
  FunctionInfo[] memory functions;
333
- functions = new FunctionInfo[](5);
318
+ functions = new FunctionInfo[](4);
334
319
  functions[0] = toFunction(RegistryAdmin.authorizeService.selector, "authorizeService");
335
320
  functions[1] = toFunction(RegistryAdmin.grantServiceRoleForAllVersions.selector, "grantServiceRoleForAllVersions");
336
- functions[2] = toFunction(RegistryAdmin.revokeServiceRoleForAllVersions.selector, "revokeServiceRoleForAllVersions");
337
- functions[3] = toFunction(RegistryAdmin.grantServiceRole.selector, "grantServiceRole");
338
- functions[4] = toFunction(RegistryAdmin.revokeServiceRole.selector, "revokeServiceRole");
321
+ functions[2] = toFunction(RegistryAdmin.grantServiceRole.selector, "grantServiceRole");
322
+ functions[3] = toFunction(RegistryAdmin.setServiceLocked.selector, "setServiceLocked");
339
323
  _authorizeTargetFunctions(address(this), releaseRegistryRoleId, functions);
340
324
 
341
325
  _grantRoleToAccount(releaseRegistryRoleId, _releaseRegistry);