@etherisc/gif-next 0.0.2-abde86b-349 → 0.0.2-ac2f4a6-957

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 (399) 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 +1538 -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 +2077 -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 +153 -106
  49. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +222 -107
  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 +108 -125
  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 +160 -89
  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 -66
  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 -53
  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 -53
  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 +129 -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 +81 -57
  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 +116 -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 +129 -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 +53 -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 +75 -0
  315. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  316. package/contracts/examples/fire/FireProduct.sol +418 -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 +4 -4
  322. package/contracts/examples/unpermissioned/SimpleProduct.sol +10 -10
  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 +14 -68
  330. package/contracts/instance/module/IComponents.sol +6 -3
  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 +14 -26
  336. package/contracts/pool/BasicPoolAuthorization.sol +0 -1
  337. package/contracts/pool/BundleService.sol +75 -20
  338. package/contracts/pool/IBundleService.sol +9 -0
  339. package/contracts/pool/IPoolService.sol +2 -6
  340. package/contracts/pool/Pool.sol +11 -29
  341. package/contracts/pool/PoolService.sol +65 -69
  342. package/contracts/product/ApplicationService.sol +9 -1
  343. package/contracts/product/BasicProduct.sol +6 -6
  344. package/contracts/product/BasicProductAuthorization.sol +0 -1
  345. package/contracts/product/ClaimService.sol +97 -58
  346. package/contracts/product/IClaimService.sol +2 -1
  347. package/contracts/product/IPolicyService.sol +3 -0
  348. package/contracts/product/IPricingService.sol +9 -9
  349. package/contracts/product/IProductComponent.sol +6 -0
  350. package/contracts/product/PolicyService.sol +50 -13
  351. package/contracts/product/PricingService.sol +4 -7
  352. package/contracts/product/Product.sol +61 -38
  353. package/contracts/registry/ChainNft.sol +6 -9
  354. package/contracts/registry/IRegistry.sol +4 -3
  355. package/contracts/registry/IRegistryService.sol +6 -4
  356. package/contracts/registry/ITransferInterceptor.sol +1 -2
  357. package/contracts/registry/Registry.sol +14 -4
  358. package/contracts/registry/RegistryAdmin.sol +7 -23
  359. package/contracts/registry/RegistryService.sol +37 -55
  360. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  361. package/contracts/registry/ReleaseRegistry.sol +201 -191
  362. package/contracts/registry/ServiceAuthorizationV3.sol +14 -19
  363. package/contracts/shared/Component.sol +25 -28
  364. package/contracts/shared/ComponentService.sol +224 -130
  365. package/contracts/shared/ComponentVerifyingService.sol +22 -12
  366. package/contracts/shared/IComponent.sol +6 -2
  367. package/contracts/shared/IComponentService.sol +25 -13
  368. package/contracts/shared/IInstanceLinkedComponent.sol +3 -11
  369. package/contracts/shared/ILifecycle.sol +3 -1
  370. package/contracts/shared/INftOwnable.sol +2 -0
  371. package/contracts/shared/IRegisterable.sol +11 -0
  372. package/contracts/shared/InstanceLinkedComponent.sol +67 -25
  373. package/contracts/shared/KeyValueStore.sol +1 -1
  374. package/contracts/shared/Lifecycle.sol +15 -4
  375. package/contracts/shared/NftOwnable.sol +23 -3
  376. package/contracts/shared/Registerable.sol +15 -5
  377. package/contracts/shared/Service.sol +4 -7
  378. package/contracts/staking/IStakingService.sol +0 -3
  379. package/contracts/staking/Staking.sol +2 -3
  380. package/contracts/staking/StakingReader.sol +12 -5
  381. package/contracts/staking/StakingService.sol +1 -15
  382. package/contracts/type/Amount.sol +15 -0
  383. package/contracts/type/ClaimId.sol +6 -1
  384. package/contracts/type/NftId.sol +1 -0
  385. package/contracts/type/ObjectType.sol +1 -0
  386. package/contracts/type/RiskId.sol +15 -1
  387. package/contracts/type/RoleId.sol +0 -12
  388. package/contracts/type/StateId.sol +14 -1
  389. package/contracts/upgradeability/ProxyManager.sol +2 -1
  390. package/package.json +2 -1
  391. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  392. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  393. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  394. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  395. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  396. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  397. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  398. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  399. 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,25 @@ abstract contract Product is
