@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
@@ -14,7 +14,6 @@ interface IComponents {
14
14
 
15
15
  struct ComponentInfo {
16
16
  string name; // component name (needs to be unique per instance)
17
- NftId productNftId;
18
17
  IERC20Metadata token;
19
18
  TokenHandler tokenHandler;
20
19
  address wallet;
@@ -22,8 +21,13 @@ interface IComponents {
22
21
  }
23
22
 
24
23
  struct ProductInfo {
25
- NftId distributionNftId;
26
- NftId poolNftId;
24
+ bool isProcessingFundedClaims; // custom logic to react to pool events for funded claims
25
+ bool hasDistribution; // flag to indicate if distribution is enabled
26
+ uint8 expectedNumberOfOracles; // expected number of oracles
27
+ uint8 numberOfOracles; // actual number of oracles
28
+ NftId poolNftId; // mandatory
29
+ NftId distributionNftId; // 0..1 (optional)
30
+ NftId [] oracleNftId; // 0..n (optional)
27
31
  Fee productFee; // product fee on net premium
28
32
  Fee processingFee; // product fee on payout amounts
29
33
  Fee distributionFee; // distribution fee for sales that do not include commissions
@@ -37,7 +41,8 @@ interface IComponents {
37
41
  struct PoolInfo {
38
42
  Amount maxBalanceAmount; // max balance amount allowed for pool
39
43
  RoleId bundleOwnerRole; // the required role for bundle owners
40
- bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
44
+ bool isInterceptingBundleTransfers; // custom logic for bundle nft transfers
45
+ bool isProcessingConfirmedClaims; // custom logic for claims confirmation
41
46
  bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
42
47
  bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications
43
48
  UFixed collateralizationLevel; // factor to calculate collateral for sum insurance (default 100%)
@@ -66,8 +66,8 @@ interface IPolicy {
66
66
  struct ClaimInfo {
67
67
  Amount claimAmount;
68
68
  Amount paidAmount;
69
- uint8 payoutsCount;
70
- uint8 openPayoutsCount;
69
+ uint24 payoutsCount;
70
+ uint24 openPayoutsCount;
71
71
  bytes submissionData; // use case specific claim submission data, no changes after submitting the claim
72
72
  bytes processData; // use case specific data that may include information supporting confirm or decline
73
73
  Timestamp closedAt; // payment of confirmed claim amount (or declinedAt)
@@ -42,7 +42,6 @@ contract BasicOracle is
42
42
  initialOwner,
43
43
  name,
44
44
  token,
45
- "",
46
45
  "");
47
46
  }
48
47
  }
@@ -3,6 +3,7 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IService} from "../shared/IService.sol";
5
5
  import {NftId} from "../type/NftId.sol";
6
+ import {ObjectType} from "../type/ObjectType.sol";
6
7
  import {RequestId} from "../type/RequestId.sol";
7
8
  import {StateId} from "../type/StateId.sol";
8
9
  import {Timestamp} from "../type/Timestamp.sol";
@@ -17,7 +18,7 @@ interface IOracleService is IService {
17
18
  event LogOracleServiceRequestCancelled(RequestId requestId, NftId requesterNftId);
18
19
 
19
20
  // create request
20
- error ErrorOracleServiceInstanceMismatch(NftId expectedInstanceNftId, NftId oracleInstanceNftId);
21
+ error ErrorOracleServiceProductMismatch(ObjectType callerObjectType, NftId productNft, NftId oracleParentNftId);
21
22
  error ErrorOracleServiceExpiryInThePast(Timestamp blockTimestamp, Timestamp expiryAt);
22
23
  error ErrorOracleServiceCallbackMethodNameEmpty();
23
24
 
@@ -2,7 +2,7 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount} from "../type/Amount.sol";
5
- import {COMPONENT, ORACLE} from "../type/ObjectType.sol";
5
+ import {COMPONENT, PRODUCT, ORACLE} from "../type/ObjectType.sol";
6
6
  import {IAuthorization} from "../authorization/IAuthorization.sol";
7
7
  import {IComponentService} from "../shared/IComponentService.sol";
8
8
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
@@ -27,15 +27,6 @@ abstract contract Oracle is
27
27
  }
28
28
 
29
29
 
30
- function register()
31
- external
32
- virtual
33
- onlyOwner()
34
- {
35
- _getOracleStorage()._componentService.registerOracle();
36
- }
37
-
38
-
39
30
  function request(
40
31
  RequestId requestId,
41
32
  NftId requesterId,
@@ -86,12 +77,11 @@ abstract contract Oracle is
86
77
 
87
78
  function _initializeOracle(
88
79
  address registry,
89
- NftId instanceNftId,
80
+ NftId productNftId,
90
81
  IAuthorization authorization,
91
82
  address initialOwner,
92
83
  string memory name,
93
84
  address token,
94
- bytes memory registryData, // writeonly data that will saved in the object info record of the registry
95
85
  bytes memory componentData // component specifidc data
96
86
  )
97
87
  internal
@@ -100,21 +90,20 @@ abstract contract Oracle is
100
90
  {
101
91
  _initializeInstanceLinkedComponent(
102
92
  registry,
103
- instanceNftId,
93
+ productNftId,
104
94
  name,
105
95
  token,
106
96
  ORACLE(),
107
97
  authorization,
108
98
  true,
109
99
  initialOwner,
110
- registryData,
111
100
  componentData);
112
101
 
113
102
  OracleStorage storage $ = _getOracleStorage();
114
- $._oracleService = IOracleService(_getServiceAddress(ORACLE()));
115
103
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
104
+ $._oracleService = IOracleService(_getServiceAddress(ORACLE()));
116
105
 
117
- registerInterface(type(IOracleComponent).interfaceId);
106
+ _registerInterface(type(IOracleComponent).interfaceId);
118
107
  }
119
108
 
120
109
 
@@ -11,7 +11,7 @@ import {IOracleComponent} from "./IOracleComponent.sol";
11
11
  import {IOracleService} from "./IOracleService.sol";
12
12
  import {IRegistry} from "../registry/IRegistry.sol";
13
13
  import {NftId} from "../type/NftId.sol";
14
- import {ObjectType, COMPONENT, ORACLE, INSTANCE} from "../type/ObjectType.sol";
14
+ import {ObjectType, COMPONENT, ORACLE, PRODUCT} from "../type/ObjectType.sol";
15
15
  import {RequestId} from "../type/RequestId.sol";
16
16
  import {StateId, ACTIVE, KEEP_STATE, FULFILLED, FAILED, CANCELLED} from "../type/StateId.sol";
17
17
  import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
@@ -27,14 +27,16 @@ contract OracleService is
27
27
  bytes memory data
28
28
  )
29
29
  internal
30
- initializer
31
30
  virtual override
31
+ initializer()
32
32
  {
33
- address initialOwner;
34
- address registryAddress;
35
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
36
- initializeService(registryAddress, address(0), owner);
37
- registerInterface(type(IOracleService).interfaceId);
33
+ (
34
+ address registryAddress,
35
+ address authority
36
+ ) = abi.decode(data, (address, address));
37
+
38
+ _initializeService(registryAddress, authority, owner);
39
+ _registerInterface(type(IOracleService).interfaceId);
38
40
  }
39
41
 
40
42
  function request(
@@ -46,6 +48,7 @@ contract OracleService is
46
48
  external
47
49
  virtual
48
50
  // restricted() // add authz
51
+ onlyNftOfType(oracleNftId, ORACLE())
49
52
  returns (
50
53
  RequestId requestId
51
54
  )
@@ -64,36 +67,45 @@ contract OracleService is
64
67
  ORACLE(),
65
68
  true); // only active
66
69
 
67
- // TODO move to stronger validation, requester and oracle need to belong to same product cluster
68
- // check that requester and oracle share same instance
69
- if (componentInfo.parentNftId != oracleInfo.parentNftId) {
70
- revert ErrorOracleServiceInstanceMismatch(componentInfo.parentNftId, oracleInfo.parentNftId);
71
- }
70
+ {
71
+ // check that requester and oracle share same product cluster
72
+ if (componentInfo.objectType == PRODUCT()) {
73
+ if (oracleInfo.parentNftId != componentInfo.nftId) {
74
+ revert ErrorOracleServiceProductMismatch(componentInfo.objectType, componentInfo.nftId, oracleInfo.parentNftId);
75
+ }
76
+ } else {
77
+ if (oracleInfo.parentNftId != componentInfo.parentNftId) {
78
+ revert ErrorOracleServiceProductMismatch(componentInfo.objectType, componentInfo.parentNftId, oracleInfo.parentNftId);
79
+ }
80
+ }
72
81
 
73
- // check expiriyAt >= now
74
- if (expiryAt < TimestampLib.blockTimestamp()) {
75
- revert ErrorOracleServiceExpiryInThePast(TimestampLib.blockTimestamp(), expiryAt);
76
- }
82
+ // check expiriyAt >= now
83
+ if (expiryAt < TimestampLib.blockTimestamp()) {
84
+ revert ErrorOracleServiceExpiryInThePast(TimestampLib.blockTimestamp(), expiryAt);
85
+ }
77
86
 
78
- // check callbackMethodName.length > 0
79
- if (bytes(callbackMethodName).length == 0) {
80
- revert ErrorOracleServiceCallbackMethodNameEmpty();
87
+ // check callbackMethodName.length > 0
88
+ if (bytes(callbackMethodName).length == 0) {
89
+ revert ErrorOracleServiceCallbackMethodNameEmpty();
90
+ }
81
91
  }
82
92
 
83
- // create request info
84
- IOracle.RequestInfo memory request = IOracle.RequestInfo({
85
- requesterNftId: componentNftId,
86
- callbackMethodName: callbackMethodName,
87
- oracleNftId: oracleNftId,
88
- requestData: requestData,
89
- responseData: "",
90
- respondedAt: TimestampLib.zero(),
91
- expiredAt: expiryAt,
92
- isCancelled: false
93
- });
94
-
95
- // store request with instance
96
- requestId = instance.getInstanceStore().createRequest(request);
93
+ {
94
+ // create request info
95
+ IOracle.RequestInfo memory request = IOracle.RequestInfo({
96
+ requesterNftId: componentNftId,
97
+ callbackMethodName: callbackMethodName,
98
+ oracleNftId: oracleNftId,
99
+ requestData: requestData,
100
+ responseData: "",
101
+ respondedAt: TimestampLib.zero(),
102
+ expiredAt: expiryAt,
103
+ isCancelled: false
104
+ });
105
+
106
+ // store request with instance
107
+ requestId = instance.getInstanceStore().createRequest(request);
108
+ }
97
109
 
98
110
  // call oracle component
99
111
  IOracleComponent(oracleInfo.objectAddress).request(
@@ -215,7 +227,7 @@ contract OracleService is
215
227
 
216
228
  // call oracle component
217
229
  // TODO add check that oracle is active?
218
- address oracleAddress = getRegistry().getObjectInfo(request.oracleNftId).objectAddress;
230
+ address oracleAddress = getRegistry().getObjectAddress(request.oracleNftId);
219
231
  IOracleComponent(oracleAddress).cancel(requestId);
220
232
 
221
233
  emit LogOracleServiceRequestCancelled(requestId, requesterNftId);
@@ -268,7 +280,7 @@ contract OracleService is
268
280
  returns(IInstance instance)
269
281
  {
270
282
  NftId instanceNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
271
- address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
283
+ address instanceAddress = getRegistry().getObjectAddress(instanceNftId);
272
284
  return IInstance(instanceAddress);
273
285
  }
274
286
 
@@ -12,15 +12,15 @@ contract OracleServiceManager is ProxyManager {
12
12
  /// @dev initializes proxy manager with service implementation and deploys instance
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
- OracleService orclSrv = new OracleService{salt: salt}();
21
- bytes memory data = abi.encode(registryAddress, address(this), authority);
22
- IVersionable versionable = deployDetermenistic(
23
- address(orclSrv),
19
+ OracleService svc = new OracleService{salt: salt}();
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
24
24
  data,
25
25
  salt);
26
26
 
@@ -1,22 +1,14 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Amount, AmountLib} from "../type/Amount.sol";
5
- import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
6
- import {Fee, FeeLib} from "../type/Fee.sol";
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {Fee} from "../type/Fee.sol";
7
6
  import {IAuthorization} from "../authorization/IAuthorization.sol";
8
- import {IBundleService} from "./IBundleService.sol";
9
- import {IPoolComponent} from "./IPoolComponent.sol";
10
- import {IPoolService} from "./IPoolService.sol";
11
- import {IComponents} from "../instance/module/IComponents.sol";
12
- import {IComponentService} from "../shared/IComponentService.sol";
13
- import {NftId, NftIdLib} from "../type/NftId.sol";
14
- import {BUNDLE, COMPONENT, POOL} from "../type/ObjectType.sol";
15
- import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {BUNDLE} from "../type/ObjectType.sol";
9
+ import {RoleId} from "../type/RoleId.sol";
16
10
  import {Seconds} from "../type/Seconds.sol";
17
11
  import {Timestamp} from "../type/Timestamp.sol";
18
- import {TokenHandler} from "../shared/TokenHandler.sol";
19
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
20
12
 
21
13
  import {Pool} from "./Pool.sol";
22
14
 
@@ -26,7 +18,7 @@ abstract contract BasicPool is
26
18
 
27
19
  function _initializeBasicPool(
28
20
  address registry,
29
- NftId instanceNftId,
21
+ NftId productNftId,
30
22
  IAuthorization authorization,
31
23
  address token,
32
24
  string memory name,
@@ -38,13 +30,12 @@ abstract contract BasicPool is
38
30
  {
39
31
  _initializePool(
40
32
  registry,
41
- instanceNftId,
33
+ productNftId,
42
34
  name,
43
35
  token,
44
36
  authorization,
45
37
  false, // isInterceptingNftTransfers,
46
38
  initialOwner,
47
- "", // registryData
48
39
  ""); // componentData
49
40
  }
50
41
 
@@ -56,6 +47,7 @@ abstract contract BasicPool is
56
47
  virtual
57
48
  restricted()
58
49
  onlyBundleOwner(bundleNftId)
50
+ onlyNftOfType(bundleNftId, BUNDLE())
59
51
  {
60
52
  _stake(bundleNftId, amount);
61
53
  }
@@ -69,6 +61,7 @@ abstract contract BasicPool is
69
61
  virtual
70
62
  restricted()
71
63
  onlyBundleOwner(bundleNftId)
64
+ onlyNftOfType(bundleNftId, BUNDLE())
72
65
  {
73
66
  _unstake(bundleNftId, amount);
74
67
  }
@@ -82,6 +75,7 @@ abstract contract BasicPool is
82
75
  virtual
83
76
  restricted()
84
77
  onlyBundleOwner(bundleNftId)
78
+ onlyNftOfType(bundleNftId, BUNDLE())
85
79
  returns(Timestamp newExpiredAt)
86
80
  {
87
81
  return _extend(bundleNftId, lifetimeExtension);
@@ -93,6 +87,7 @@ abstract contract BasicPool is
93
87
  virtual
94
88
  restricted()
95
89
  onlyBundleOwner(bundleNftId)
90
+ onlyNftOfType(bundleNftId, BUNDLE())
96
91
  {
97
92
  _lockBundle(bundleNftId);
98
93
  }
@@ -103,6 +98,7 @@ abstract contract BasicPool is
103
98
  virtual
104
99
  restricted()
105
100
  onlyBundleOwner(bundleNftId)
101
+ onlyNftOfType(bundleNftId, BUNDLE())
106
102
  {
107
103
  _unlockBundle(bundleNftId);
108
104
  }
@@ -113,6 +109,7 @@ abstract contract BasicPool is
113
109
  virtual
114
110
  restricted()
115
111
  onlyBundleOwner(bundleNftId)
112
+ onlyNftOfType(bundleNftId, BUNDLE())
116
113
  {
117
114
  _closeBundle(bundleNftId);
118
115
  }
@@ -126,6 +123,7 @@ abstract contract BasicPool is
126
123
  virtual
127
124
  restricted()
128
125
  onlyBundleOwner(bundleNftId)
126
+ onlyNftOfType(bundleNftId, BUNDLE())
129
127
  {
130
128
  _setBundleFee(bundleNftId, fee);
131
129
  }
@@ -141,16 +139,6 @@ abstract contract BasicPool is
141
139
  }
142
140
 
143
141
 
144
- function setBundleOwnerRole(RoleId bundleOwnerRole)
145
- public
146
- virtual
147
- restricted()
148
- onlyOwner()
149
- {
150
- _setBundleOwnerRole(bundleOwnerRole);
151
- }
152
-
153
-
154
142
  function setFees(
155
143
  Fee memory poolFee,
156
144
  Fee memory stakingFee,
@@ -44,7 +44,6 @@ contract BasicPoolAuthorization
44
44
  _authorize(functions, BasicPool.setBundleFee.selector, "setBundleFee");
45
45
 
46
46
  _authorize(functions, BasicPool.setMaxBalanceAmount.selector, "setMaxBalanceAmount");
47
- _authorize(functions, BasicPool.setBundleOwnerRole.selector, "setBundleOwnerRole");
48
47
  _authorize(functions, BasicPool.setFees.selector, "setFees");
49
48
  _authorize(functions, BasicPool.stake.selector, "stake");
50
49
  _authorize(functions, BasicPool.unstake.selector, "unstake");
@@ -40,20 +40,20 @@ contract BundleService is
40
40
  bytes memory data
41
41
  )
42
42
  internal
43
- initializer
44
43
  virtual override
44
+ initializer()
45
45
  {
46
- address registryAddress;
47
- address initialOwner;
48
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
49
- // TODO while PoolService is not deployed in PoolServiceManager constructor
50
- // owner is PoolServiceManager deployer
51
- initializeService(registryAddress, address(0), owner);
46
+ (
47
+ address registryAddress,
48
+ address authority
49
+ ) = abi.decode(data, (address, address));
50
+
51
+ _initializeService(registryAddress, authority, owner);
52
52
 
53
53
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
54
54
  _componentService = IComponentService(_getServiceAddress(COMPONENT()));
55
55
 
56
- registerInterface(type(IBundleService).interfaceId);
56
+ _registerInterface(type(IBundleService).interfaceId);
57
57
  }
58
58
 
59
59
 
@@ -367,7 +367,7 @@ contract BundleService is
367
367
  restricted
368
368
  {
369
369
  // ensure policy is closeable
370
- if (!instance.getInstanceReader().policyIsCloseable(policyNftId)) {
370
+ if (!policyIsCloseable(instance, policyNftId)) {
371
371
  revert ErrorBundleServicePolicyNotCloseable(policyNftId);
372
372
  }
373
373
 
@@ -416,6 +416,29 @@ contract BundleService is
416
416
  }
417
417
  }
418
418
 
419
+ /// @inheritdoc IBundleService
420
+ function policyIsCloseable(IInstance instance, NftId policyNftId)
421
+ public
422
+ view
423
+ returns (bool isCloseable)
424
+ {
425
+ IPolicy.PolicyInfo memory info = instance.getInstanceReader().getPolicyInfo(policyNftId);
426
+
427
+ if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
428
+ if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
429
+ if (info.closedAt.gtz()) { return false; } // not closeable: already closed
430
+ if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
431
+
432
+ // closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
433
+ if (info.claimAmount == info.sumInsuredAmount) { return true; }
434
+
435
+ // not closeable: not yet expired
436
+ if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
437
+
438
+ // all conditionsl to close the policy are met
439
+ return true;
440
+ }
441
+
419
442
  /// @dev links policy to bundle
420
443
  function _linkPolicy(IInstance instance, NftId policyNftId)
421
444
  internal
@@ -12,15 +12,15 @@ contract BundleServiceManager is ProxyManager {
12
12
  /// @dev initializes proxy manager with pool 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
- BundleService bundleSrv = new BundleService{salt: salt}();
21
- bytes memory data = abi.encode(registryAddress, address(this), authority);
22
- IVersionable versionable = deployDetermenistic(
23
- address(bundleSrv),
19
+ BundleService svc = new BundleService{salt: salt}();
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
24
24
  data,
25
25
  salt);
26
26
 
@@ -131,4 +131,13 @@ interface IBundleService is IService {
131
131
  /// @return withdrawnAmount the effective withdrawn amount
132
132
  function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
133
133
 
134
+ /// @dev returns true iff policy may be closed
135
+ /// a policy can be closed all conditions below are met
136
+ /// - policy exists
137
+ /// - has been activated
138
+ /// - is not yet closed
139
+ /// - has no open claims
140
+ /// - claim amount matches sum insured amount or is expired
141
+ function policyIsCloseable(IInstance instance, NftId policyNftId) external view returns (bool isCloseable);
142
+
134
143
  }
@@ -2,6 +2,7 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount} from "../type/Amount.sol";
5
+ import {ClaimId} from "../type/ClaimId.sol";
5
6
  import {Fee} from "../type/Fee.sol";
6
7
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
7
8
  import {IComponents} from "../instance/module/IComponents.sol";
@@ -20,10 +21,10 @@ interface IPoolComponent is IInstanceLinkedComponent {
20
21
 
21
22
  event LogPoolVerifiedByPool(address pool, NftId applicationNftId, Amount collateralizationAmount);
22
23
 
23
- /// @dev this is a callback function that is called by the product service when underwriting a policy.
24
- /// the pool has the option to check the details and object to underwriting by reverting.
25
- /// the function is only called for "active" pools that ask to be involved/notified
26
- /// by product related state changes.
24
+ /// @dev This is a callback function that is called by the product service when underwriting a policy.
25
+ /// The pool has the option to check the details and object to underwriting by reverting.
26
+ /// The function is only called for "active" pools that ask to be involved/notified.
27
+ /// The default implementation is empty.
27
28
  function verifyApplication(
28
29
  NftId applicationNftId,
29
30
  bytes memory applicationData,
@@ -32,9 +33,9 @@ interface IPoolComponent is IInstanceLinkedComponent {
32
33
  Amount collateralizationAmount
33
34
  ) external;
34
35
 
35
- /// @dev returns true iff the application matches with the bundle
36
- /// this is a callback function that is only called if a pool declares itself as a verifying pool
37
- /// default implementation returns true
36
+ /// @dev Returns true iff the application matches with the bundle.
37
+ /// This is a callback function that is only called if a pool declares itself as a verifying pool
38
+ /// The default implementation returns true.
38
39
  function applicationMatchesBundle(
39
40
  NftId applicationNftId,
40
41
  bytes memory applicationData,
@@ -46,13 +47,22 @@ interface IPoolComponent is IInstanceLinkedComponent {
46
47
  view
47
48
  returns (bool isMatching);
48
49
 
50
+ /// @dev This is a callback function that is called by the claim service when a claim is confirmed.
51
+ /// The pool has the option to implement custom behavirous such as triggering a reinsurance claim or blocking the claim confirmaation.
52
+ /// The default implementation is empty.
53
+ function processConfirmedClaim(
54
+ NftId policyNftId,
55
+ ClaimId claimId,
56
+ Amount amount
57
+ ) external;
58
+
49
59
  /// @dev Withdraw bundle feeds for the given bundle
50
60
  /// @param bundleNftId the bundle Nft Id
51
61
  /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
52
62
  /// @return withdrawnAmount the effective withdrawn amount
53
63
  function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
54
64
 
55
- /// @dev returns initial pool specific infos for this pool
65
+ /// @dev Returns initial pool specific infos for this pool
56
66
  function getInitialPoolInfo() external view returns (IComponents.PoolInfo memory info);
57
67
 
58
68
  }