@etherisc/gif-next 0.0.2-9b7f7f5-445 → 0.0.2-9bed517-659

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 (417) hide show
  1. package/README.md +5 -2
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +33 -52
  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 +2 -2
  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 +0 -19
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +58 -248
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +16 -222
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +150 -286
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +100 -120
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +16 -37
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +65 -62
  31. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  32. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  33. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  34. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1507 -0
  35. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  36. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
  37. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  38. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1978 -0
  39. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +414 -0
  41. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1427 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1187 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1561 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1996 -0
  51. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  53. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +16 -0
  55. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +16 -0
  57. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  58. package/artifacts/contracts/instance/Instance.sol/Instance.json +26 -99
  59. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +97 -100
  61. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  62. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
  63. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +424 -74
  65. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +55 -146
  67. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +77 -81
  69. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +249 -111
  71. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  73. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  76. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  77. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  78. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  79. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  80. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  86. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  88. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +48 -238
  89. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +18 -18
  91. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  92. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +16 -37
  94. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +16 -0
  96. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +16 -222
  98. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +53 -144
  100. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +76 -80
  102. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +45 -223
  104. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
  106. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  107. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +148 -222
  108. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +115 -107
  110. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  111. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +40 -31
  112. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  113. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +48 -41
  114. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  115. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +208 -138
  116. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  117. package/artifacts/contracts/pool/Pool.sol/Pool.json +45 -223
  118. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  119. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +283 -355
  120. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +96 -120
  122. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  123. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +52 -162
  124. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  125. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +73 -89
  126. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  127. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +44 -248
  128. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  129. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
  130. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  131. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +279 -181
  132. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  133. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +120 -100
  134. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  135. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +21 -0
  136. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  137. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +163 -6
  138. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  139. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +247 -140
  140. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  141. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +59 -43
  142. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  143. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +44 -63
  144. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  145. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +18 -2
  146. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  147. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +329 -345
  148. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +108 -104
  150. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  151. package/artifacts/contracts/product/PricingService.sol/PricingService.json +133 -261
  152. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  153. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +97 -117
  154. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  155. package/artifacts/contracts/product/Product.sol/Product.json +44 -248
  156. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  157. package/artifacts/contracts/product/RiskService.sol/RiskService.json +604 -0
  158. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  159. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +698 -0
  160. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  161. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  162. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +288 -21
  164. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  165. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +16 -0
  166. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  167. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  168. package/artifacts/contracts/registry/Registry.sol/Registry.json +494 -82
  169. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  170. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +243 -131
  171. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  172. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +39 -313
  173. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +68 -72
  175. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  176. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  177. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  178. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +24 -14
  179. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  180. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  181. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  182. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  183. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  184. package/artifacts/contracts/shared/Component.sol/Component.json +16 -211
  185. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  186. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +105 -212
  187. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  188. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +112 -114
  189. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  190. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +21 -112
  191. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  192. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  193. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  194. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +16 -26
  195. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  196. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +16 -0
  197. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +16 -37
  199. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  200. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  201. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  202. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  203. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  204. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  205. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  206. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +16 -0
  207. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  208. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  209. package/artifacts/contracts/shared/IService.sol/IService.json +16 -0
  210. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  211. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  212. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  213. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +16 -222
  214. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  215. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  216. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  217. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  218. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  220. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  221. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  222. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +24 -97
  224. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  225. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  226. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  227. package/artifacts/contracts/shared/Service.sol/Service.json +21 -112
  228. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  229. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  230. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  231. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  232. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  233. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +43 -27
  234. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  235. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +16 -21
  236. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  237. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +63 -93
  238. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  239. package/artifacts/contracts/staking/Staking.sol/Staking.json +101 -262
  240. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  241. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  242. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  243. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +93 -88
  244. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  245. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  246. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  247. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +47 -159
  248. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  249. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +72 -76
  250. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  251. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +84 -84
  252. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  253. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -23
  254. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  255. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
  257. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  260. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  262. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  264. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  265. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  266. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  268. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  269. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  270. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  272. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  274. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  276. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  278. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  280. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  282. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  284. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  288. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  291. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  293. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
  295. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  297. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  298. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  299. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +55 -70
  300. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  301. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  302. package/contracts/authorization/AccessAdmin.sol +25 -24
  303. package/contracts/authorization/Authorization.sol +5 -2
  304. package/contracts/authorization/IAccessAdmin.sol +0 -1
  305. package/contracts/distribution/BasicDistribution.sol +2 -0
  306. package/contracts/distribution/Distribution.sol +3 -2
  307. package/contracts/distribution/DistributionService.sol +72 -61
  308. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  309. package/contracts/distribution/IDistributionService.sol +9 -5
  310. package/contracts/examples/fire/DamageLevel.sol +59 -0
  311. package/contracts/examples/fire/FirePool.sol +75 -0
  312. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  313. package/contracts/examples/fire/FireProduct.sol +411 -0
  314. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  315. package/contracts/examples/fire/FireUSD.sol +26 -0
  316. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  317. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  318. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  319. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  320. package/contracts/instance/IInstance.sol +7 -30
  321. package/contracts/instance/Instance.sol +10 -35
  322. package/contracts/instance/InstanceAdmin.sol +29 -7
  323. package/contracts/instance/InstanceAuthorizationV3.sol +3 -3
  324. package/contracts/instance/InstanceReader.sol +107 -25
  325. package/contracts/instance/InstanceService.sol +63 -41
  326. package/contracts/instance/InstanceServiceManager.sol +6 -7
  327. package/contracts/instance/InstanceStore.sol +11 -1
  328. package/contracts/instance/base/ObjectLifecycle.sol +9 -4
  329. package/contracts/instance/module/IComponents.sol +4 -2
  330. package/contracts/instance/module/IPolicy.sol +24 -24
  331. package/contracts/oracle/Oracle.sol +2 -1
  332. package/contracts/oracle/OracleService.sol +41 -33
  333. package/contracts/oracle/OracleServiceManager.sol +6 -6
  334. package/contracts/pool/BasicPool.sol +12 -13
  335. package/contracts/pool/BundleService.sol +42 -32
  336. package/contracts/pool/BundleServiceManager.sol +6 -6
  337. package/contracts/pool/IBundleService.sol +11 -3
  338. package/contracts/pool/IPoolComponent.sol +18 -8
  339. package/contracts/pool/IPoolService.sol +50 -28
  340. package/contracts/pool/Pool.sol +61 -32
  341. package/contracts/pool/PoolService.sol +122 -121
  342. package/contracts/pool/PoolServiceManager.sol +4 -4
  343. package/contracts/product/ApplicationService.sol +50 -29
  344. package/contracts/product/ApplicationServiceManager.sol +4 -4
  345. package/contracts/product/BasicProduct.sol +1 -0
  346. package/contracts/product/ClaimService.sol +251 -87
  347. package/contracts/product/ClaimServiceManager.sol +4 -4
  348. package/contracts/product/IApplicationService.sol +1 -0
  349. package/contracts/product/IClaimService.sol +31 -7
  350. package/contracts/product/IPolicyService.sol +31 -35
  351. package/contracts/product/IPricingService.sol +7 -7
  352. package/contracts/product/IProductComponent.sol +17 -4
  353. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  354. package/contracts/product/PolicyService.sol +359 -202
  355. package/contracts/product/PolicyServiceManager.sol +4 -4
  356. package/contracts/product/PricingService.sol +47 -47
  357. package/contracts/product/PricingServiceManager.sol +3 -3
  358. package/contracts/product/Product.sol +76 -53
  359. package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
  360. package/contracts/product/RiskServiceManager.sol +39 -0
  361. package/contracts/registry/ChainNft.sol +65 -32
  362. package/contracts/registry/IRegistry.sol +55 -15
  363. package/contracts/registry/IRegistryService.sol +0 -9
  364. package/contracts/registry/Registry.sol +336 -197
  365. package/contracts/registry/RegistryAdmin.sol +150 -51
  366. package/contracts/registry/RegistryService.sol +55 -48
  367. package/contracts/registry/RegistryServiceManager.sol +2 -2
  368. package/contracts/registry/ReleaseRegistry.sol +12 -6
  369. package/contracts/registry/ServiceAuthorizationV3.sol +6 -8
  370. package/contracts/shared/Component.sol +17 -36
  371. package/contracts/shared/ComponentService.sol +20 -30
  372. package/contracts/shared/ComponentServiceManager.sol +8 -5
  373. package/contracts/shared/ComponentVerifyingService.sol +2 -3
  374. package/contracts/shared/ContractLib.sol +38 -0
  375. package/contracts/shared/IComponent.sol +4 -4
  376. package/contracts/shared/IInstanceLinkedComponent.sol +8 -15
  377. package/contracts/shared/INftOwnable.sol +2 -0
  378. package/contracts/shared/IPolicyHolder.sol +12 -22
  379. package/contracts/shared/InitializableERC165.sol +2 -2
  380. package/contracts/shared/InstanceLinkedComponent.sol +5 -6
  381. package/contracts/shared/NftOwnable.sol +21 -5
  382. package/contracts/shared/PolicyHolder.sol +15 -52
  383. package/contracts/shared/Registerable.sol +4 -4
  384. package/contracts/shared/RegistryLinked.sol +3 -2
  385. package/contracts/shared/Service.sol +16 -11
  386. package/contracts/shared/TokenHandler.sol +100 -19
  387. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  388. package/contracts/staking/IStaking.sol +2 -1
  389. package/contracts/staking/IStakingService.sol +0 -3
  390. package/contracts/staking/StakeManagerLib.sol +18 -25
  391. package/contracts/staking/Staking.sol +11 -29
  392. package/contracts/staking/StakingManager.sol +8 -6
  393. package/contracts/staking/StakingReader.sol +12 -5
  394. package/contracts/staking/StakingService.sol +11 -29
  395. package/contracts/staking/StakingServiceManager.sol +2 -2
  396. package/contracts/staking/TargetManagerLib.sol +7 -3
  397. package/contracts/type/Amount.sol +15 -0
  398. package/contracts/type/ClaimId.sol +6 -1
  399. package/contracts/type/NftId.sol +1 -0
  400. package/contracts/type/ObjectType.sol +16 -11
  401. package/contracts/type/PayoutId.sol +10 -10
  402. package/contracts/type/RiskId.sol +15 -1
  403. package/contracts/type/Seconds.sol +8 -0
  404. package/contracts/type/StateId.sol +1 -0
  405. package/contracts/type/UFixed.sol +4 -0
  406. package/contracts/upgradeability/ProxyManager.sol +67 -34
  407. package/contracts/upgradeability/Versionable.sol +2 -2
  408. package/package.json +2 -1
  409. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  410. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  411. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  412. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  413. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  414. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  415. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  416. package/contracts/product/ProductServiceManager.sol +0 -39
  417. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -12,14 +12,14 @@ contract PolicyServiceManager is ProxyManager {
12
12
  /// @dev initializes proxy manager with product service implementation
13
13
  constructor(
14
14
  address authority,
15
- address registryAddress,
15
+ address registry,
16
16
  bytes32 salt
17
17
  )
18
- ProxyManager(registryAddress)
19
18
  {
20
19
  PolicyService svc = new PolicyService{salt: salt}();
21
- bytes memory data = abi.encode(registryAddress, address(this), authority);
22
- IVersionable versionable = deployDetermenistic(
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
23
  address(svc),
24
24
  data,
25
25
  salt);
@@ -45,13 +45,12 @@ contract PricingService is
45
45
  initializer()
46
46
  {
47
47
  (
48
- address registryAddress,,
49
- //address managerAddress
48
+ address registryAddress,
50
49
  address authority
51
- ) = abi.decode(data, (address, address, address));
50
+ ) = abi.decode(data, (address, address));
52
51
 
53
- initializeService(registryAddress, authority, owner);
54
- registerInterface(type(IPricingService).interfaceId);
52
+ _initializeService(registryAddress, authority, owner);
53
+ _registerInterface(type(IPricingService).interfaceId);
55
54
 
56
55
  _distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
57
56
  }
@@ -71,7 +70,7 @@ contract PricingService is
71
70
  view
72
71
  virtual override
73
72
  returns (
74
- IPolicy.Premium memory premium
73
+ IPolicy.PremiumInfo memory premium
75
74
  )
76
75
  {
77
76
  InstanceReader reader;
@@ -84,6 +83,7 @@ contract PricingService is
84
83
  IInstance instance
85
84
  ) = _getAndVerifyComponentInfo(productNftId, PRODUCT(), false);
86
85
 
86
+ // get instance reader from local instance variable
87
87
  reader = instance.getInstanceReader();
88
88
 
89
89
  // calculate net premium
@@ -104,19 +104,21 @@ contract PricingService is
104
104
  revert ErrorIPricingServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, productInfo.poolNftId);