36
40
  bytes32 public constant PRODUCT_STORAGE_LOCATION_V1 = 0x0bb7aafdb8e380f81267337bc5b5dfdf76e6d3a380ecadb51ec665246d9d6800;
37
41
 
38
42
  struct ProductStorage {
43
+ bool _isProcessingFundedClaims;
44
+ bool _hasDistribution;
45
+ uint8 _numberOfOracles;
39
46
  IRiskService _riskService;
40
47
  IApplicationService _applicationService;
41
48
  IPolicyService _policyService;
42
49
  IClaimService _claimService;
43
50
  IPricingService _pricingService;
44
51
  IComponentService _componentService;
45
- NftId _poolNftId;
46
- NftId _distributionNftId;
47
- Pool _pool;
48
- Distribution _distribution;
49
52
  }
50
53
 
51
54
 
52
- function register()
55
+ function registerComponent(address component)
53
56
  external
54
57
  virtual
55
58
  onlyOwner()
59
+ returns (NftId componentNftId)
56
60
  {
57
- _getProductStorage()._componentService.registerProduct();
58
- _approveTokenHandler(type(uint256).max);
61
+ return _getProductStorage()._componentService.registerComponent(component);
59
62
  }
60
63
 
61
64
 
@@ -67,6 +70,7 @@ abstract contract Product is
67
70
  external
68
71
  virtual
69
72
  restricted() // pool service role
73
+ onlyNftOfType(policyNftId, POLICY())
70
74
  {
71
75
  // default implementation does nothing
72
76
  }
@@ -83,6 +87,7 @@ abstract contract Product is
83
87
  public
84
88
  view
85
89
  override
90
+ onlyNftOfType(bundleNftId, BUNDLE())
86
91
  returns (Amount premiumAmount)
