@etherisc/gif-next 0.0.2-b3a8633-027 → 0.0.2-b3e9a44-364

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 (449) hide show
  1. package/README.md +19 -2
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +32 -51
  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 +101 -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 +59 -222
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +244 -217
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +109 -101
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +59 -37
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +136 -31
  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 +96 -99
  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 +437 -129
  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 +244 -228
  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/mock/Dip.sol/Dip.json +2 -2
  88. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +75 -235
  90. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +18 -18
  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 +46 -37
  95. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  96. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +16 -0
  97. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  98. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +43 -219
  99. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +53 -144
  101. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +76 -80
  103. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  104. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +95 -280
  105. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  106. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
  107. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  108. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +463 -150
  109. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +170 -86
  111. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  112. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +245 -1
  113. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  114. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +88 -94
  115. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  116. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +376 -171
  117. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  118. package/artifacts/contracts/pool/Pool.sol/Pool.json +85 -276
  119. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  120. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +525 -350
  121. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +114 -82
  123. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  124. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +52 -162
  125. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +73 -89
  127. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  128. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +63 -248
  129. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  130. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
  131. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  132. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +279 -181
  133. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  134. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +120 -100
  135. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  136. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +21 -0
  137. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  138. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +163 -6
  139. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  140. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +310 -118
  141. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  142. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +59 -43
  143. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  144. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +63 -63
  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} +18 -2
  147. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  148. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +421 -320
  149. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +120 -100
  151. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  152. package/artifacts/contracts/product/PricingService.sol/PricingService.json +136 -259
  153. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +97 -117
  155. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  156. package/artifacts/contracts/product/Product.sol/Product.json +63 -248
  157. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  158. package/artifacts/contracts/product/RiskService.sol/RiskService.json +604 -0
  159. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  160. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +698 -0
  161. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  162. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +22 -3
  163. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  164. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +297 -19
  165. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  166. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +16 -0
  167. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  168. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  169. package/artifacts/contracts/registry/Registry.sol/Registry.json +401 -104
  170. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  171. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +121 -134
  172. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  173. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +39 -313
  174. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +68 -72
  176. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  177. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  178. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  179. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +45 -16
  180. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  181. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  182. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  183. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  184. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  185. package/artifacts/contracts/shared/Component.sol/Component.json +16 -211
  186. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  187. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +263 -161
  188. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  189. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +121 -95
  190. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  191. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +21 -112
  192. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  193. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  194. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +16 -26
  196. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +169 -0
  198. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +35 -37
  200. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  201. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  202. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  203. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  204. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  205. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  206. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  207. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +16 -0
  208. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  209. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  210. package/artifacts/contracts/shared/IService.sol/IService.json +16 -0
  211. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  212. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  213. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  214. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +35 -222
  215. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  216. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  217. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  218. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  219. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  220. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  221. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  222. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  223. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  224. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +24 -97
  225. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  226. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  227. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  228. package/artifacts/contracts/shared/Service.sol/Service.json +21 -112
  229. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  230. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  231. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  232. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  233. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  234. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +43 -27
  235. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  236. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +16 -21
  237. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  238. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
  239. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  240. package/artifacts/contracts/staking/Staking.sol/Staking.json +101 -262
  241. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  242. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  243. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +93 -88
  245. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  246. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  247. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  248. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +47 -159
  249. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  250. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +72 -76
  251. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  252. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +89 -84
  253. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  254. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  255. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  256. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
  258. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  260. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  262. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  264. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
  266. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  267. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  268. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  270. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  271. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  272. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  274. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  276. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  278. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  280. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  282. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  284. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  286. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  290. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  293. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  295. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +52 -2
  297. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  299. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  300. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  301. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +55 -70
  302. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  303. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  304. package/contracts/authorization/AccessAdmin.sol +25 -23
  305. package/contracts/authorization/Authorization.sol +5 -2
  306. package/contracts/authorization/IAccessAdmin.sol +0 -1
  307. package/contracts/distribution/BasicDistribution.sol +6 -15
  308. package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
  309. package/contracts/distribution/Distribution.sol +25 -12
  310. package/contracts/distribution/DistributionService.sol +114 -54
  311. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  312. package/contracts/distribution/IDistributionComponent.sol +8 -4
  313. package/contracts/distribution/IDistributionService.sol +18 -2
  314. package/contracts/examples/fire/DamageLevel.sol +59 -0
  315. package/contracts/examples/fire/FirePool.sol +75 -0
  316. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  317. package/contracts/examples/fire/FireProduct.sol +411 -0
  318. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  319. package/contracts/examples/fire/FireUSD.sol +26 -0
  320. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  321. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  322. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  323. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  324. package/contracts/instance/IInstance.sol +7 -30
  325. package/contracts/instance/Instance.sol +10 -35
  326. package/contracts/instance/InstanceAdmin.sol +29 -7
  327. package/contracts/instance/InstanceAuthorizationV3.sol +5 -3
  328. package/contracts/instance/InstanceReader.sol +115 -25
  329. package/contracts/instance/InstanceService.sol +63 -41
  330. package/contracts/instance/InstanceServiceManager.sol +6 -7
  331. package/contracts/instance/InstanceStore.sol +12 -1
  332. package/contracts/instance/base/ObjectLifecycle.sol +9 -4
  333. package/contracts/instance/module/IBundle.sol +1 -1
  334. package/contracts/instance/module/IComponents.sol +4 -8
  335. package/contracts/instance/module/IDistribution.sol +0 -1
  336. package/contracts/instance/module/IPolicy.sol +24 -24
  337. package/contracts/mock/Dip.sol +1 -1
  338. package/contracts/oracle/IOracleComponent.sol +2 -1
  339. package/contracts/oracle/Oracle.sol +17 -7
  340. package/contracts/oracle/OracleService.sol +41 -33
  341. package/contracts/oracle/OracleServiceManager.sol +6 -6
  342. package/contracts/pool/BasicPool.sol +19 -18
  343. package/contracts/pool/BasicPoolAuthorization.sol +11 -2
  344. package/contracts/pool/BundleService.sol +208 -31
  345. package/contracts/pool/BundleServiceManager.sol +6 -6
  346. package/contracts/pool/IBundleService.sol +42 -5
  347. package/contracts/pool/IPoolComponent.sol +24 -8
  348. package/contracts/pool/IPoolService.sol +57 -36
  349. package/contracts/pool/Pool.sol +81 -35
  350. package/contracts/pool/PoolService.sol +231 -104
  351. package/contracts/pool/PoolServiceManager.sol +4 -4
  352. package/contracts/product/ApplicationService.sol +50 -29
  353. package/contracts/product/ApplicationServiceManager.sol +4 -4
  354. package/contracts/product/BasicProduct.sol +3 -32
  355. package/contracts/product/BasicProductAuthorization.sol +3 -0
  356. package/contracts/product/ClaimService.sol +251 -86
  357. package/contracts/product/ClaimServiceManager.sol +4 -4
  358. package/contracts/product/IApplicationService.sol +1 -0
  359. package/contracts/product/IClaimService.sol +31 -7
  360. package/contracts/product/IPolicyService.sol +34 -32
  361. package/contracts/product/IPricingService.sol +7 -7
  362. package/contracts/product/IProductComponent.sol +18 -4
  363. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  364. package/contracts/product/PolicyService.sol +404 -193
  365. package/contracts/product/PolicyServiceManager.sol +4 -4
  366. package/contracts/product/PricingService.sol +47 -47
  367. package/contracts/product/PricingServiceManager.sol +3 -3
  368. package/contracts/product/Product.sol +93 -51
  369. package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
  370. package/contracts/product/RiskServiceManager.sol +39 -0
  371. package/contracts/registry/ChainNft.sol +51 -19
  372. package/contracts/registry/IRegistry.sol +53 -12
  373. package/contracts/registry/IRegistryService.sol +0 -9
  374. package/contracts/registry/Registry.sol +320 -172
  375. package/contracts/registry/RegistryAdmin.sol +49 -32
  376. package/contracts/registry/RegistryService.sol +55 -48
  377. package/contracts/registry/RegistryServiceManager.sol +2 -2
  378. package/contracts/registry/ReleaseRegistry.sol +25 -67
  379. package/contracts/registry/ServiceAuthorizationV3.sol +6 -8
  380. package/contracts/shared/Component.sol +24 -44
  381. package/contracts/shared/ComponentService.sol +88 -28
  382. package/contracts/shared/ComponentServiceManager.sol +8 -5
  383. package/contracts/shared/ComponentVerifyingService.sol +2 -3
  384. package/contracts/shared/ContractLib.sol +38 -0
  385. package/contracts/shared/IComponent.sol +4 -4
  386. package/contracts/shared/IComponentService.sol +15 -9
  387. package/contracts/shared/IInstanceLinkedComponent.sol +9 -10
  388. package/contracts/shared/INftOwnable.sol +2 -0
  389. package/contracts/shared/IPolicyHolder.sol +12 -22
  390. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  391. package/contracts/shared/InstanceLinkedComponent.sol +26 -6
  392. package/contracts/shared/NftOwnable.sol +23 -7
  393. package/contracts/shared/PolicyHolder.sol +17 -57
  394. package/contracts/shared/Registerable.sol +4 -4
  395. package/contracts/shared/RegistryLinked.sol +3 -2
  396. package/contracts/shared/Service.sol +16 -11
  397. package/contracts/shared/TokenHandler.sol +100 -19
  398. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  399. package/contracts/staking/IStaking.sol +2 -1
  400. package/contracts/staking/IStakingService.sol +0 -3
  401. package/contracts/staking/StakeManagerLib.sol +18 -25
  402. package/contracts/staking/Staking.sol +16 -28
  403. package/contracts/staking/StakingManager.sol +8 -6
  404. package/contracts/staking/StakingReader.sol +12 -5
  405. package/contracts/staking/StakingService.sol +11 -29
  406. package/contracts/staking/StakingServiceManager.sol +2 -2
  407. package/contracts/staking/TargetManagerLib.sol +7 -3
  408. package/contracts/type/Amount.sol +27 -5
  409. package/contracts/type/Blocknumber.sol +7 -1
  410. package/contracts/type/ClaimId.sol +6 -1
  411. package/contracts/type/NftId.sol +1 -0
  412. package/contracts/type/ObjectType.sol +16 -11
  413. package/contracts/type/PayoutId.sol +10 -10
  414. package/contracts/type/Referral.sol +1 -0
  415. package/contracts/type/RiskId.sol +15 -1
  416. package/contracts/type/Seconds.sol +21 -1
  417. package/contracts/type/StateId.sol +1 -0
  418. package/contracts/type/Timestamp.sol +11 -1
  419. package/contracts/type/UFixed.sol +33 -10
  420. package/contracts/upgradeability/ProxyManager.sol +67 -34
  421. package/contracts/upgradeability/Versionable.sol +2 -2
  422. package/package.json +2 -1
  423. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  424. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  425. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  426. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  427. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  428. package/artifacts/contracts/registry/GlobalRegistry.sol/GlobalRegistry.dbg.json +0 -4
  429. package/artifacts/contracts/registry/GlobalRegistry.sol/GlobalRegistry.json +0 -1503
  430. package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.dbg.json +0 -4
  431. package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.json +0 -1881
  432. package/artifacts/contracts/registry/IGlobalRegistry.sol/IGlobalRegistry.dbg.json +0 -4
  433. package/artifacts/contracts/registry/IGlobalRegistry.sol/IGlobalRegistry.json +0 -974
  434. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  435. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  436. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  437. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  438. package/artifacts/contracts/shared/MainnetId.sol/MainnetContract.dbg.json +0 -4
  439. package/artifacts/contracts/shared/MainnetId.sol/MainnetContract.json +0 -34
  440. package/artifacts/contracts/shared/MainnetId.sol/MainnetId.dbg.json +0 -4
  441. package/artifacts/contracts/shared/MainnetId.sol/MainnetId.json +0 -24
  442. package/artifacts/contracts/shared/MainnetId.sol/SidenetContract.dbg.json +0 -4
  443. package/artifacts/contracts/shared/MainnetId.sol/SidenetContract.json +0 -34
  444. package/contracts/product/ProductServiceManager.sol +0 -39
  445. package/contracts/registry/GlobalRegistry.sol +0 -95
  446. package/contracts/registry/GlobalRegistryAdmin.sol +0 -38
  447. package/contracts/registry/IGlobalRegistry.sol +0 -17
  448. package/contracts/shared/InitializableCustom.sol +0 -177
  449. package/contracts/shared/MainnetId.sol +0 -29
