@etherisc/gif-next 0.0.2-b9366f5-670 → 0.0.2-b95860d-028

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 (436) hide show
  1. package/README.md +1 -1
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  7. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -32
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  14. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  19. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +148 -222
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +88 -186
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +125 -198
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +99 -107
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +75 -57
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +29 -0
  32. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  33. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  34. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1551 -0
  36. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
  38. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2090 -0
  40. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  42. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1484 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1244 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1605 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2108 -0
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  53. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +48 -31
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
  58. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/Instance.sol/Instance.json +51 -105
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +165 -138
  62. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  65. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +280 -72
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +77 -242
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -87
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +189 -98
  72. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  73. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  74. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  76. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  77. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  78. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  79. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  80. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  81. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  86. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  87. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  88. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +130 -204
  90. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
  92. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  94. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +71 -53
  95. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  96. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  97. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  98. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +84 -182
  99. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
  101. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
  103. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  104. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +103 -186
  105. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  106. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
  107. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  108. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +178 -187
  109. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +117 -105
  111. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  112. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +53 -0
  113. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  114. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +92 -46
  115. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  116. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +200 -115
  117. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  118. package/artifacts/contracts/pool/Pool.sol/Pool.json +103 -173
  119. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  120. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +308 -264
  121. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +108 -88
  123. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  124. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +71 -144
  125. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -80
  127. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  128. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +140 -197
  129. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  130. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
  131. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  132. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +194 -200
  133. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  134. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +116 -104
  135. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  136. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +29 -0
  137. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  138. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +64 -8
  139. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  140. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +140 -0
  141. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  142. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +80 -51
  143. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  144. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +129 -70
  145. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  146. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +29 -0
  147. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  148. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +252 -166
  149. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +107 -91
  151. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  152. package/artifacts/contracts/product/PricingService.sol/PricingService.json +154 -219
  153. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +87 -91
  155. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  156. package/artifacts/contracts/product/Product.sol/Product.json +140 -197
  157. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  158. package/artifacts/contracts/product/RiskService.sol/RiskService.json +65 -138
  159. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  160. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +69 -77
  161. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  162. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  163. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  164. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +285 -33
  165. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  166. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
  167. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  168. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +0 -18
  169. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  170. package/artifacts/contracts/registry/Registry.sol/Registry.json +491 -94
  171. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  172. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +283 -143
  173. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  174. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
  175. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  176. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
  177. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  178. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  179. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  180. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +129 -221
  181. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  182. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  183. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  184. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  185. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  186. package/artifacts/contracts/shared/Component.sol/Component.json +63 -157
  187. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  188. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +351 -263
  189. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  190. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +120 -110
  191. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  192. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
  193. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  194. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  195. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  196. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +50 -28
  197. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +321 -19
  199. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  200. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +71 -53
  201. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  203. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  204. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  205. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  206. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  207. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  208. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  209. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  210. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  211. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  212. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  213. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  214. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  215. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  216. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  217. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +84 -182
  218. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  219. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  220. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  221. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  222. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  223. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  224. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  225. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  226. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  227. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  228. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  229. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
  230. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  231. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  232. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  233. package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
  234. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  235. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  236. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  237. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
  238. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  239. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +50 -28
  240. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  241. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  242. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  243. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
  244. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  245. package/artifacts/contracts/staking/Staking.sol/Staking.json +133 -207
  246. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  247. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  248. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  249. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +99 -88
  250. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  251. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
  252. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  253. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +71 -165
  254. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  255. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
  256. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  257. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +144 -103
  258. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  259. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
  260. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  261. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
  263. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  266. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  268. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  270. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  271. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  272. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  274. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  275. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  276. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  278. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  280. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  282. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  284. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  286. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  288. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  293. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  297. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
  299. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  301. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  302. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  303. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +55 -70
  304. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  305. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  306. package/contracts/authorization/AccessAdmin.sol +64 -59
  307. package/contracts/authorization/Authorization.sol +111 -39
  308. package/contracts/authorization/IAccess.sol +1 -0
  309. package/contracts/authorization/IAccessAdmin.sol +4 -3
  310. package/contracts/authorization/IAuthorization.sol +13 -7
  311. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  312. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  313. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  314. package/contracts/distribution/BasicDistribution.sol +2 -1
  315. package/contracts/distribution/Distribution.sol +5 -15
  316. package/contracts/distribution/DistributionService.sol +61 -43
  317. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  318. package/contracts/examples/fire/DamageLevel.sol +59 -0
  319. package/contracts/examples/fire/FirePool.sol +75 -0
  320. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  321. package/contracts/examples/fire/FireProduct.sol +412 -0
  322. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  323. package/contracts/examples/fire/FireUSD.sol +26 -0
  324. package/contracts/{example_components → examples}/unpermissioned/SimpleDistribution.sol +4 -4
  325. package/contracts/{example_components → examples}/unpermissioned/SimpleOracle.sol +4 -4
  326. package/contracts/{example_components → examples}/unpermissioned/SimplePool.sol +4 -4
  327. package/contracts/{example_components → examples}/unpermissioned/SimpleProduct.sol +10 -10
  328. package/contracts/instance/IInstance.sol +4 -1
  329. package/contracts/instance/IInstanceService.sol +0 -20
  330. package/contracts/instance/Instance.sol +21 -12
  331. package/contracts/instance/InstanceAdmin.sol +22 -30
  332. package/contracts/instance/InstanceAuthorizationV3.sol +9 -19
  333. package/contracts/instance/InstanceReader.sol +83 -18
  334. package/contracts/instance/InstanceService.sol +19 -76
  335. package/contracts/instance/InstanceServiceManager.sol +6 -7
  336. package/contracts/instance/module/IComponents.sol +9 -4
  337. package/contracts/instance/module/IPolicy.sol +2 -2
  338. package/contracts/oracle/BasicOracle.sol +0 -1
  339. package/contracts/oracle/IOracleService.sol +2 -1
  340. package/contracts/oracle/Oracle.sol +5 -16
  341. package/contracts/oracle/OracleService.sol +47 -35
  342. package/contracts/oracle/OracleServiceManager.sol +6 -6
  343. package/contracts/pool/BasicPool.sol +14 -26
  344. package/contracts/pool/BasicPoolAuthorization.sol +0 -1
  345. package/contracts/pool/BundleService.sol +32 -9
  346. package/contracts/pool/BundleServiceManager.sol +6 -6
  347. package/contracts/pool/IBundleService.sol +9 -0
  348. package/contracts/pool/IPoolComponent.sol +18 -8
  349. package/contracts/pool/IPoolService.sol +21 -14
  350. package/contracts/pool/Pool.sol +39 -30
  351. package/contracts/pool/PoolService.sol +99 -83
  352. package/contracts/pool/PoolServiceManager.sol +4 -4
  353. package/contracts/product/ApplicationService.sol +11 -8
  354. package/contracts/product/ApplicationServiceManager.sol +4 -4
  355. package/contracts/product/BasicProduct.sol +6 -6
  356. package/contracts/product/BasicProductAuthorization.sol +0 -1
  357. package/contracts/product/ClaimService.sol +190 -86
  358. package/contracts/product/ClaimServiceManager.sol +4 -4
  359. package/contracts/product/IClaimService.sol +3 -2
  360. package/contracts/product/IPolicyService.sol +10 -3
  361. package/contracts/product/IPricingService.sol +9 -9
  362. package/contracts/product/IProductComponent.sol +23 -3
  363. package/contracts/product/PolicyService.sol +145 -35
  364. package/contracts/product/PolicyServiceManager.sol +4 -4
  365. package/contracts/product/PricingService.sol +8 -12
  366. package/contracts/product/PricingServiceManager.sol +3 -3
  367. package/contracts/product/Product.sol +83 -53
  368. package/contracts/product/RiskService.sol +4 -5
  369. package/contracts/product/RiskServiceManager.sol +4 -4
  370. package/contracts/registry/ChainNft.sol +65 -36
  371. package/contracts/registry/IRegistry.sol +54 -17
  372. package/contracts/registry/IRegistryService.sol +5 -12
  373. package/contracts/registry/ITransferInterceptor.sol +0 -1
  374. package/contracts/registry/Registry.sol +341 -200
  375. package/contracts/registry/RegistryAdmin.sol +124 -50
  376. package/contracts/registry/RegistryService.sol +35 -46
  377. package/contracts/registry/RegistryServiceManager.sol +2 -2
  378. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  379. package/contracts/registry/ReleaseRegistry.sol +203 -187
  380. package/contracts/registry/ServiceAuthorizationV3.sol +14 -19
  381. package/contracts/shared/Component.sol +26 -18
  382. package/contracts/shared/ComponentService.sol +230 -136
  383. package/contracts/shared/ComponentServiceManager.sol +8 -5
  384. package/contracts/shared/ComponentVerifyingService.sol +22 -13
  385. package/contracts/shared/ContractLib.sol +38 -0
  386. package/contracts/shared/IComponent.sol +6 -2
  387. package/contracts/shared/IComponentService.sol +25 -13
  388. package/contracts/shared/IInstanceLinkedComponent.sol +3 -11
  389. package/contracts/shared/ILifecycle.sol +3 -1
  390. package/contracts/shared/INftOwnable.sol +2 -0
  391. package/contracts/shared/IPolicyHolder.sol +12 -22
  392. package/contracts/shared/IRegisterable.sol +11 -0
  393. package/contracts/shared/InitializableERC165.sol +2 -2
  394. package/contracts/shared/InstanceLinkedComponent.sol +71 -30
  395. package/contracts/shared/KeyValueStore.sol +1 -1
  396. package/contracts/shared/Lifecycle.sol +15 -4
  397. package/contracts/shared/NftOwnable.sol +22 -6
  398. package/contracts/shared/PolicyHolder.sol +15 -52
  399. package/contracts/shared/Registerable.sol +19 -9
  400. package/contracts/shared/RegistryLinked.sol +3 -2
  401. package/contracts/shared/Service.sol +20 -18
  402. package/contracts/staking/IStakingService.sol +0 -3
  403. package/contracts/staking/Staking.sol +5 -6
  404. package/contracts/staking/StakingManager.sol +8 -6
  405. package/contracts/staking/StakingReader.sol +12 -5
  406. package/contracts/staking/StakingService.sol +3 -17
  407. package/contracts/staking/StakingServiceManager.sol +2 -2
  408. package/contracts/type/Amount.sol +15 -0
  409. package/contracts/type/ClaimId.sol +6 -1
  410. package/contracts/type/NftId.sol +1 -0
  411. package/contracts/type/ObjectType.sol +1 -0
  412. package/contracts/type/PayoutId.sol +10 -10
  413. package/contracts/type/RiskId.sol +15 -1
  414. package/contracts/type/RoleId.sol +0 -12
  415. package/contracts/type/StateId.sol +14 -1
  416. package/contracts/type/UFixed.sol +4 -0
  417. package/contracts/upgradeability/ProxyManager.sol +68 -34
  418. package/contracts/upgradeability/Versionable.sol +2 -2
  419. package/package.json +2 -1
  420. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  421. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  422. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  423. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  424. package/artifacts/contracts/example_components/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +0 -4
  425. package/artifacts/contracts/example_components/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +0 -1558
  426. package/artifacts/contracts/example_components/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +0 -4
  427. package/artifacts/contracts/example_components/unpermissioned/SimpleOracle.sol/SimpleOracle.json +0 -1318
  428. package/artifacts/contracts/example_components/unpermissioned/SimplePool.sol/SimplePool.dbg.json +0 -4
  429. package/artifacts/contracts/example_components/unpermissioned/SimplePool.sol/SimplePool.json +0 -1664
  430. package/artifacts/contracts/example_components/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +0 -4
  431. package/artifacts/contracts/example_components/unpermissioned/SimpleProduct.sol/SimpleProduct.json +0 -2125
  432. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  433. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  434. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  435. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  436. 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,16 +40,39 @@ 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;
