@etherisc/gif-next 0.0.2-e987ccf-894 → 0.0.2-e9c5694-914

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 (444) 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 +151 -249
  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 +91 -213
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +141 -198
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +107 -107
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +78 -66
  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 +1538 -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 +2072 -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 +1471 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -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 +53 -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 +56 -123
  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 +310 -83
  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 +207 -241
  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 +132 -230
  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 +73 -61
  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 +86 -208
  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 +109 -216
  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 +98 -58
  115. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  116. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +200 -125
  117. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  118. package/artifacts/contracts/pool/Pool.sol/Pool.json +109 -203
  119. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  120. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +308 -274
  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 -152
  125. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -84
  127. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  128. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +140 -221
  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 +288 -188
  133. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  134. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +119 -103
  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 +161 -7
  139. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  140. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +141 -11
  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 +131 -78
  145. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  146. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
  147. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  148. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +258 -195
  149. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +114 -98
  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 -221
  157. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  158. package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
  159. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  160. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
  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 +5 -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 +68 -175
  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 +55 -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 +73 -61
  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 +86 -208
  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 +82 -29
  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 +83 -30
  244. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  245. package/artifacts/contracts/staking/Staking.sol/Staking.json +171 -224
  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 +102 -87
  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 +54 -23
  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/Seconds.sol/SecondsLib.json +26 -2
  290. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  294. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  297. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  299. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
  301. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  303. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  304. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  305. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +55 -70
  306. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  307. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  308. package/contracts/authorization/AccessAdmin.sol +64 -59
  309. package/contracts/authorization/Authorization.sol +111 -39
  310. package/contracts/authorization/IAccess.sol +1 -0
  311. package/contracts/authorization/IAccessAdmin.sol +4 -3
  312. package/contracts/authorization/IAuthorization.sol +13 -7
  313. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  314. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  315. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  316. package/contracts/distribution/BasicDistribution.sol +2 -1
  317. package/contracts/distribution/Distribution.sol +7 -17
  318. package/contracts/distribution/DistributionService.sol +63 -44
  319. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  320. package/contracts/distribution/IDistributionComponent.sol +1 -1
  321. package/contracts/examples/fire/DamageLevel.sol +59 -0
  322. package/contracts/examples/fire/FirePool.sol +73 -0
  323. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  324. package/contracts/examples/fire/FireProduct.sol +415 -0
  325. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  326. package/contracts/examples/fire/FireUSD.sol +26 -0
  327. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  328. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  329. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  330. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  331. package/contracts/instance/IInstance.sol +10 -30
  332. package/contracts/instance/IInstanceService.sol +0 -20
  333. package/contracts/instance/Instance.sol +29 -51
  334. package/contracts/instance/InstanceAdmin.sol +23 -31
  335. package/contracts/instance/InstanceAuthorizationV3.sol +10 -19
  336. package/contracts/instance/InstanceReader.sol +91 -18
  337. package/contracts/instance/InstanceService.sol +23 -77
  338. package/contracts/instance/InstanceServiceManager.sol +6 -7
  339. package/contracts/instance/InstanceStore.sol +0 -4
  340. package/contracts/instance/base/ObjectLifecycle.sol +2 -1
  341. package/contracts/instance/module/IComponents.sol +10 -5
  342. package/contracts/instance/module/IPolicy.sol +7 -7
  343. package/contracts/oracle/BasicOracle.sol +0 -1
  344. package/contracts/oracle/IOracleService.sol +2 -1
  345. package/contracts/oracle/Oracle.sol +6 -16
  346. package/contracts/oracle/OracleService.sol +47 -34
  347. package/contracts/oracle/OracleServiceManager.sol +6 -6
  348. package/contracts/pool/BasicPool.sol +14 -26
  349. package/contracts/pool/BasicPoolAuthorization.sol +0 -1
  350. package/contracts/pool/BundleService.sol +83 -28
  351. package/contracts/pool/BundleServiceManager.sol +6 -6
  352. package/contracts/pool/IBundleService.sol +9 -0
  353. package/contracts/pool/IPoolComponent.sol +18 -8
  354. package/contracts/pool/IPoolService.sol +21 -14
  355. package/contracts/pool/Pool.sol +48 -39
  356. package/contracts/pool/PoolService.sol +121 -86
  357. package/contracts/pool/PoolServiceManager.sol +4 -4
  358. package/contracts/product/ApplicationService.sol +20 -10
  359. package/contracts/product/ApplicationServiceManager.sol +4 -4
  360. package/contracts/product/BasicProduct.sol +7 -6
  361. package/contracts/product/BasicProductAuthorization.sol +0 -1
  362. package/contracts/product/ClaimService.sol +310 -114
  363. package/contracts/product/ClaimServiceManager.sol +4 -4
  364. package/contracts/product/IClaimService.sol +30 -7
  365. package/contracts/product/IPolicyService.sol +12 -5
  366. package/contracts/product/IPricingService.sol +9 -9
  367. package/contracts/product/IProductComponent.sol +23 -3
  368. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -2
  369. package/contracts/product/PolicyService.sol +168 -53
  370. package/contracts/product/PolicyServiceManager.sol +4 -4
  371. package/contracts/product/PricingService.sol +12 -13
  372. package/contracts/product/PricingServiceManager.sol +3 -3
  373. package/contracts/product/Product.sol +104 -55
  374. package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
  375. package/contracts/product/RiskServiceManager.sol +39 -0
  376. package/contracts/registry/ChainNft.sol +68 -38
  377. package/contracts/registry/IRegistry.sol +54 -17
  378. package/contracts/registry/IRegistryService.sol +5 -12
  379. package/contracts/registry/ITransferInterceptor.sol +1 -2
  380. package/contracts/registry/Registry.sol +341 -200
  381. package/contracts/registry/RegistryAdmin.sol +124 -50
  382. package/contracts/registry/RegistryService.sol +35 -46
  383. package/contracts/registry/RegistryServiceManager.sol +2 -2
  384. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  385. package/contracts/registry/ReleaseRegistry.sol +203 -187
  386. package/contracts/registry/ServiceAuthorizationV3.sol +14 -19
  387. package/contracts/shared/Component.sol +29 -32
  388. package/contracts/shared/ComponentService.sol +241 -137
  389. package/contracts/shared/ComponentServiceManager.sol +8 -5
  390. package/contracts/shared/ComponentVerifyingService.sol +22 -13
  391. package/contracts/shared/ContractLib.sol +38 -0
  392. package/contracts/shared/IComponent.sol +6 -2
  393. package/contracts/shared/IComponentService.sol +25 -13
  394. package/contracts/shared/IInstanceLinkedComponent.sol +2 -17
  395. package/contracts/shared/ILifecycle.sol +3 -1
  396. package/contracts/shared/INftOwnable.sol +2 -0
  397. package/contracts/shared/IPolicyHolder.sol +12 -22
  398. package/contracts/shared/IRegisterable.sol +11 -0
  399. package/contracts/shared/InitializableERC165.sol +2 -2
  400. package/contracts/shared/InstanceLinkedComponent.sol +71 -30
  401. package/contracts/shared/KeyValueStore.sol +1 -1
  402. package/contracts/shared/Lifecycle.sol +15 -4
  403. package/contracts/shared/NftOwnable.sol +26 -6
  404. package/contracts/shared/PolicyHolder.sol +15 -52
  405. package/contracts/shared/Registerable.sol +19 -9
  406. package/contracts/shared/RegistryLinked.sol +3 -2
  407. package/contracts/shared/Service.sol +20 -18
  408. package/contracts/staking/IStaking.sol +2 -1
  409. package/contracts/staking/IStakingService.sol +0 -3
  410. package/contracts/staking/StakeManagerLib.sol +18 -0
  411. package/contracts/staking/Staking.sol +8 -8
  412. package/contracts/staking/StakingManager.sol +8 -6
  413. package/contracts/staking/StakingReader.sol +12 -5
  414. package/contracts/staking/StakingService.sol +17 -17
  415. package/contracts/staking/StakingServiceManager.sol +2 -2
  416. package/contracts/staking/TargetManagerLib.sol +7 -3
  417. package/contracts/type/Amount.sol +15 -0
  418. package/contracts/type/ClaimId.sol +6 -1
  419. package/contracts/type/NftId.sol +1 -0
  420. package/contracts/type/ObjectType.sol +1 -0
  421. package/contracts/type/PayoutId.sol +10 -10
  422. package/contracts/type/RiskId.sol +15 -1
  423. package/contracts/type/RoleId.sol +0 -12
  424. package/contracts/type/Seconds.sol +8 -0
  425. package/contracts/type/StateId.sol +15 -1
  426. package/contracts/type/UFixed.sol +4 -0
  427. package/contracts/upgradeability/ProxyManager.sol +68 -34
  428. package/contracts/upgradeability/Versionable.sol +2 -2
  429. package/package.json +2 -1
  430. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  431. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  432. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  433. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  434. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  435. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  436. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  437. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  438. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  439. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  440. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  441. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  442. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  443. package/contracts/product/ProductServiceManager.sol +0 -39
  444. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -9,7 +9,7 @@ import {NftId} from "../type/NftId.sol";