@@ -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,15 +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
- }
106
-
107
-
108
119
  function getInitialProductInfo()
109
120
  public
110
121
  virtual
@@ -116,6 +127,7 @@ abstract contract Product is
116
127
  return IComponents.ProductInfo({
117
128
  distributionNftId: $._distributionNftId,
118
129
  poolNftId: $._poolNftId,
130
+ isProcessingFundedClaims: false,
119
131
  productFee: FeeLib.zero(),
120
132
  processingFee: FeeLib.zero(),
121
133
  distributionFee: FeeLib.zero(),
@@ -126,14 +138,6 @@ abstract contract Product is
126
138
  });
127
139
  }
128
140
 
129
- function getPoolNftId() external view override returns (NftId poolNftId) {
130
- return getRegistry().getNftId(address(_getProductStorage()._pool));
131
- }
132
-
133
- function getDistributionNftId() external view override returns (NftId distributionNftId) {
134
- return getRegistry().getNftId(address(_getProductStorage()._distribution));
135
- }
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,19 +259,36 @@ 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
 
273
+ function _decline(
274
+ NftId policyNftId
275
+ )
276
+ internal
277
+ {
278
+ _getProductStorage()._policyService.decline(
279
+ policyNftId);
280
+ }
281
+
282
+ function _expire(
283
+ NftId policyNftId,
284
+ Timestamp expireAt
285
+ )
286
+ internal
287
+ returns (Timestamp expiredAt)
288
+ {
289
+ expiredAt = _getProductStorage()._policyService.expire(policyNftId, expireAt);
290
+ }
291
+
268
292
  function _collectPremium(
269
293
  NftId policyNftId,
270
294
  Timestamp activateAt
@@ -365,6 +389,24 @@ abstract contract Product is
365
389
  data);
366
390
  }
367
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
+
368
410
  function _processPayout(
369
411
  NftId policyNftId,
370
412
  PayoutId payoutId
@@ -380,13 +422,13 @@ abstract contract Product is
380
422
  return RiskIdLib.toRiskId(riskName);
381
423
  }
382
424
 
383
- function _getProductStorage() private pure returns (ProductStorage storage $) {
425
+ function _getProductStorage() internal pure returns (ProductStorage storage $) {
384
426
  assembly {
385
427
  $.slot := PRODUCT_STORAGE_LOCATION_V1
386
428
  }
387
429
  }
388
430
 
389
- function _getProductService() internal view returns (IProductService) {
390
- return _getProductStorage()._productService;
431
+ function _getRiskService() internal view returns (IRiskService) {
432
+ return _getProductStorage()._riskService;
391
433
  }
392
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
+ }