52
+ }
53
+
54
+
55
+ function registerComponent(address component)
56
+ external
57
+ virtual
58
+ onlyOwner()
59
+ returns (NftId componentNftId)
60
+ {
61
+ return _getProductStorage()._componentService.registerComponent(component);
62
+ }
63
+
64
+
65
+ function processFundedClaim(
66
+ NftId policyNftId,
67
+ ClaimId claimId,
68
+ Amount availableAmount
69
+ )
70
+ external
71
+ virtual
72
+ restricted() // pool service role
73
+ onlyNftOfType(policyNftId, POLICY())
74
+ {
75
+ // default implementation does nothing
49
76
  }
50
77
 
51
78
 
@@ -60,6 +87,7 @@ abstract contract Product is
60
87
  public
61
88
  view
62
89
  override
90
+ onlyNftOfType(bundleNftId, BUNDLE())
63
91
  returns (Amount premiumAmount)
64
92
  {
65
93
  IPolicy.PremiumInfo memory premium = _getProductStorage()._pricingService.calculatePremium(
@@ -91,16 +119,6 @@ abstract contract Product is
91
119
  }
92
120
 
93
121
 
94
- function register()
95
- external
96
- virtual
97
- onlyOwner()
98
- {
99
- _getProductStorage()._componentService.registerProduct();
100
- _approveTokenHandler(type(uint256).max);
101
- }
102
-
103
-
104
122
  function getInitialProductInfo()
105
123
  public
106
124
  virtual
@@ -110,8 +128,13 @@ abstract contract Product is
110
128
  ProductStorage storage $ = _getProductStorage();
111
129
 
112
130
  return IComponents.ProductInfo({
113
- distributionNftId: $._distributionNftId,
114
- poolNftId: $._poolNftId,
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),
115
138
  productFee: FeeLib.zero(),
116
139
  processingFee: FeeLib.zero(),
117
140
  distributionFee: FeeLib.zero(),
@@ -122,13 +145,6 @@ abstract contract Product is
122
145
  });