9
9
  import {Fee} from "../type/Fee.sol";
10
10
  import {ReferralId} from "../type/Referral.sol";
11
11
  import {RiskId} from "../type/RiskId.sol";
12
- import {PRODUCT, DISTRIBUTION, PRICE} from "../type/ObjectType.sol";
12
+ import {PRODUCT, BUNDLE, DISTRIBUTION, PRICE} from "../type/ObjectType.sol";
13
13
  import {IRegistry} from "../registry/IRegistry.sol";
14
14
 
15
15
  import {IProductComponent} from "./IProductComponent.sol";
@@ -31,11 +31,8 @@ contract PricingService is
31
31
  ComponentVerifyingService,
32
32
  IPricingService
33
33
  {
34
- using UFixedLib for UFixed;
35
-
36
34
  IDistributionService internal _distributionService;
37
35
 
38
-
39
36
  function _initialize(
40
37
  address owner,
41
38
  bytes memory data
@@ -45,13 +42,12 @@ contract PricingService is
45
42
  initializer()
46
43
  {
47
44
  (
48
- address registryAddress,,
49
- //address managerAddress
45
+ address registryAddress,
50
46
  address authority
51
- ) = abi.decode(data, (address, address, address));
47
+ ) = abi.decode(data, (address, address));
52
48
 
53
- initializeService(registryAddress, authority, owner);
54
- registerInterface(type(IPricingService).interfaceId);
49
+ _initializeService(registryAddress, authority, owner);
50
+ _registerInterface(type(IPricingService).interfaceId);
55
51
 
56
52
  _distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
57
53
  }
@@ -74,6 +70,9 @@ contract PricingService is
74
70
  IPolicy.PremiumInfo memory premium
75
71
  )