105
105
  }
106
106
 
107
- // calculate premium, order is important
107
+ // calculate fixed fees for product, pool, bundle
108
108
  premium = _getFixedFeeAmounts(
109
109
  netPremiumAmount,
110
110
  productInfo,
111
111
  bundleInfo
112
112
  );
113
113
 
114
+ // calculate variable fees for product, pool, bundle
114
115
  premium = _calculateVariableFeeAmounts(
115
116
  premium,
116
117
  productInfo,
117
118
  bundleInfo
118
119
  );
119
120
 
121
+ // calculate distribution fee and (if applicable) commission
120
122
  premium = _calculateDistributionOwnerFeeAmount(
121
123
  premium,
122
124
  productInfo,
@@ -124,18 +126,18 @@ contract PricingService is
124
126
  reader
125
127
  );
126
128
 
129
+ // calculate resulting amounts for product, pool, and distribution wallets
127
130
  premium = _calculateTargetWalletAmounts(premium);
128
131
 
129
132
  // sanity check to validate the fee calculation
130
- if(AmountLib.toAmount(premium.premiumAmount) !=
131
- premium.productFeeAmount
133
+ if(premium.premiumAmount != premium.productFeeAmount
132
134
  + premium.distributionFeeAndCommissionAmount
133
135
  + premium.poolPremiumAndFeeAmount)
134
136
  {
135
137
  revert ErrorPricingServiceTargetWalletAmountsMismatch();
136
138
  }
137
139
 
138
- if (premium.distributionOwnerFeeFixAmount < productInfo.minDistributionOwnerFee.fixedFee) {
140
+ if (premium.distributionOwnerFeeFixAmount.toInt() < productInfo.minDistributionOwnerFee.fixedFee) {
139
141
  revert ErrorIPricingServiceFeeCalculationMismatch(
140
142
  premium.distributionFeeFixAmount,
141
143
  premium.distributionFeeVarAmount,
@@ -168,64 +170,64 @@ contract PricingService is
168
170
  internal
169
171
  pure
170
172
  returns (
171
- IPolicy.Premium memory premium
173
+ IPolicy.PremiumInfo memory premium
172
174
  )
173
175
  {
174
176
  // initial premium amount is the net premium
175
- premium.netPremiumAmount = netPremiumAmount.toInt();
176
- premium.fullPremiumAmount = netPremiumAmount.toInt();
177
+ premium.netPremiumAmount = netPremiumAmount;
178
+ premium.fullPremiumAmount = netPremiumAmount;
177
179
 
178
- uint256 t = productInfo.productFee.fixedFee;
180
+ Amount t = AmountLib.toAmount(productInfo.productFee.fixedFee);
179
181
  premium.productFeeFixAmount = t;
180
- premium.fullPremiumAmount += t;
182
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
181
183
 
182
- t = productInfo.poolFee.fixedFee;
184
+ t = AmountLib.toAmount(productInfo.poolFee.fixedFee);
183
185
  premium.poolFeeFixAmount = t;
184
- premium.fullPremiumAmount += t;
186
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
185
187
 
186
- t = bundleInfo.fee.fixedFee;
188
+ t = AmountLib.toAmount(bundleInfo.fee.fixedFee);
187
189
  premium.bundleFeeFixAmount = t;
188
- premium.fullPremiumAmount += t;
190
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
189
191
 
190
- t = productInfo.distributionFee.fixedFee;
192
+ t = AmountLib.toAmount(productInfo.distributionFee.fixedFee);
191
193
  premium.distributionFeeFixAmount = t;
192
- premium.fullPremiumAmount += t;
194
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
193
195
  }
194
196
 
195
197
  function _calculateVariableFeeAmounts(
196
- IPolicy.Premium memory premium,
198
+ IPolicy.PremiumInfo memory premium,
197
199
  IComponents.ProductInfo memory productInfo,
198
200
  IBundle.BundleInfo memory bundleInfo
199
201
  )
200
202
  internal
201
203
  pure
202
204
  returns (
203
- IPolicy.Premium memory intermadiatePremium
205
+ IPolicy.PremiumInfo memory intermadiatePremium
204
206
  )
205
207
  {
206
- UFixed netPremiumAmount = UFixedLib.toUFixed(premium.netPremiumAmount);
208
+ Amount netPremiumAmount = premium.netPremiumAmount;
207
209
 
208
- uint256 t = (netPremiumAmount * productInfo.productFee.fractionalFee).toInt();
210
+ Amount t = netPremiumAmount.multiplyWith(productInfo.productFee.fractionalFee);
209
211
  premium.productFeeVarAmount = t;
210
- premium.fullPremiumAmount += t;
212
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
211
213
 
212
- t = (netPremiumAmount * productInfo.poolFee.fractionalFee).toInt();
214
+ t = netPremiumAmount.multiplyWith(productInfo.poolFee.fractionalFee);
213
215
  premium.poolFeeVarAmount = t;
214
- premium.fullPremiumAmount += t;
216
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
215
217
 
216
- t = (netPremiumAmount * bundleInfo.fee.fractionalFee).toInt();
218
+ t = netPremiumAmount.multiplyWith(bundleInfo.fee.fractionalFee);
217
219
  premium.bundleFeeVarAmount = t;
218
- premium.fullPremiumAmount += t;
220
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
219
221
 
220
- t = (netPremiumAmount * productInfo.distributionFee.fractionalFee).toInt();
222
+ t = netPremiumAmount.multiplyWith(productInfo.distributionFee.fractionalFee);
221
223
  premium.distributionFeeVarAmount = t;
222
- premium.fullPremiumAmount += t;
224
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
223
225
 
224
226
  return premium;
225
227
  }
226
228
 
227
229
  function _calculateDistributionOwnerFeeAmount(
228
- IPolicy.Premium memory premium,
230
+ IPolicy.PremiumInfo memory premium,
229
231
  IComponents.ProductInfo memory productInfo,
230
232
  // ISetup.DistributionSetupInfo memory distInfo,
231
233
  ReferralId referralId,
@@ -233,11 +235,11 @@ contract PricingService is
233
235
  )
234
236
  internal
235
237
  view
236
- returns (IPolicy.Premium memory finalPremium)
238
+ returns (IPolicy.PremiumInfo memory finalPremium)
237
239
  {
238
240
 
239
241
  // if the referral is not valid, then the distribution owner gets everything
240
- if (! _distributionService.referralIsValid(productInfo.distributionNftId, referralId)) {
242
+ if (productInfo.distributionNftId.eqz() || ! _distributionService.referralIsValid(productInfo.distributionNftId, referralId)) {
241
243
  premium.distributionOwnerFeeFixAmount = premium.distributionFeeFixAmount;
242
244
  premium.distributionOwnerFeeVarAmount = premium.distributionFeeVarAmount;
243
245
  premium.premiumAmount = premium.fullPremiumAmount;
@@ -253,10 +255,10 @@ contract PricingService is
253
255
  IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
254
256
  IDistribution.DistributorTypeInfo memory distributorTypeInfo = reader.getDistributorTypeInfo(distributorInfo.distributorType);
255
257
 
256
- uint256 commissionAmount = UFixedLib.toUFixed(premium.netPremiumAmount).mul(distributorTypeInfo.commissionPercentage).toInt();
258
+ Amount commissionAmount = premium.netPremiumAmount.multiplyWith(distributorTypeInfo.commissionPercentage);
257
259
  premium.commissionAmount = commissionAmount;
258
- premium.discountAmount = UFixedLib.toUFixed(premium.fullPremiumAmount).mul(referralInfo.discountPercentage).toInt();
259
- premium.distributionOwnerFeeFixAmount = minDistributionOwnerFee.fixedFee;
260
+ premium.discountAmount = premium.fullPremiumAmount.multiplyWith(referralInfo.discountPercentage);
261
+ premium.distributionOwnerFeeFixAmount = AmountLib.toAmount(minDistributionOwnerFee.fixedFee);
260
262
  premium.distributionOwnerFeeVarAmount = premium.distributionFeeVarAmount - commissionAmount - premium.discountAmount;
261
263
  premium.premiumAmount = premium.fullPremiumAmount - premium.discountAmount;
262
264
  }
@@ -266,29 +268,27 @@ contract PricingService is
266
268
 
267
269
 
268
270
  function _calculateTargetWalletAmounts(
269
- IPolicy.Premium memory premium
271
+ IPolicy.PremiumInfo memory premium
270
272
  )
271
273
  internal
272
274
  virtual
273
275
  view
274
276
  returns (
275
- IPolicy.Premium memory premiumWithTargetWalletAmounts
277
+ IPolicy.PremiumInfo memory premiumWithTargetWalletAmounts
276
278
  )
277
279
  {
278
280
  // fees for product owner
279
- premium.productFeeAmount = AmountLib.toAmount(
280
- premium.productFeeFixAmount + premium.productFeeVarAmount);
281
+ premium.productFeeAmount = premium.productFeeFixAmount + premium.productFeeVarAmount;
281
282
 
282
283
  // fees for distribution owner + distributor commission
283
- premium.distributionFeeAndCommissionAmount = AmountLib.toAmount(
284
+ premium.distributionFeeAndCommissionAmount =
284
285
  premium.distributionFeeFixAmount + premium.distributionOwnerFeeVarAmount
285
- + premium.commissionAmount);
286
+ + premium.commissionAmount;
286
287
 
287
288
  // net premium + fees for pool owner + bundle owner
288
- premium.poolPremiumAndFeeAmount = AmountLib.toAmount(
289
- premium.netPremiumAmount
289
+ premium.poolPremiumAndFeeAmount = premium.netPremiumAmount
290
290
  + premium.poolFeeFixAmount + premium.poolFeeVarAmount
291
- + premium.bundleFeeFixAmount + premium.bundleFeeVarAmount);
291
+ + premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
292
292
 
293
293
  premiumWithTargetWalletAmounts = premium;
294
294
  }
@@ -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);
@@ -1,8 +1,6 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
-
6
4
  import {Amount, AmountLib} from "../type/Amount.sol";
7
5
  import {ClaimId} from "../type/ClaimId.sol";
8
6
  import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
@@ -12,22 +10,19 @@ import {IApplicationService} from "./IApplicationService.sol";
12
10
  import {IAuthorization} from "../authorization/IAuthorization.sol";
13
11
  import {IComponentService} from "../shared/IComponentService.sol";
14
12
  import {IPolicyService} from "./IPolicyService.sol";
15
- import {IProductService} from "./IProductService.sol";
13
+ import {IRiskService} from "./IRiskService.sol";
16
14
  import {IClaimService} from "./IClaimService.sol";
17
15
  import {IPricingService} from "./IPricingService.sol";
18
16
  import {IProductComponent} from "./IProductComponent.sol";
19
- import {NftId, NftIdLib} from "../type/NftId.sol";
17
+ import {NftId} from "../type/NftId.sol";
20
18
  import {PayoutId} from "../type/PayoutId.sol";
21
- import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE } from "../type/ObjectType.sol";
19
+ import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE, BUNDLE } from "../type/ObjectType.sol";
22
20
  import {ReferralId} from "../type/Referral.sol";
23
21
  import {RiskId, RiskIdLib} from "../type/RiskId.sol";
24
22
  import {Seconds} from "../type/Seconds.sol";
25
23
  import {StateId} from "../type/StateId.sol";
26
24
  import {Timestamp} from "../type/Timestamp.sol";
27
25
 
28
- import {TokenHandler} from "../shared/TokenHandler.sol";
29
-
30
- import {InstanceReader} from "../instance/InstanceReader.sol";
31
26
  import {IPolicy} from "../instance/module/IPolicy.sol";
32
27
  import {IComponents} from "../instance/module/IComponents.sol";
33
28
  import {Pool} from "../pool/Pool.sol";
@@ -41,7 +36,7 @@ abstract contract Product is
41
36
  bytes32 public constant PRODUCT_STORAGE_LOCATION_V1 = 0x0bb7aafdb8e380f81267337bc5b5dfdf76e6d3a380ecadb51ec665246d9d6800;
42
37
 
43
38
  struct ProductStorage {
44
- IProductService _productService;
39
+ IRiskService _riskService;
45
40
  IApplicationService _applicationService;
46
41
  IPolicyService _policyService;
47
42
  IClaimService _claimService;
@@ -54,6 +49,30 @@ abstract contract Product is
54
49
  }
55
50
 
56
51
 
52
+ function register()
53
+ external
54
+ virtual
55
+ onlyOwner()
56
+ {
57
+ _getProductStorage()._componentService.registerProduct();
58
+ _approveTokenHandler(type(uint256).max);
59
+ }
60
+
61
+
62
+ function processFundedClaim(
63
+ NftId policyNftId,
64
+ ClaimId claimId,
65
+ Amount availableAmount
66
+ )
67
+ external
68
+ virtual
69
+ restricted() // pool service role
70
+ onlyNftOfType(policyNftId, POLICY())
71
+ {
72
+ // default implementation does nothing
73
+ }
74
+
75
+
57
76
  function calculatePremium(
58
77
  Amount sumInsuredAmount,
59
78
  RiskId riskId,
@@ -62,12 +81,13 @@ abstract contract Product is
62
81
  NftId bundleNftId,
63
82
  ReferralId referralId
64
83
  )
65
- external
84
+ public
66
85
  view
67
86
  override
87
+ onlyNftOfType(bundleNftId, BUNDLE())
68
88
  returns (Amount premiumAmount)
69
89
  {
70
- IPolicy.Premium memory premium = _getProductStorage()._pricingService.calculatePremium(
90
+ IPolicy.PremiumInfo memory premium = _getProductStorage()._pricingService.calculatePremium(
71
91
  getNftId(),
72
92
  riskId,
73
93
  sumInsuredAmount,
@@ -77,14 +97,14 @@ abstract contract Product is
77
97
  referralId
78
98
  );
79
99
 
80
- return AmountLib.toAmount(premium.premiumAmount);
100
+ return premium.premiumAmount;
81
101
  }
82
102
 
83
103
  function calculateNetPremium(
84
104
  Amount sumInsuredAmount,
85
- RiskId riskId,
86
- Seconds lifetime,
87
- bytes memory applicationData
105
+ RiskId,
106
+ Seconds,
107
+ bytes memory
88
108
  )
89
109
  external
90
110
  view
@@ -96,16 +116,6 @@ abstract contract Product is
96
116
  }
97
117
 
98
118
 
99
- function register()
100
- external
101
- virtual
102
- onlyOwner()
103
- {
104
- _getProductStorage()._componentService.registerProduct();
105
- _approveTokenHandler(type(uint256).max);
106
- }
107
-
108
-
109
119
  function getInitialProductInfo()
110
120
  public
111
121
  virtual
@@ -117,6 +127,7 @@ abstract contract Product is
117
127
  return IComponents.ProductInfo({
118
128
  distributionNftId: $._distributionNftId,
119
129
  poolNftId: $._poolNftId,
130
+ isProcessingFundedClaims: false,
120
131
  productFee: FeeLib.zero(),
121
132
  processingFee: FeeLib.zero(),
122
133
  distributionFee: FeeLib.zero(),
@@ -127,13 +138,6 @@ abstract contract Product is
127
138
  });
128
139
  }
129
140
 
130
- function getPoolNftId() external view override returns (NftId poolNftId) {
131
- return getRegistry().getNftId(address(_getProductStorage()._pool));
132
- }
133
-
134
- function getDistributionNftId() external view override returns (NftId distributionNftId) {
135
- return getRegistry().getNftId(address(_getProductStorage()._distribution));
136
- }
137
141
 
138
142
  function _initializeProduct(
139
143
  address registry,
@@ -143,8 +147,9 @@ abstract contract Product is
143
147
  string memory name,
144
148
  address token,
145
149
  bool isInterceptor,
146
- address pool,
147
- address distribution,
150
+ address pool, // switch to pool nft id (#527)
151
+ address distribution, // switch to distribution nft id (#527)
152
+ // add NftId [] oracleNftIds (#527)
148
153
  bytes memory registryData, // writeonly data that will saved in the object info record of the registry
149
154
  bytes memory componentData // writeonly data that will saved in the object info record of the registry
150
155
  )
@@ -166,8 +171,8 @@ abstract contract Product is
166
171
 
167
172
  ProductStorage storage $ = _getProductStorage();
168
173
  // TODO add validation
169
- // TODO refactor to go via registry ?
170
- $._productService = IProductService(_getServiceAddress(PRODUCT()));
174
+ // TODO refactor to go via registry for all components linked to this product (#527)
175
+ $._riskService = IRiskService(_getServiceAddress(PRODUCT()));
171
176
  $._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
172
177
  $._policyService = IPolicyService(_getServiceAddress(POLICY()));
173
178
  $._claimService = IClaimService(_getServiceAddress(CLAIM()));
@@ -175,10 +180,10 @@ abstract contract Product is
175
180
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
176
181
  $._pool = Pool(pool);
177
182
  $._distribution = Distribution(distribution);
178
- $._poolNftId = getRegistry().getNftId(pool);
179
- $._distributionNftId = getRegistry().getNftId(distribution);
183
+ $._poolNftId = getRegistry().getNftIdForAddress(pool);
184
+ $._distributionNftId = getRegistry().getNftIdForAddress(distribution);
180
185
 
181
- registerInterface(type(IProductComponent).interfaceId);
186
+ _registerInterface(type(IProductComponent).interfaceId);
182
187
  }
183
188
 
184
189
 
@@ -197,7 +202,7 @@ abstract contract Product is
197
202
  RiskId id,
198
203
  bytes memory data
199
204
  ) internal {
200
- _getProductService().createRisk(
205
+ _getRiskService().createRisk(
201
206
  id,
202
207
  data
203
208
  );
@@ -207,7 +212,7 @@ abstract contract Product is
207
212
  RiskId id,
208
213
  bytes memory data
209
214
  ) internal {
210
- _getProductService().updateRisk(
215
+ _getRiskService().updateRisk(
211
216
  id,
212
217
  data
213
218
  );
@@ -217,7 +222,7 @@ abstract contract Product is
217
222
  RiskId id,
218
223
  StateId state
219
224
  ) internal {
220
- _getProductService().updateRiskState(
225
+ _getRiskService().updateRiskState(
221
226
  id,
222
227
  state
223
228
  );
@@ -233,6 +238,7 @@ abstract contract Product is
233
238
  address applicationOwner,
234
239
  RiskId riskId,
235
240
  Amount sumInsuredAmount,
241
+ Amount premiumAmount,
236
242
  Seconds lifetime,
237
243
  NftId bundleNftId,
238
244
  ReferralId referralId,
@@ -245,6 +251,7 @@ abstract contract Product is
245
251
  applicationOwner,
246
252
  riskId,
247
253
  sumInsuredAmount,
254
+ premiumAmount,
248
255
  lifetime,
249
256
  bundleNftId,
250
257
  referralId,
@@ -252,16 +259,14 @@ abstract contract Product is
252
259
  );
253
260
  }
254
261
 
255
- function _collateralize(
256
- NftId policyNftId,
257
- bool requirePremiumPayment,
262
+ function _createPolicy(
263
+ NftId applicationNftId,
258
264
  Timestamp activateAt
259
265
  )
260
266
  internal
261
267
  {
262
- _getProductStorage()._policyService.collateralize(
263
- policyNftId,
264
- requirePremiumPayment,
268
+ _getProductStorage()._policyService.createPolicy(
269
+ applicationNftId,
265
270
  activateAt);
266
271
  }
267
272
 
@@ -279,9 +284,9 @@ abstract contract Product is
279
284
  Timestamp expireAt
280
285
  )
281
286
  internal
282
- returns (Timestamp)
287
+ returns (Timestamp expiredAt)
283
288
  {
284
- return _getProductStorage()._policyService.expire(policyNftId, expireAt);
289
+ expiredAt = _getProductStorage()._policyService.expire(policyNftId, expireAt);
285
290
  }
286
291
 
287
292
  function _collectPremium(
@@ -384,6 +389,24 @@ abstract contract Product is
384
389
  data);
385
390
  }
386
391
 
392
+ function _createPayoutForBeneficiary(
393
+ NftId policyNftId,
394
+ ClaimId claimId,
395
+ Amount amount,
396
+ address beneficiary,
397
+ bytes memory data
398
+ )
399
+ internal
400
+ returns (PayoutId)
401
+ {
402
+ return _getProductStorage()._claimService.createPayoutForBeneficiary(
403
+ policyNftId,
404
+ claimId,
405
+ amount,
406
+ beneficiary,
407
+ data);
408
+ }
409
+
387
410
  function _processPayout(
388
411
  NftId policyNftId,
389
412
  PayoutId payoutId
@@ -399,13 +422,13 @@ abstract contract Product is
399
422
  return RiskIdLib.toRiskId(riskName);
400
423
  }
401
424
 
402
- function _getProductStorage() private pure returns (ProductStorage storage $) {
425
+ function _getProductStorage() internal pure returns (ProductStorage storage $) {
403
426
  assembly {
404
427
  $.slot := PRODUCT_STORAGE_LOCATION_V1
405
428
  }
406
429
  }
407
430
 
408
- function _getProductService() internal view returns (IProductService) {
409
- return _getProductStorage()._productService;
431
+ function _getRiskService() internal view returns (IRiskService) {
432
+ return _getProductStorage()._riskService;
410
433
  }
411
434
  }
@@ -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
+ }