123
146
  }
124
147
 
125
- function getPoolNftId() external view override returns (NftId poolNftId) {
126
- return getRegistry().getNftIdForAddress(address(_getProductStorage()._pool));
127
- }
128
-
129
- function getDistributionNftId() external view override returns (NftId distributionNftId) {
130
- return getRegistry().getNftIdForAddress(address(_getProductStorage()._distribution));
131
- }
132
148
 
133
149
  function _initializeProduct(
134
150
  address registry,
@@ -138,10 +154,9 @@ abstract contract Product is
138
154
  string memory name,
139
155
  address token,
140
156
  bool isInterceptor,
141
- address pool, // switch to pool nft id (#527)
142
- address distribution, // switch to distribution nft id (#527)
143
- // add NftId [] oracleNftIds (#527)
144
- 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,
145
160
  bytes memory componentData // writeonly data that will saved in the object info record of the registry
146
161
  )
147
162
  internal
@@ -157,24 +172,20 @@ abstract contract Product is
157
172
  authorization,
158
173
  isInterceptor,
159
174
  initialOwner,
160
- registryData,
161
175
  componentData);
162
176
 
163
177
  ProductStorage storage $ = _getProductStorage();
164
- // TODO add validation
165
- // TODO refactor to go via registry for all components linked to this product (#527)
178
+ $._isProcessingFundedClaims = isProcessingFundedClaims;
179
+ $._hasDistribution = hasDistribution;
180
+ $._numberOfOracles = numberOfOracles;
166
181
  $._riskService = IRiskService(_getServiceAddress(PRODUCT()));
