@etherisc/gif-next 0.0.2-b8e869c-076 → 0.0.2-b95860d-028

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