87
92
  {
88
93
  IPolicy.PremiumInfo memory premium = _getProductStorage()._pricingService.calculatePremium(
@@ -123,9 +128,13 @@ abstract contract Product is
123
128
  ProductStorage storage $ = _getProductStorage();
124
129
 
125
130
  return IComponents.ProductInfo({
126
- distributionNftId: $._distributionNftId,
127
- poolNftId: $._poolNftId,
128
131
  isProcessingFundedClaims: false,
132
+ hasDistribution: $._hasDistribution,
133
+ expectedNumberOfOracles: $._numberOfOracles,
134
+ numberOfOracles: 0,
135
+ poolNftId: NftIdLib.zero(),
136
+ distributionNftId: NftIdLib.zero(),
137
+ oracleNftId: new NftId[]($._numberOfOracles),
129
138
  productFee: FeeLib.zero(),
130
139
  processingFee: FeeLib.zero(),
131
140
  distributionFee: FeeLib.zero(),
@@ -145,10 +154,9 @@ abstract contract Product is
145
154
  string memory name,
146
155
  address token,
147
156
  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
157
+ bool isProcessingFundedClaims,
158
+ bool hasDistribution,
159
+ uint8 numberOfOracles,
152
160
  bytes memory componentData // writeonly data that will saved in the object info record of the registry
153
161
  )
154
162
  internal
@@ -164,22 +172,18 @@ abstract contract Product is
164
172
  authorization,
165
173
  isInterceptor,
166
174
  initialOwner,
167
- registryData,
168
175
  componentData);
169
176
 
170
177
  ProductStorage storage $ = _getProductStorage();
171
- // TODO add validation
172
- // TODO refactor to go via registry for all components linked to this product (#527)
178
+ $._isProcessingFundedClaims = isProcessingFundedClaims;
179
+ $._hasDistribution = hasDistribution;
180
+ $._numberOfOracles = numberOfOracles;
173
181
  $._riskService = IRiskService(_getServiceAddress(PRODUCT()));
174
182
  $._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
175
183
  $._policyService = IPolicyService(_getServiceAddress(POLICY()));
176
184
  $._claimService = IClaimService(_getServiceAddress(CLAIM()));
177
185
  $._pricingService = IPricingService(_getServiceAddress(PRICE()));
178
186
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
179
- $._pool = Pool(pool);
180
- $._distribution = Distribution(distribution);
181
- $._poolNftId = getRegistry().getNftIdForAddress(pool);
182
- $._distributionNftId = getRegistry().getNftIdForAddress(distribution);
183
187
 
184
188
  _registerInterface(type(IProductComponent).interfaceId);
185
189
  }
@@ -199,8 +203,11 @@ abstract contract Product is
199
203
  function _createRisk(
200
204
  RiskId id,
201
205
  bytes memory data
202
- ) internal {
203
- _getRiskService().createRisk(
206
+ )
207
+ internal
208
+ virtual
209
+ {
210
+ _getProductStorage()._riskService.createRisk(
204
211
  id,
205
212
  data
206
213
  );
@@ -209,8 +216,11 @@ abstract contract Product is
209
216
  function _updateRisk(
210
217
  RiskId id,
211
218
  bytes memory data
212
- ) internal {
213
- _getRiskService().updateRisk(
219
+ )
220
+ internal
221
+ virtual
222
+ {
223
+ _getProductStorage()._riskService.updateRisk(
214
224
  id,
215
225
  data
216
226
  );
@@ -219,15 +229,18 @@ abstract contract Product is
219
229
  function _updateRiskState(
220
230
  RiskId id,
221
231
  StateId state
222
- ) internal {
223
- _getRiskService().updateRiskState(
232
+ )
233
+ internal
234
+ virtual
235
+ {
236
+ _getProductStorage()._riskService.updateRiskState(
224
237
  id,
225
238
  state
226
239
  );
227
240
  }
228
241
 
229
242
 
230
- function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
243
+ function _getRiskInfo(RiskId id) internal virtual view returns (IRisk.RiskInfo memory info) {
231
244
  return getInstance().getInstanceReader().getRiskInfo(id);
232
245
  }
233
246
 
@@ -243,6 +256,7 @@ abstract contract Product is
243
256
  bytes memory applicationData
244
257
  )
245
258
  internal
259
+ virtual
246
260
  returns (NftId applicationNftId)
247
261
  {
248
262
  return _getProductStorage()._applicationService.create(
@@ -262,6 +276,7 @@ abstract contract Product is
262
276
  Timestamp activateAt
263
277
  )
264
278
  internal
279
+ virtual
265
280
  {
266
281
  _getProductStorage()._policyService.createPolicy(
267
282
  applicationNftId,
@@ -272,6 +287,7 @@ abstract contract Product is
272
287
  NftId policyNftId
273
288
  )
274
289
  internal
290
+ virtual
275
291
  {
276
292
  _getProductStorage()._policyService.decline(
277
293
  policyNftId);
@@ -282,6 +298,7 @@ abstract contract Product is
282
298
  Timestamp expireAt
283
299
  )
284
300
  internal
301
+ virtual
285
302
  returns (Timestamp expiredAt)
286
303
  {
287
304
  expiredAt = _getProductStorage()._policyService.expire(policyNftId, expireAt);
@@ -292,6 +309,7 @@ abstract contract Product is
292
309
  Timestamp activateAt
293
310
  )
294
311
  internal
312
+ virtual
295
313
  {
296
314
  _getProductStorage()._policyService.collectPremium(
297
315
  policyNftId,
@@ -303,6 +321,7 @@ abstract contract Product is
303
321
  Timestamp activateAt
304
322
  )
305
323
  internal
324
+ virtual
306
325
  {
307
326
  _getProductStorage()._policyService.activate(
308
327
  policyNftId,
@@ -313,6 +332,7 @@ abstract contract Product is
313
332
  NftId policyNftId
314
333
  )
315
334
  internal
335
+ virtual
316
336
  {
317
337
  _getProductStorage()._policyService.close(
318
338
  policyNftId);
@@ -324,6 +344,7 @@ abstract contract Product is
324
344
  bytes memory claimData
325
345
  )
326
346
  internal
347
+ virtual
327
348
  returns(ClaimId)
328
349
  {
329
350
  return _getProductStorage()._claimService.submit(
@@ -339,6 +360,7 @@ abstract contract Product is
339
360
  bytes memory data
340
361
  )
341
362
  internal
363
+ virtual
342
364
  {
343
365
  _getProductStorage()._claimService.confirm(
344
366
  policyNftId,
@@ -353,6 +375,7 @@ abstract contract Product is
353
375
  bytes memory data
354
376
  )
355
377
  internal
378
+ virtual
356
379
  {
357
380
  _getProductStorage()._claimService.decline(
358
381
  policyNftId,
@@ -365,6 +388,7 @@ abstract contract Product is
365
388
  ClaimId claimId
366
389
  )
367
390
  internal
391
+ virtual
368
392
  {
369
393
  _getProductStorage()._claimService.close(
370
394
  policyNftId,
@@ -378,6 +402,7 @@ abstract contract Product is
378
402
  bytes memory data
379
403
  )
380
404
  internal
405
+ virtual
381
406
  returns (PayoutId)
382
407
  {
383
408
  return _getProductStorage()._claimService.createPayout(
@@ -395,6 +420,7 @@ abstract contract Product is
395
420
  bytes memory data
396
421
  )
397
422
  internal
423
+ virtual
398
424
  returns (PayoutId)
399
425
  {
400
426
  return _getProductStorage()._claimService.createPayoutForBeneficiary(
@@ -410,23 +436,20 @@ abstract contract Product is
410
436
  PayoutId payoutId
411
437
  )
412
438
  internal
439
+ virtual
413
440
  {
414
441
  _getProductStorage()._claimService.processPayout(
415
442
  policyNftId,
416
443
  payoutId);
417
444
  }
418
445
 
419
- function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
446
+ function _toRiskId(string memory riskName) internal virtual pure returns (RiskId riskId) {
420
447
  return RiskIdLib.toRiskId(riskName);
421
448
  }
422
449
 
423
- function _getProductStorage() internal pure returns (ProductStorage storage $) {
450
+ function _getProductStorage() internal virtual pure returns (ProductStorage storage $) {
424
451
  assembly {
425
452
  $.slot := PRODUCT_STORAGE_LOCATION_V1
426
453
  }
427
454
  }
428
-
429
- function _getRiskService() internal view returns (IRiskService) {
430
- return _getProductStorage()._riskService;
431
- }
432
455
  }
@@ -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);
@@ -18,8 +18,6 @@ contract RegistryService is
18
18
  Service,
19
19
  IRegistryService
20
20
  {
21
- using NftIdLib for NftId;
22
-
23
21
  // TODO update to real hash when registry is stable
24
22
  bytes32 public constant REGISTRY_CREATION_CODE_HASH = bytes32(0);
25
23
 
@@ -60,7 +58,7 @@ contract RegistryService is
60
58
  function registerInstance(IRegisterable instance, address owner)
61
59
  external
62
60
  virtual
63
- restricted
61
+ restricted()
64
62
  returns(
65
63
  IRegistry.ObjectInfo memory info
66
64
  )
@@ -75,29 +73,33 @@ contract RegistryService is
75
73
  instance.linkToRegisteredNftId(); // asume safe
76
74
  }
77
75
 
78
- // function registerProduct(IComponent product, address owner)
79
- // external
80
- // restricted
81
- // returns(
82
- // IRegistry.ObjectInfo memory info
83
- // )
84
- // {
85
- // // CAN revert if no ERC165 support -> will revert with empty message
86
- // if(!product.supportsInterface(type(IProductComponent).interfaceId)) {
87
- // revert ErrorRegistryServiceNotProduct(address(product));
88
- // }
89
-
90
- // info = _getAndVerifyContractInfo(product, PRODUCT(), owner);
91
- // info.nftId = getRegistry().register(info);
92
- // }
93
-
94
- function registerComponent(
76
+ function registerProduct(
77
+ IComponent product,
78
+ address initialOwner
79
+ )
80
+ external
81
+ virtual
82
+ restricted()
83
+ returns(
84
+ IRegistry.ObjectInfo memory info
85
+ )
86
+ {
87
+ if(!product.supportsInterface(type(IProductComponent).interfaceId)) {
88
+ revert ErrorRegistryServiceNotProduct(address(product));
89
+ }
90
+
91
+ info = _getAndVerifyContractInfo(product, PRODUCT(), initialOwner);
92
+ info.nftId = getRegistry().register(info);
93
+ }
94
+
95
+ function registerProductLinkedComponent(
95
96
  IComponent component,
96
97
  ObjectType objectType,
97
98
  address initialOwner
98
99
  )
99
100
  external
100
- restricted
101
+ virtual
102
+ restricted()
101
103
  returns(
102
104
  IRegistry.ObjectInfo memory info
103
105
  )
@@ -107,43 +109,18 @@ contract RegistryService is
107
109
  revert ErrorRegistryServiceNotComponent(address(component));
108
110
  }
109
111
 
112
+ if (!(objectType == DISTRIBUTION() || objectType == ORACLE() || objectType == POOL())) {
113
+ revert ErrorRegistryServiceNotProductLinkedComponent(address(component));
114
+ }
115
+
110
116
  info = _getAndVerifyContractInfo(component, objectType, initialOwner);
111
117
  info.nftId = getRegistry().register(info);
112
118
  }
113
119
 
114
- // function registerPool(IComponent pool, address owner)
115
- // external
116
- // restricted
117
- // returns(
118
- // IRegistry.ObjectInfo memory info
119
- // )
120
- // {
121
- // if(!pool.supportsInterface(type(IPoolComponent).interfaceId)) {
122
- // revert ErrorRegistryServiceNotPool(address(pool));
123
- // }
124
-
125
- // info = _getAndVerifyContractInfo(pool, POOL(), owner);
126
- // info.nftId = getRegistry().register(info);
127
- // }
128
-
129
- // function registerDistribution(IComponent distribution, address owner)
130
- // external
131
- // restricted
132
- // returns(
133
- // IRegistry.ObjectInfo memory info
134
- // )
135
- // {
136
- // if(!distribution.supportsInterface(type(IDistributionComponent).interfaceId)) {
137
- // revert ErrorRegistryServiceNotDistribution(address(distribution));
138
- // }
139
-
140
- // info = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
141
- // info.nftId = getRegistry().register(info);
142
- // }
143
-
144
120
  function registerDistributor(IRegistry.ObjectInfo memory info)
145
121
  external
146
- restricted
122
+ virtual
123
+ restricted()
147
124
  returns(NftId nftId)
148
125
  {
149
126
  _verifyObjectInfo(info, DISTRIBUTOR());
@@ -152,7 +129,8 @@ contract RegistryService is
152
129
 
153
130
  function registerPolicy(IRegistry.ObjectInfo memory info)
154
131
  external
155
- restricted
132
+ virtual
133
+ restricted()
156
134
  returns(NftId nftId)
157
135
  {
158
136
  _verifyObjectInfo(info, POLICY());
@@ -161,7 +139,8 @@ contract RegistryService is
161
139
 
162
140
  function registerBundle(IRegistry.ObjectInfo memory info)
163
141
  external
164
- restricted
142
+ virtual
143
+ restricted()
165
144
  returns(NftId nftId)
166
145
  {
167
146
  _verifyObjectInfo(info, BUNDLE());
@@ -170,7 +149,8 @@ contract RegistryService is
170
149
 
171
150
  function registerStake(IRegistry.ObjectInfo memory info)
172
151
  external
173
- restricted
152
+ virtual
153
+ restricted()
174
154
  returns(NftId nftId)
175
155
  {
176
156
  _verifyObjectInfo(info, STAKE());
@@ -185,6 +165,7 @@ contract RegistryService is
185
165
  address expectedOwner // assume can be 0 when given by other service
186
166
  )
187
167
  internal
168
+ virtual
188
169
  view
189
170
  returns(
190
171
  IRegistry.ObjectInfo memory info
@@ -224,6 +205,7 @@ contract RegistryService is
224
205
  ObjectType expectedType
225
206
  )
226
207
  internal
208
+ virtual
227
209
  view
228
210
  {
229
211
  if(info.objectAddress > address(0)) {