167
182
  $._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
168
183
  $._policyService = IPolicyService(_getServiceAddress(POLICY()));
169
184
  $._claimService = IClaimService(_getServiceAddress(CLAIM()));
170
185
  $._pricingService = IPricingService(_getServiceAddress(PRICE()));
171
186
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
172
- $._pool = Pool(pool);
173
- $._distribution = Distribution(distribution);
174
- $._poolNftId = getRegistry().getNftIdForAddress(pool);
175
- $._distributionNftId = getRegistry().getNftIdForAddress(distribution);
176
187
 
177
- registerInterface(type(IProductComponent).interfaceId);
188
+ _registerInterface(type(IProductComponent).interfaceId);
178
189
  }
179
190
 
180
191
 
@@ -192,8 +203,11 @@ abstract contract Product is
192
203
  function _createRisk(
193
204
  RiskId id,
194
205
  bytes memory data
195
- ) internal {
196
- _getRiskService().createRisk(
206
+ )
207
+ internal
208
+ virtual
209
+ {
210
+ _getProductStorage()._riskService.createRisk(
197
211
  id,
198
212
  data
199
213
  );
@@ -202,8 +216,11 @@ abstract contract Product is
202
216
  function _updateRisk(
203
217
  RiskId id,
204
218
  bytes memory data
205
- ) internal {
206
- _getRiskService().updateRisk(
219
+ )
220
+ internal
221
+ virtual
222
+ {
223
+ _getProductStorage()._riskService.updateRisk(
207
224
  id,
208
225
  data
209
226
  );
@@ -212,15 +229,18 @@ abstract contract Product is
212
229
  function _updateRiskState(
213
230
  RiskId id,
214
231
  StateId state
215
- ) internal {
216
- _getRiskService().updateRiskState(
232
+ )
233
+ internal
234
+ virtual
235
+ {
236
+ _getProductStorage()._riskService.updateRiskState(
217
237
  id,
218
238
  state
219
239
  );
220
240
  }
221
241
 
222
242
 
223
- function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
243
+ function _getRiskInfo(RiskId id) internal virtual view returns (IRisk.RiskInfo memory info) {
224
244
  return getInstance().getInstanceReader().getRiskInfo(id);
225
245
  }
226
246
 
@@ -236,6 +256,7 @@ abstract contract Product is
236
256
  bytes memory applicationData
237
257
  )
238
258
  internal
259
+ virtual
239
260
  returns (NftId applicationNftId)
240
261
  {
241
262
  return _getProductStorage()._applicationService.create(
@@ -255,6 +276,7 @@ abstract contract Product is
255
276
  Timestamp activateAt
256
277
  )
257
278
  internal
279
+ virtual
258
280
  {
259
281
  _getProductStorage()._policyService.createPolicy(
260
282
  applicationNftId,
@@ -265,6 +287,7 @@ abstract contract Product is
265
287
  NftId policyNftId
266
288
  )
267
289
  internal
290
+ virtual
268
291
  {
269
292
  _getProductStorage()._policyService.decline(
270
293
  policyNftId);
@@ -275,6 +298,7 @@ abstract contract Product is
275
298
  Timestamp expireAt
276
299
  )
277
300
  internal
301
+ virtual
278
302
  returns (Timestamp expiredAt)
279
303
  {
280
304
  expiredAt = _getProductStorage()._policyService.expire(policyNftId, expireAt);
@@ -285,6 +309,7 @@ abstract contract Product is
285
309
  Timestamp activateAt
286
310
  )
287
311
  internal
312
+ virtual
288
313
  {
289
314
  _getProductStorage()._policyService.collectPremium(
290
315
  policyNftId,
@@ -296,6 +321,7 @@ abstract contract Product is
296
321
  Timestamp activateAt
297
322
  )
298
323
  internal
324
+ virtual
299
325
  {
300
326
  _getProductStorage()._policyService.activate(
301
327
  policyNftId,
@@ -306,6 +332,7 @@ abstract contract Product is
306
332
  NftId policyNftId
307
333
  )
308
334
  internal
335
+ virtual
309
336
  {
310
337
  _getProductStorage()._policyService.close(
311
338
  policyNftId);
@@ -317,6 +344,7 @@ abstract contract Product is
317
344
  bytes memory claimData
318
345
  )
319
346
  internal
347
+ virtual
320
348
  returns(ClaimId)
321
349
  {
322
350
  return _getProductStorage()._claimService.submit(
@@ -332,6 +360,7 @@ abstract contract Product is
332
360
  bytes memory data
333
361
  )
334
362
  internal
363
+ virtual
335
364
  {
336
365
  _getProductStorage()._claimService.confirm(
337
366
  policyNftId,
@@ -346,6 +375,7 @@ abstract contract Product is
346
375
  bytes memory data
347
376
  )
348
377
  internal
378
+ virtual
349
379
  {
350
380
  _getProductStorage()._claimService.decline(
351
381
  policyNftId,
@@ -358,6 +388,7 @@ abstract contract Product is
358
388
  ClaimId claimId
359
389
  )
360
390
  internal
391
+ virtual
361
392
  {
362
393
  _getProductStorage()._claimService.close(
363
394
  policyNftId,
@@ -371,6 +402,7 @@ abstract contract Product is
371
402
  bytes memory data
372
403
  )
373
404
  internal
405
+ virtual
374
406
  returns (PayoutId)
375
407
  {
376
408
  return _getProductStorage()._claimService.createPayout(
@@ -388,6 +420,7 @@ abstract contract Product is
388
420
  bytes memory data
389
421
  )
390
422
  internal
423
+ virtual
391
424
  returns (PayoutId)
392
425
  {
393
426
  return _getProductStorage()._claimService.createPayoutForBeneficiary(
@@ -403,23 +436,20 @@ abstract contract Product is
403
436
  PayoutId payoutId
404
437
  )
405
438
  internal
439
+ virtual
406
440
  {
407
441
  _getProductStorage()._claimService.processPayout(
408
442
  policyNftId,
409
443
  payoutId);
410
444
  }
411
445
 
412
- function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
446
+ function _toRiskId(string memory riskName) internal virtual pure returns (RiskId riskId) {
413
447
  return RiskIdLib.toRiskId(riskName);
414
448
  }
415
449
 
416
- function _getProductStorage() private pure returns (ProductStorage storage $) {
450
+ function _getProductStorage() internal virtual pure returns (ProductStorage storage $) {
417
451
  assembly {
418
452
  $.slot := PRODUCT_STORAGE_LOCATION_V1
419
453
  }
420
454
  }
421
-
422
- function _getRiskService() internal view returns (IRiskService) {
423
- return _getProductStorage()._riskService;
424
- }
425
455
  }
@@ -33,18 +33,17 @@ contract RiskService is
33
33
  virtual override
34
34
  {
35
35
  (
36
- address registryAddress,,
37
- //address managerAddress
36
+ address registryAddress,
38
37
  address authority
39
- ) = abi.decode(data, (address, address, address));
38
+ ) = abi.decode(data, (address, address));
40
39
 
41
- initializeService(registryAddress, authority, owner);
40
+ _initializeService(registryAddress, authority, owner);
42
41
 
43
42
  _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
44
43
  _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
45
44
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
46
45
 
47
- registerInterface(type(IRiskService).interfaceId);
46
+ _registerInterface(type(IRiskService).interfaceId);
48
47
  }
49
48
 
50
49
 
@@ -12,14 +12,14 @@ contract RiskServiceManager is ProxyManager {
12
12
  /// @dev initializes proxy manager with product service implementation
13
13
  constructor(
14
14
  address authority,
15
- address registryAddress,
15
+ address registry,
16
16
  bytes32 salt
17
17
  )
18
- ProxyManager(registryAddress)
19
18
  {
20
19
  RiskService svc = new RiskService{salt: salt}();
21
- bytes memory data = abi.encode(registryAddress, address(this), authority);
22
- IVersionable versionable = deployDetermenistic(
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
23
  address(svc),
24
24
  data,
25
25
  salt);
@@ -8,6 +8,8 @@ import {ITransferInterceptor} from "./ITransferInterceptor.sol";
8
8
 
9
9
  contract ChainNft is ERC721Enumerable {
10
10
 
11
+ event LogTokenInterceptorAddress(uint256 tokenId, address interceptor);
12
+
11
13
  // constants
12
14
  string public constant NAME = "Dezentralized Insurance Protocol NFT";
13
15
  string public constant SYMBOL = "DIPNFT";
@@ -15,12 +17,11 @@ contract ChainNft is ERC721Enumerable {
15
17
  uint256 public constant PROTOCOL_NFT_ID = 1101;
16
18
  uint256 public constant GLOBAL_REGISTRY_ID = 2101;
17
19
 
18
- // TODO rename errors to error pattern: CallerNotRegistry -> ErrorCallerNotRegistry etc.
19
20
  // custom errors
20
- error CallerNotRegistry(address caller);
21
- error RegistryAddressZero();
22
- error NftUriEmpty();
23
- error NftUriAlreadySet();
21
+ error ErrorChainNftCallerNotRegistry(address caller);
22
+ error ErrorChainNftRegistryAddressZero();
23
+ error ErrorChainNftUriEmpty();
24
+ error ErrorChainNftUriAlreadySet();
24
25
 
25
26
  // contract state
26
27
 
@@ -34,31 +35,25 @@ contract ChainNft is ERC721Enumerable {
34
35
  address private _registry;
35
36
 
36
37
  // only used for _getNextTokenId
37
- uint256 internal _chainIdInt;
38
38
  uint256 internal _chainIdDigits;
39
39
  uint256 internal _chainIdMultiplier;
40
40
  uint256 internal _idNext;
41
41
  uint256 internal _totalMinted;
42
42
 
43
43
  modifier onlyRegistry() {
44
- if (msg.sender != _registry) { revert CallerNotRegistry(msg.sender); }
44
+ if (msg.sender != _registry) { revert ErrorChainNftCallerNotRegistry(msg.sender); }
45
45
  _;
46
46
  }
47
47
 
48
- constructor(address registry) ERC721(NAME, SYMBOL) {
49
- if (registry == address(0)) { revert RegistryAddressZero(); }
48
+ constructor(address registry)
49
+ ERC721(NAME, SYMBOL)
50
+ {
51
+ if (registry == address(0)) { revert ErrorChainNftRegistryAddressZero(); }
50
52
 
53
+ // NFT contract is deployed by the registry
51
54
  _registry = registry;
52
- _chainIdInt = block.chainid;
53
- _chainIdDigits = 0;
54
-
55
- // count digis
56
- uint256 num = _chainIdInt;
57
- while (num != 0) {
58
- _chainIdDigits++;
59
- num /= 10;
60
- }
61
55
 
56
+ _chainIdDigits = _calculateChainIdDigits(block.chainid);
62
57
  _chainIdMultiplier = 10 ** _chainIdDigits;
63
58
 
64
59
  // the first object registered through normal registration starts with id 4
@@ -74,12 +69,16 @@ contract ChainNft is ERC721Enumerable {
74
69
  * not part of the IRegistry interface only needed for
75
70
  * initial registry setup (protocol and global registry objects)
76
71
  */
77
- function mint(address to, uint256 tokenId) external onlyRegistry {
78
- _totalMinted++;
79
- _safeMint(to, tokenId);
72
+ function mint(
73
+ address to,
74
+ uint256 tokenId
75
+ )
76
+ external
77
+ onlyRegistry()
78
+ {
79
+ _safeMintWithInterceptorAddress(to, tokenId, address(0));
80
80
  }
81
81
 
82
-
83
82
  /**
84
83
  * @dev mints the next token to register new objects
85
84
  * non-zero transferInterceptors are recorded and called during nft token transfers.
@@ -89,7 +88,11 @@ contract ChainNft is ERC721Enumerable {
89
88
  address to,
90
89
  address interceptor,
91
90
  string memory uri
92
- ) public onlyRegistry returns (uint256 tokenId) {
91
+ )
92
+ public
93
+ onlyRegistry()
94
+ returns (uint256 tokenId)
95
+ {
93
96
  tokenId = _getNextTokenId();
94
97
 
95
98
  if (interceptor != address(0)) {
@@ -100,12 +103,7 @@ contract ChainNft is ERC721Enumerable {
100
103
  _uri[tokenId] = uri;
101
104
  }
102
105
 
103
- _totalMinted++;
104
- _safeMint(to, tokenId);
105
-
106
- if(interceptor != address(0)) {
107
- ITransferInterceptor(interceptor).nftMint(to, tokenId);
108
- }
106
+ _safeMintWithInterceptorAddress(to, tokenId, interceptor);
109
107
  }
110
108
 
111
109
 
@@ -132,8 +130,8 @@ contract ChainNft is ERC721Enumerable {
132
130
  uint256 tokenId,
133
131
  string memory uri
134
132
  ) external onlyRegistry {
135
- if (bytes(uri).length == 0) { revert NftUriEmpty(); }
136
- if (bytes(_uri[tokenId]).length > 0) { revert NftUriAlreadySet(); }
133
+ if (bytes(uri).length == 0) { revert ErrorChainNftUriEmpty(); }
134
+ if (bytes(_uri[tokenId]).length > 0) { revert ErrorChainNftUriAlreadySet(); }
137
135
 
138
136
  _requireOwned(tokenId);
139
137
  _uri[tokenId] = uri;
@@ -199,19 +197,50 @@ contract ChainNft is ERC721Enumerable {
199
197
  * (42 * 10 ** 10 + 9876543210) * 100 + 10
200
198
  * (index * 10 ** digits + chainid) * 100 + digits (1 < digits < 100)
201
199
  */
202
- function calculateTokenId(uint256 idIndex) public view returns (uint256 id) {
203
- id =
204
- (idIndex * _chainIdMultiplier + _chainIdInt) *
205
- 100 +
206
- _chainIdDigits;
200
+ function calculateTokenId(uint256 idIndex, uint256 chainId) public view returns (uint256 id) {
201
+ if(chainId == block.chainid) {
202
+ return 100 * (idIndex * _chainIdMultiplier + chainId) + _chainIdDigits;
203
+ } else {
204
+ uint256 chainIdDigits = _calculateChainIdDigits(chainId);
205
+ return 100 * (idIndex * (10 ** chainIdDigits) + chainId) + chainIdDigits;
206
+ }
207
+ }
208
+
209
+ function calculateTokenId(uint256 idIndex) public view returns (uint256) {
210
+ return 100 * (idIndex * _chainIdMultiplier + block.chainid) + _chainIdDigits;
207
211
  }
208
212
 
209
213
  function getNextTokenId() external view returns (uint256) {
210
214
  return calculateTokenId(_idNext);
211
215
  }
212
216
 
217
+ // ---------------- private functions ----------------- //
218
+
213
219
  function _getNextTokenId() private returns (uint256 id) {
214
220
  id = calculateTokenId(_idNext);
215
221
  _idNext++;
216
222
  }
223
+
224
+ function _calculateChainIdDigits(uint256 chainId) private pure returns (uint256) {
225
+ uint256 num = chainId;
226
+ uint256 digits = 0;
227
+ while (num != 0) {
228
+ digits++;
229
+ num /= 10;
230
+ }
231
+ return digits;
232
+ }
233
+
234
+ function _safeMintWithInterceptorAddress(
235
+ address to,
236
+ uint256 tokenId,
237
+ address interceptor
238
+ )
239
+ private
240
+ {
241
+ _totalMinted++;
242
+ _safeMint(to, tokenId);
243
+
244
+ emit LogTokenInterceptorAddress(tokenId, interceptor);
245
+ }
217
246
  }