76
72
  {
73
+ _checkNftType(productNftId, PRODUCT());
74
+ _checkNftType(bundleNftId, BUNDLE());
75
+
77
76
  InstanceReader reader;
78
77
  Amount netPremiumAmount;
79
78
 
@@ -102,7 +101,7 @@ contract PricingService is
102
101
 
103
102
  IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
104
103
  if(bundleInfo.poolNftId != productInfo.poolNftId) {
105
- revert ErrorIPricingServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, productInfo.poolNftId);
104
+ revert ErrorPricingServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, productInfo.poolNftId);
106
105
  }
107
106
 
108
107
  // calculate fixed fees for product, pool, bundle
@@ -139,7 +138,7 @@ contract PricingService is
139
138
  }
140
139
 
141
140
  if (premium.distributionOwnerFeeFixAmount.toInt() < productInfo.minDistributionOwnerFee.fixedFee) {
142
- revert ErrorIPricingServiceFeeCalculationMismatch(
141
+ revert ErrorPricingServiceFeeCalculationMismatch(
143
142
  premium.distributionFeeFixAmount,
144
143
  premium.distributionFeeVarAmount,
145
144
  premium.distributionOwnerFeeFixAmount,
@@ -150,7 +149,7 @@ contract PricingService is
150
149
  }
151
150
 
152
151
  if ((premium.distributionFeeVarAmount) != (premium.discountAmount + premium.distributionOwnerFeeVarAmount + premium.commissionAmount)) {
153
- revert ErrorIPricingServiceFeeCalculationMismatch(
152
+ revert ErrorPricingServiceFeeCalculationMismatch(
154
153
  premium.distributionFeeFixAmount,
155
154
  premium.distributionFeeVarAmount,
156
155
  premium.distributionOwnerFeeFixAmount,
@@ -240,7 +239,7 @@ contract PricingService is
240
239
  {
241
240
 
242
241
  // if the referral is not valid, then the distribution owner gets everything
243
- if (! _distributionService.referralIsValid(productInfo.distributionNftId, referralId)) {
242
+ if (productInfo.distributionNftId.eqz() || ! _distributionService.referralIsValid(productInfo.distributionNftId, referralId)) {
244
243
  premium.distributionOwnerFeeFixAmount = premium.distributionFeeFixAmount;
245
244
  premium.distributionOwnerFeeVarAmount = premium.distributionFeeVarAmount;
246
245
  premium.premiumAmount = premium.fullPremiumAmount;
@@ -15,11 +15,11 @@ contract PricingServiceManager is ProxyManager {
15
15
  address registryAddress,
16
16
  bytes32 salt
17
17
  )
18
- ProxyManager(registryAddress)
19
18
  {
20
19
  PricingService pricingSrv = new PricingService{salt: salt}();
21
- bytes memory data = abi.encode(registryAddress, address(this), authority);
22
- IVersionable versionable = deployDetermenistic(
20
+ bytes memory data = abi.encode(registryAddress, authority);
21
+ IVersionable versionable = initialize(
22
+ registryAddress,
23
23
  address(pricingSrv),
24
24
  data,
25
25
  salt);
@@ -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
- import {IProductService} from "./IProductService.sol";
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 {
39
- IProductService _productService;
43
+ bool _isProcessingFundedClaims;
44
+ bool _hasDistribution;
45
+ uint8 _numberOfOracles;
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,9 +154,9 @@ abstract contract Product is
138
154
  string memory name,
139
155
  address token,
140
156
  bool isInterceptor,
141
- address pool,
142
- address distribution,
143
- 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,
144
160
  bytes memory componentData // writeonly data that will saved in the object info record of the registry
145
161
  )
146
162
  internal
@@ -156,24 +172,20 @@ abstract contract Product is
156
172
  authorization,
157
173
  isInterceptor,
158
174
  initialOwner,
159
- registryData,
160
175
  componentData);
161
176
 
162
177
  ProductStorage storage $ = _getProductStorage();
163
- // TODO add validation
164
- // TODO refactor to go via registry ?
165
- $._productService = IProductService(_getServiceAddress(PRODUCT()));
178
+ $._isProcessingFundedClaims = isProcessingFundedClaims;
179
+ $._hasDistribution = hasDistribution;
180
+ $._numberOfOracles = numberOfOracles;
181
+ $._riskService = IRiskService(_getServiceAddress(PRODUCT()));
166
182
  $._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
167
183
  $._policyService = IPolicyService(_getServiceAddress(POLICY()));
168
184
  $._claimService = IClaimService(_getServiceAddress(CLAIM()));
169
185
  $._pricingService = IPricingService(_getServiceAddress(PRICE()));
170
186
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
171
- $._pool = Pool(pool);
172
- $._distribution = Distribution(distribution);
173
- $._poolNftId = getRegistry().getNftIdForAddress(pool);
174
- $._distributionNftId = getRegistry().getNftIdForAddress(distribution);
175
187
 
176
- registerInterface(type(IProductComponent).interfaceId);
188
+ _registerInterface(type(IProductComponent).interfaceId);
177
189
  }
178
190
 
179
191
 
@@ -191,8 +203,11 @@ abstract contract Product is
191
203
  function _createRisk(
192
204
  RiskId id,
193
205
  bytes memory data
194
- ) internal {
195
- _getProductService().createRisk(
206
+ )
207
+ internal
208
+ virtual
209
+ {
210
+ _getProductStorage()._riskService.createRisk(
196
211
  id,
197
212
  data
198
213
  );
@@ -201,8 +216,11 @@ abstract contract Product is
201
216
  function _updateRisk(
202
217
  RiskId id,
203
218
  bytes memory data
204
- ) internal {
205
- _getProductService().updateRisk(
219
+ )
220
+ internal
221
+ virtual
222
+ {
223
+ _getProductStorage()._riskService.updateRisk(
206
224
  id,
207
225
  data
208
226
  );
@@ -211,15 +229,18 @@ abstract contract Product is
211
229
  function _updateRiskState(
212
230
  RiskId id,
213
231
  StateId state
214
- ) internal {
215
- _getProductService().updateRiskState(
232
+ )
233
+ internal
234
+ virtual
235
+ {
236
+ _getProductStorage()._riskService.updateRiskState(
216
237
  id,
217
238
  state
218
239
  );
219
240
  }
220
241
 
221
242
 
222
- function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
243
+ function _getRiskInfo(RiskId id) internal virtual view returns (IRisk.RiskInfo memory info) {
223
244
  return getInstance().getInstanceReader().getRiskInfo(id);
224
245
  }
225
246
 
@@ -235,6 +256,7 @@ abstract contract Product is
235
256
  bytes memory applicationData
236
257
  )
237
258
  internal
259
+ virtual
238
260
  returns (NftId applicationNftId)
239
261
  {
240
262
  return _getProductStorage()._applicationService.create(
@@ -254,6 +276,7 @@ abstract contract Product is
254
276
  Timestamp activateAt
255
277
  )
256
278
  internal
279
+ virtual
257
280
  {
258
281
  _getProductStorage()._policyService.createPolicy(
259
282
  applicationNftId,
@@ -264,6 +287,7 @@ abstract contract Product is
264
287
  NftId policyNftId
265
288
  )
266
289
  internal
290
+ virtual
267
291
  {
268
292
  _getProductStorage()._policyService.decline(
269
293
  policyNftId);
@@ -274,6 +298,7 @@ abstract contract Product is
274
298
  Timestamp expireAt
275
299
  )
276
300
  internal
301
+ virtual
277
302
  returns (Timestamp expiredAt)
278
303
  {
279
304
  expiredAt = _getProductStorage()._policyService.expire(policyNftId, expireAt);
@@ -284,6 +309,7 @@ abstract contract Product is
284
309
  Timestamp activateAt
285
310
  )
286
311
  internal
312
+ virtual
287
313
  {
288
314
  _getProductStorage()._policyService.collectPremium(
289
315
  policyNftId,
@@ -295,6 +321,7 @@ abstract contract Product is
295
321
  Timestamp activateAt
296
322
  )
297
323
  internal
324
+ virtual
298
325
  {
299
326
  _getProductStorage()._policyService.activate(
300
327
  policyNftId,
@@ -305,6 +332,7 @@ abstract contract Product is
305
332
  NftId policyNftId
306
333
  )
307
334
  internal
335
+ virtual
308
336
  {
309
337
  _getProductStorage()._policyService.close(
310
338
  policyNftId);
@@ -316,6 +344,7 @@ abstract contract Product is
316
344
  bytes memory claimData
317
345
  )
318
346
  internal
347
+ virtual
319
348
  returns(ClaimId)
320
349
  {
321
350
  return _getProductStorage()._claimService.submit(
@@ -331,6 +360,7 @@ abstract contract Product is
331
360
  bytes memory data
332
361
  )
333
362
  internal
363
+ virtual
334
364
  {
335
365
  _getProductStorage()._claimService.confirm(
336
366
  policyNftId,
@@ -345,6 +375,7 @@ abstract contract Product is
345
375
  bytes memory data
346
376
  )
347
377
  internal
378
+ virtual
348
379
  {
349
380
  _getProductStorage()._claimService.decline(
350
381
  policyNftId,
@@ -357,6 +388,7 @@ abstract contract Product is
357
388
  ClaimId claimId
358
389
  )
359
390
  internal
391
+ virtual
360
392
  {
361
393
  _getProductStorage()._claimService.close(
362
394
  policyNftId,
@@ -370,6 +402,7 @@ abstract contract Product is
370
402
  bytes memory data
371
403
  )
372
404
  internal
405
+ virtual
373
406
  returns (PayoutId)
374
407
  {
375
408
  return _getProductStorage()._claimService.createPayout(
@@ -379,28 +412,44 @@ abstract contract Product is
379
412
  data);
380
413
  }
381
414
 
415
+ function _createPayoutForBeneficiary(
416
+ NftId policyNftId,
417
+ ClaimId claimId,
418
+ Amount amount,
419
+ address beneficiary,
420
+ bytes memory data
421
+ )
422
+ internal
423
+ virtual
424
+ returns (PayoutId)
425
+ {
426
+ return _getProductStorage()._claimService.createPayoutForBeneficiary(
427
+ policyNftId,
428
+ claimId,
429
+ amount,
430
+ beneficiary,
431
+ data);
432
+ }
433
+
382
434
  function _processPayout(
383
435
  NftId policyNftId,
384
436
  PayoutId payoutId
385
437
  )
386
438
  internal
439
+ virtual
387
440
  {
388
441
  _getProductStorage()._claimService.processPayout(
389
442
  policyNftId,
390
443
  payoutId);
391
444
  }
392
445
 
393
- function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
446
+ function _toRiskId(string memory riskName) internal virtual pure returns (RiskId riskId) {
394
447
  return RiskIdLib.toRiskId(riskName);
395
448
  }
396
449
 
397
- function _getProductStorage() private pure returns (ProductStorage storage $) {
450
+ function _getProductStorage() internal virtual pure returns (ProductStorage storage $) {
398
451
  assembly {
399
452
  $.slot := PRODUCT_STORAGE_LOCATION_V1
400
453
  }
401
454
  }
402
-
403
- function _getProductService() internal view returns (IProductService) {
404
- return _getProductStorage()._productService;
405
- }
406
455
  }
@@ -4,7 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {IInstance} from "../instance/IInstance.sol";
5
5
  import {IInstanceService} from "../instance/IInstanceService.sol";
6
6
  import {IPoolService} from "../pool/PoolService.sol";
7
- import {IProductService} from "./IProductService.sol";
7
+ import {IRiskService} from "./IRiskService.sol";
8
8
  import {IRegistryService} from "../registry/IRegistryService.sol";
9
9
  import {IRisk} from "../instance/module/IRisk.sol";
10
10
 
@@ -16,16 +16,14 @@ import {RiskId} from "../type/RiskId.sol";
16
16
  import {StateId} from "../type/StateId.sol";
17
17
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
18
18
 
19
- contract ProductService is
19
+ contract RiskService is
20
20
  ComponentVerifyingService,
21
- IProductService
21
+ IRiskService
22
22
  {
23
23
  IInstanceService private _instanceService;
24
24
  IPoolService internal _poolService;
25
25
  IRegistryService private _registryService;
26
26
 
27
- event LogProductServiceSender(address sender);
28
-
29
27
  function _initialize(
30
28
  address owner,
31
29
  bytes memory data
@@ -35,18 +33,17 @@ contract ProductService is
35
33
  virtual override
36
34
  {
37
35
  (
38
- address registryAddress,,
39
- //address managerAddress
36
+ address registryAddress,
40
37
  address authority
41
- ) = abi.decode(data, (address, address, address));
38
+ ) = abi.decode(data, (address, address));
42
39
 
43
- initializeService(registryAddress, authority, owner);
40
+ _initializeService(registryAddress, authority, owner);
44
41
 
45
42
  _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
46
43
  _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
47
44
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
48
45
 
49
- registerInterface(type(IProductService).interfaceId);
46
+ _registerInterface(type(IRiskService).interfaceId);
50
47
  }
51
48
 
52
49
 
@@ -0,0 +1,39 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
+ import {RiskService} from "./RiskService.sol";
7
+
8
+ contract RiskServiceManager is ProxyManager {
9
+
10
+ RiskService private _riskService;
11
+
12
+ /// @dev initializes proxy manager with product service implementation
13
+ constructor(
14
+ address authority,
15
+ address registry,
16
+ bytes32 salt
17
+ )
18
+ {
19
+ RiskService svc = new RiskService{salt: salt}();
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
24
+ data,
25
+ salt);
26
+
27
+ _riskService = RiskService(address(versionable));
28
+ }
29
+
30
+ //--- view functions ----------------------------------------------------//
31
+ function getRiskService()
32
+ external
33
+ view
34
+ returns (RiskService riskService)
35
+ {
36
+ return _riskService;
37
+ }
38
+
39
+ }