@etherisc/gif-next 0.0.2-f13c010-035 → 0.0.2-f15b559-661

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 (467) hide show
  1. package/README.md +27 -6
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +148 -62
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +149 -21
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +82 -12
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +68 -13
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  24. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +108 -188
  26. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +152 -33
  28. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -89
  30. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +244 -190
  32. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +82 -56
  34. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -58
  36. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +120 -73
  38. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +101 -164
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +152 -33
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +256 -296
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +152 -33
  47. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +139 -131
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +90 -126
  54. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +225 -162
  56. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +638 -301
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
  62. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  63. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  64. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  65. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +118 -39
  66. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +77 -20
  68. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/Instance.sol/Instance.json +163 -56
  70. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +375 -99
  72. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +140 -40
  74. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  75. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +586 -215
  76. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  77. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +104 -74
  78. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -27
  80. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +412 -372
  82. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  83. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  84. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  85. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  86. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  87. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  89. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  91. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  92. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  93. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  94. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  95. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  96. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  100. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +74 -154
  103. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +126 -35
  105. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +44 -58
  108. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  110. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +58 -90
  112. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +112 -81
  114. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +69 -27
  116. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  117. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +57 -104
  118. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  119. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +152 -33
  120. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +127 -331
  122. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +53 -87
  124. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  125. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +56 -136
  126. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  127. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -97
  128. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +164 -217
  130. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  131. package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -128
  132. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  133. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  134. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  135. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +302 -353
  136. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  137. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +93 -51
  138. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  139. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +105 -63
  140. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  141. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -27
  142. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  143. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +163 -175
  144. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  145. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +152 -33
  146. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  147. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +244 -179
  148. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +74 -64
  150. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  151. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
  152. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  153. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
  154. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  155. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +112 -56
  156. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  157. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
  158. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  159. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +150 -144
  160. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  161. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +37 -7
  162. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  163. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +211 -180
  164. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  165. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  166. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  167. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +76 -50
  168. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  169. package/artifacts/contracts/product/PricingService.sol/PricingService.json +99 -76
  170. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +60 -38
  172. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  173. package/artifacts/contracts/product/Product.sol/Product.json +163 -175
  174. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  175. package/artifacts/contracts/product/RiskService.sol/RiskService.json +114 -77
  176. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  177. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +62 -24
  178. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  179. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  180. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  181. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -2
  182. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  183. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  184. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  185. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  186. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  187. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  188. package/artifacts/contracts/registry/Registry.sol/Registry.json +88 -40
  189. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  190. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +262 -220
  191. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  192. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
  193. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  194. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +42 -20
  195. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  196. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
  197. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  198. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  199. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  200. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +318 -52
  201. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  202. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  203. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  204. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  205. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  206. package/artifacts/contracts/shared/Component.sol/Component.json +57 -75
  207. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +225 -439
  209. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  210. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +74 -64
  211. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  212. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
  213. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  214. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
  215. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  216. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  217. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  218. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  221. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +44 -44
  223. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  224. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +125 -282
  225. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +44 -58
  227. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  228. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  229. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  233. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  236. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  237. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  238. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -89
  239. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  240. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  241. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  242. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  243. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  245. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  246. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  247. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  248. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  249. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  250. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  251. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  252. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  253. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  254. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +289 -112
  255. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  256. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  257. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  258. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +70 -30
  259. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  260. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +62 -80
  261. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  262. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +56 -3
  263. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  264. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +33 -33
  265. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  266. package/artifacts/contracts/staking/Staking.sol/Staking.json +134 -173
  267. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  268. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  269. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  270. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +58 -46
  271. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +4 -4
  273. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  274. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +101 -49
  275. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  276. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +47 -25
  277. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  278. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
  279. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  280. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
  281. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  282. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  284. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  287. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  289. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  291. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  293. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  294. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  295. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  297. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  298. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  299. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  301. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  303. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  305. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  307. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +69 -7
  309. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  311. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  314. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  316. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  320. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  322. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  324. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  326. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  327. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  328. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
  329. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  330. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  331. package/contracts/accounting/AccountingService.sol +262 -0
  332. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  333. package/contracts/accounting/IAccountingService.sol +45 -0
  334. package/contracts/authorization/AccessAdmin.sol +177 -84
  335. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  336. package/contracts/authorization/Authorization.sol +277 -229
  337. package/contracts/authorization/IAccessAdmin.sol +13 -7
  338. package/contracts/authorization/IAuthorization.sol +15 -1
  339. package/contracts/distribution/BasicDistribution.sol +13 -11
  340. package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
  341. package/contracts/distribution/Distribution.sol +42 -38
  342. package/contracts/distribution/DistributionService.sol +54 -51
  343. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  344. package/contracts/distribution/IDistributionService.sol +19 -19
  345. package/contracts/examples/fire/FirePool.sol +22 -5
  346. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  347. package/contracts/examples/fire/FireProduct.sol +32 -10
  348. package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
  349. package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
  350. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  351. package/contracts/examples/unpermissioned/SimplePool.sol +33 -3
  352. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  353. package/contracts/examples/unpermissioned/SimpleProduct.sol +51 -25
  354. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  355. package/contracts/instance/BundleSet.sol +42 -38
  356. package/contracts/instance/IInstance.sol +13 -9
  357. package/contracts/instance/IInstanceService.sol +9 -9
  358. package/contracts/instance/Instance.sol +33 -18
  359. package/contracts/instance/InstanceAdmin.sol +242 -84
  360. package/contracts/instance/InstanceAuthorizationV3.sol +50 -31
  361. package/contracts/instance/InstanceReader.sol +174 -32
  362. package/contracts/instance/InstanceService.sol +73 -82
  363. package/contracts/instance/InstanceServiceManager.sol +1 -1
  364. package/contracts/instance/InstanceStore.sol +13 -2
  365. package/contracts/instance/RiskSet.sol +118 -0
  366. package/contracts/instance/base/ObjectCounter.sol +1 -2
  367. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  368. package/contracts/instance/base/ObjectSet.sol +31 -33
  369. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  370. package/contracts/instance/module/IComponents.sol +4 -4
  371. package/contracts/instance/module/IDistribution.sol +2 -1
  372. package/contracts/instance/module/IPolicy.sol +2 -1
  373. package/contracts/instance/module/IRisk.sol +3 -0
  374. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  375. package/contracts/oracle/Oracle.sol +1 -1
  376. package/contracts/oracle/OracleService.sol +92 -73
  377. package/contracts/oracle/OracleServiceManager.sol +1 -1
  378. package/contracts/pool/BasicPool.sol +24 -3
  379. package/contracts/pool/BasicPoolAuthorization.sol +27 -8
  380. package/contracts/pool/BundleService.sol +47 -145
  381. package/contracts/pool/BundleServiceManager.sol +1 -1
  382. package/contracts/pool/IBundleService.sol +15 -43
  383. package/contracts/pool/IPoolComponent.sol +1 -7
  384. package/contracts/pool/IPoolService.sol +58 -60
  385. package/contracts/pool/Pool.sol +106 -96
  386. package/contracts/pool/PoolLib.sol +216 -0
  387. package/contracts/pool/PoolService.sol +427 -214
  388. package/contracts/pool/PoolServiceManager.sol +1 -1
  389. package/contracts/product/ApplicationService.sol +15 -15
  390. package/contracts/product/ApplicationServiceManager.sol +1 -1
  391. package/contracts/product/BasicProduct.sol +9 -11
  392. package/contracts/product/BasicProductAuthorization.sol +24 -10
  393. package/contracts/product/ClaimService.sol +157 -137
  394. package/contracts/product/ClaimServiceManager.sol +1 -1
  395. package/contracts/product/IApplicationService.sol +5 -2
  396. package/contracts/product/IClaimService.sol +14 -2
  397. package/contracts/product/IPolicyService.sol +26 -11
  398. package/contracts/product/IProductComponent.sol +4 -1
  399. package/contracts/product/IRiskService.sol +5 -8
  400. package/contracts/product/PolicyService.sol +244 -253
  401. package/contracts/product/PolicyServiceLib.sol +65 -0
  402. package/contracts/product/PolicyServiceManager.sol +1 -1
  403. package/contracts/product/PricingService.sol +23 -19
  404. package/contracts/product/PricingServiceManager.sol +3 -3
  405. package/contracts/product/Product.sol +66 -52
  406. package/contracts/product/RiskService.sol +79 -31
  407. package/contracts/product/RiskServiceManager.sol +1 -1
  408. package/contracts/registry/ChainNft.sol +4 -2
  409. package/contracts/registry/IRegistry.sol +10 -15
  410. package/contracts/registry/IRelease.sol +26 -0
  411. package/contracts/registry/Registry.sol +16 -3
  412. package/contracts/registry/RegistryAdmin.sol +132 -226
  413. package/contracts/registry/RegistryService.sol +3 -3
  414. package/contracts/registry/RegistryServiceManager.sol +1 -1
  415. package/contracts/registry/ReleaseAdmin.sol +245 -0
  416. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  417. package/contracts/registry/ReleaseRegistry.sol +129 -119
  418. package/contracts/registry/ServiceAuthorizationV3.sol +93 -40
  419. package/contracts/registry/TokenRegistry.sol +6 -8
  420. package/contracts/shared/Component.sol +61 -105
  421. package/contracts/shared/ComponentService.sol +301 -295
  422. package/contracts/shared/ComponentServiceManager.sol +1 -1
  423. package/contracts/shared/ComponentVerifyingService.sol +16 -14
  424. package/contracts/shared/ContractLib.sol +224 -9
  425. package/contracts/shared/IComponent.sol +4 -17
  426. package/contracts/shared/IComponentService.sol +16 -25
  427. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  428. package/contracts/shared/IRegisterable.sol +15 -4
  429. package/contracts/shared/IService.sol +3 -5
  430. package/contracts/shared/InstanceLinkedComponent.sol +4 -20
  431. package/contracts/shared/NftOwnable.sol +4 -4
  432. package/contracts/shared/PolicyHolder.sol +1 -1
  433. package/contracts/shared/Registerable.sol +44 -20
  434. package/contracts/shared/RegistryLinked.sol +7 -13
  435. package/contracts/shared/Service.sol +8 -27
  436. package/contracts/shared/TokenHandler.sol +263 -105
  437. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  438. package/contracts/staking/IStaking.sol +5 -8
  439. package/contracts/staking/IStakingService.sol +8 -0
  440. package/contracts/staking/StakeManagerLib.sol +1 -1
  441. package/contracts/staking/Staking.sol +62 -33
  442. package/contracts/staking/StakingReader.sol +1 -1
  443. package/contracts/staking/StakingService.sol +35 -12
  444. package/contracts/staking/StakingServiceManager.sol +5 -4
  445. package/contracts/type/Key32.sol +2 -2
  446. package/contracts/type/Key32Set.sol +62 -0
  447. package/contracts/type/NftId.sol +6 -0
  448. package/contracts/type/ObjectType.sol +48 -21
  449. package/contracts/type/RiskId.sol +26 -8
  450. package/contracts/type/RoleId.sol +24 -4
  451. package/contracts/type/Selector.sol +5 -0
  452. package/contracts/type/Timestamp.sol +0 -5
  453. package/contracts/type/UFixed.sol +9 -119
  454. package/contracts/type/Version.sol +15 -5
  455. package/contracts/upgradeability/ProxyManager.sol +1 -1
  456. package/package.json +3 -3
  457. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  458. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  459. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  460. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  461. package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.dbg.json +0 -4
  462. package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.json +0 -206
  463. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  464. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  465. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
  466. package/contracts/instance/module/IAccess.sol +0 -46
  467. package/contracts/shared/ComponentServiceHelperLib.sol +0 -118
@@ -0,0 +1,65 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {InstanceReader} from "../instance/InstanceReader.sol";
5
+ import {IPolicy} from "../instance/module/IPolicy.sol";
6
+ import {IPolicyService} from "../product/IPolicyService.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {StateId, CLOSED, COLLATERALIZED} from "../type/StateId.sol";
9
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
10
+
11
+ library PolicyServiceLib {
12
+
13
+ function checkExpiration(
14
+ Timestamp newExpiredAt,
15
+ NftId policyNftId,
16
+ StateId policyState,
17
+ IPolicy.PolicyInfo memory policyInfo
18
+ )
19
+ external
20
+ view
21
+ {
22
+ if (policyState != COLLATERALIZED()) {
23
+ revert IPolicyService.ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
24
+ }
25
+ if (TimestampLib.blockTimestamp() < policyInfo.activatedAt) {
26
+ revert IPolicyService.ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
27
+ }
28
+
29
+ // check expiredAt represents a valid expiry time
30
+ if (newExpiredAt >= policyInfo.expiredAt) {
31
+ revert IPolicyService.ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, newExpiredAt);
32
+ }
33
+
34
+ if (newExpiredAt.gtz() && newExpiredAt < TimestampLib.blockTimestamp()) {
35
+ revert IPolicyService.ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), newExpiredAt);
36
+ }
37
+ }
38
+
39
+ function policyIsCloseable(InstanceReader instanceReader, NftId policyNftId)
40
+ external
41
+ view
42
+ returns (bool isCloseable)
43
+ {
44
+ // policy already closed
45
+ if (instanceReader.getPolicyState(policyNftId) == CLOSED()) {
46
+ return false;
47
+ }
48
+
49
+ IPolicy.PolicyInfo memory info = instanceReader.getPolicyInfo(policyNftId);
50
+
51
+ if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
52
+ if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
53
+ if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
54
+
55
+ // closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
56
+ if (info.claimAmount == info.sumInsuredAmount) { return true; }
57
+
58
+ // not closeable: not yet expired
59
+ if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
60
+
61
+ // all conditions to close the policy are met
62
+ return true;
63
+ }
64
+
65
+ }
@@ -17,7 +17,7 @@ contract PolicyServiceManager is ProxyManager {
17
17
  )
18
18
  {
19
19
  PolicyService svc = new PolicyService{salt: salt}();
20
- bytes memory data = abi.encode(registry, authority);
20
+ bytes memory data = abi.encode(authority, registry);
21
21
  IVersionable versionable = initialize(
22
22
  registry,
23
23
  address(svc),
@@ -42,14 +42,15 @@ contract PricingService is
42
42
  initializer()
43
43
  {
44
44
  (
45
- address registryAddress,
46
- address authority
45
+ address authority,
46
+ address registry
47
47
  ) = abi.decode(data, (address, address));
48
48
 
49
- _initializeService(registryAddress, authority, owner);
50
- _registerInterface(type(IPricingService).interfaceId);
49
+ __Service_init(authority, registry, owner);
51
50
 
52
51
  _distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
52
+
53
+ _registerInterface(type(IPricingService).interfaceId);
53
54
  }
54
55
 
55
56
  /// @dev calculates the premium amount for the specified attributes
@@ -98,6 +99,7 @@ contract PricingService is
98
99
  {
99
100
  // get configurations for all involed objects
100
101
  IComponents.ProductInfo memory productInfo = reader.getProductInfo(productNftId);
102
+ IComponents.FeeInfo memory feeInfo = reader.getFeeInfo(productNftId);
101
103
 
102
104
  IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
103
105
  if(bundleInfo.poolNftId != productInfo.poolNftId) {
@@ -107,21 +109,22 @@ contract PricingService is
107
109
  // calculate fixed fees for product, pool, bundle
108
110
  premium = _getFixedFeeAmounts(
109
111
  netPremiumAmount,
110
- productInfo,
112
+ feeInfo,
111
113
  bundleInfo
112
114
  );
113
115
 
114
116
  // calculate variable fees for product, pool, bundle
115
117
  premium = _calculateVariableFeeAmounts(
116
118
  premium,
117
- productInfo,
119
+ feeInfo,
118
120
  bundleInfo
119
121
  );
120
122
 
121
123
  // calculate distribution fee and (if applicable) commission
122
124
  premium = _calculateDistributionOwnerFeeAmount(
123
125
  premium,
124
- productInfo,
126
+ feeInfo,
127
+ productInfo.distributionNftId,
125
128
  referralId,
126
129
  reader
127
130
  );
@@ -137,7 +140,7 @@ contract PricingService is
137
140
  revert ErrorPricingServiceTargetWalletAmountsMismatch();
138
141
  }
139
142
 
140
- if (premium.distributionOwnerFeeFixAmount.toInt() < productInfo.minDistributionOwnerFee.fixedFee) {
143
+ if (premium.distributionOwnerFeeFixAmount.toInt() < feeInfo.minDistributionOwnerFee.fixedFee) {
141
144
  revert ErrorPricingServiceFeeCalculationMismatch(
142
145
  premium.distributionFeeFixAmount,
143
146
  premium.distributionFeeVarAmount,
@@ -164,7 +167,7 @@ contract PricingService is
164
167
  // internal functions
165
168
  function _getFixedFeeAmounts(
166
169
  Amount netPremiumAmount,
167
- IComponents.ProductInfo memory productInfo,
170
+ IComponents.FeeInfo memory feeInfo,
168
171
  IBundle.BundleInfo memory bundleInfo
169
172
  )
170
173
  internal
@@ -177,11 +180,11 @@ contract PricingService is
177
180
  premium.netPremiumAmount = netPremiumAmount;
178
181
  premium.fullPremiumAmount = netPremiumAmount;
179
182
 
180
- Amount t = AmountLib.toAmount(productInfo.productFee.fixedFee);
183
+ Amount t = AmountLib.toAmount(feeInfo.productFee.fixedFee);
181
184
  premium.productFeeFixAmount = t;
182
185
  premium.fullPremiumAmount = premium.fullPremiumAmount + t;
183
186
 
184
- t = AmountLib.toAmount(productInfo.poolFee.fixedFee);
187
+ t = AmountLib.toAmount(feeInfo.poolFee.fixedFee);
185
188
  premium.poolFeeFixAmount = t;
186
189
  premium.fullPremiumAmount = premium.fullPremiumAmount + t;
187
190
 
@@ -189,14 +192,14 @@ contract PricingService is
189
192
  premium.bundleFeeFixAmount = t;
190
193
  premium.fullPremiumAmount = premium.fullPremiumAmount + t;
191
194
 
192
- t = AmountLib.toAmount(productInfo.distributionFee.fixedFee);
195
+ t = AmountLib.toAmount(feeInfo.distributionFee.fixedFee);
193
196
  premium.distributionFeeFixAmount = t;
194
197
  premium.fullPremiumAmount = premium.fullPremiumAmount + t;
195
198
  }
196
199
 
197
200
  function _calculateVariableFeeAmounts(
198
201
  IPolicy.PremiumInfo memory premium,
199
- IComponents.ProductInfo memory productInfo,
202
+ IComponents.FeeInfo memory feeInfo,
200
203
  IBundle.BundleInfo memory bundleInfo
201
204
  )
202
205
  internal
@@ -207,11 +210,11 @@ contract PricingService is
207
210
  {
208
211
  Amount netPremiumAmount = premium.netPremiumAmount;
209
212
 
210
- Amount t = netPremiumAmount.multiplyWith(productInfo.productFee.fractionalFee);
213
+ Amount t = netPremiumAmount.multiplyWith(feeInfo.productFee.fractionalFee);
211
214
  premium.productFeeVarAmount = t;
212
215
  premium.fullPremiumAmount = premium.fullPremiumAmount + t;
213
216
 
214
- t = netPremiumAmount.multiplyWith(productInfo.poolFee.fractionalFee);
217
+ t = netPremiumAmount.multiplyWith(feeInfo.poolFee.fractionalFee);
215
218
  premium.poolFeeVarAmount = t;
216
219
  premium.fullPremiumAmount = premium.fullPremiumAmount + t;
217
220
 
@@ -219,7 +222,7 @@ contract PricingService is
219
222
  premium.bundleFeeVarAmount = t;
220
223
  premium.fullPremiumAmount = premium.fullPremiumAmount + t;
221
224
 
222
- t = netPremiumAmount.multiplyWith(productInfo.distributionFee.fractionalFee);
225
+ t = netPremiumAmount.multiplyWith(feeInfo.distributionFee.fractionalFee);
223
226
  premium.distributionFeeVarAmount = t;
224
227
  premium.fullPremiumAmount = premium.fullPremiumAmount + t;
225
228
 
@@ -228,7 +231,8 @@ contract PricingService is
228
231
 
229
232
  function _calculateDistributionOwnerFeeAmount(
230
233
  IPolicy.PremiumInfo memory premium,
231
- IComponents.ProductInfo memory productInfo,
234
+ IComponents.FeeInfo memory feeInfo,
235
+ NftId distributionNftId,
232
236
  // ISetup.DistributionSetupInfo memory distInfo,
233
237
  ReferralId referralId,
234
238
  InstanceReader reader
@@ -239,14 +243,14 @@ contract PricingService is
239
243
  {
240
244
 
241
245
  // if the referral is not valid, then the distribution owner gets everything
242
- if (productInfo.distributionNftId.eqz() || ! _distributionService.referralIsValid(productInfo.distributionNftId, referralId)) {
246
+ if (distributionNftId.eqz() || ! _distributionService.referralIsValid(distributionNftId, referralId)) {
243
247
  premium.distributionOwnerFeeFixAmount = premium.distributionFeeFixAmount;
244
248
  premium.distributionOwnerFeeVarAmount = premium.distributionFeeVarAmount;
245
249
  premium.premiumAmount = premium.fullPremiumAmount;
246
250
  return premium;
247
251
  }
248
252
 
249
- Fee memory minDistributionOwnerFee = productInfo.minDistributionOwnerFee;
253
+ Fee memory minDistributionOwnerFee = feeInfo.minDistributionOwnerFee;
250
254
 
251
255
  // if the referral is valid, the the commission and discount are calculated based in the full premium
252
256
  // the remaing amount goes to the distribution owner
@@ -12,14 +12,14 @@ contract PricingServiceManager is ProxyManager {
12
12
  /// @dev initializes proxy manager with pricing service implementation and deploys instance
13
13
  constructor(
14
14
  address authority,
15
- address registryAddress,
15
+ address registry,
16
16
  bytes32 salt
17
17
  )
18
18
  {
19
19
  PricingService pricingSrv = new PricingService{salt: salt}();
20
- bytes memory data = abi.encode(registryAddress, authority);
20
+ bytes memory data = abi.encode(authority, registry);
21
21
  IVersionable versionable = initialize(
22
- registryAddress,
22
+ registry,
23
23
  address(pricingSrv),
24
24
  data,
25
25
  salt);
@@ -3,23 +3,20 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount, AmountLib} from "../type/Amount.sol";
5
5
  import {ClaimId} from "../type/ClaimId.sol";
6
- import {IComponent} from "../shared/IComponent.sol";
7
- import {Fee, FeeLib} from "../type/Fee.sol";
8
- import {IRisk} from "../instance/module/IRisk.sol";
6
+ import {Fee} from "../type/Fee.sol";
9
7
  import {IApplicationService} from "./IApplicationService.sol";
10
8
  import {IAuthorization} from "../authorization/IAuthorization.sol";
11
9
  import {IComponentService} from "../shared/IComponentService.sol";
12
10
  import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
13
- import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
14
11
  import {IPolicyService} from "./IPolicyService.sol";
15
12
  import {IRiskService} from "./IRiskService.sol";
16
13
  import {IClaimService} from "./IClaimService.sol";
17
14
  import {IPricingService} from "./IPricingService.sol";
18
15
  import {IProductComponent} from "./IProductComponent.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";
16
+ import {NftId} from "../type/NftId.sol";
17
+ import {COMPONENT, PRODUCT, BUNDLE, APPLICATION, POLICY, CLAIM, PRICE } from "../type/ObjectType.sol";
21
18
  import {PayoutId} from "../type/PayoutId.sol";
22
- import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE, BUNDLE } from "../type/ObjectType.sol";
19
+ import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE, BUNDLE, RISK } from "../type/ObjectType.sol";
23
20
  import {ReferralId} from "../type/Referral.sol";
24
21
  import {RiskId, RiskIdLib} from "../type/RiskId.sol";
25
22
  import {Seconds} from "../type/Seconds.sol";
@@ -28,9 +25,6 @@ import {Timestamp} from "../type/Timestamp.sol";
28
25
 
29
26
  import {IPolicy} from "../instance/module/IPolicy.sol";
30
27
  import {IComponents} from "../instance/module/IComponents.sol";
31
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
32
- import {IOracleComponent} from "../oracle/IOracleComponent.sol";
33
- import {IPoolComponent} from "../pool/IPoolComponent.sol";
34
28
 
35
29
  abstract contract Product is
36
30
  InstanceLinkedComponent,
@@ -40,15 +34,14 @@ abstract contract Product is
40
34
  bytes32 public constant PRODUCT_STORAGE_LOCATION_V1 = 0x0bb7aafdb8e380f81267337bc5b5dfdf76e6d3a380ecadb51ec665246d9d6800;
41
35
 
42
36
  struct ProductStorage {
43
- bool _isProcessingFundedClaims;
44
- bool _hasDistribution;
45
- uint8 _numberOfOracles;
37
+ IComponents.ProductInfo _productInfo;
38
+ IComponents.FeeInfo _feeInfo;
39
+ IComponentService _componentService;
46
40
  IRiskService _riskService;
47
41
  IApplicationService _applicationService;
48
42
  IPolicyService _policyService;
49
43
  IClaimService _claimService;
50
44
  IPricingService _pricingService;
51
- IComponentService _componentService;
52
45
  }
53
46
 
54
47
 
@@ -125,38 +118,28 @@ abstract contract Product is
125
118
  view
126
119
  returns (IComponents.ProductInfo memory poolInfo)
127
120
  {
128
- ProductStorage storage $ = _getProductStorage();
121
+ return _getProductStorage()._productInfo;
122
+ }
129
123
 
130
- return IComponents.ProductInfo({
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),
138
- productFee: FeeLib.zero(),
139
- processingFee: FeeLib.zero(),
140
- distributionFee: FeeLib.zero(),
141
- minDistributionOwnerFee: FeeLib.zero(),
142
- poolFee: FeeLib.zero(),
143
- stakingFee: FeeLib.zero(),
144
- performanceFee: FeeLib.zero()
145
- });
124
+ function getInitialFeeInfo()
125
+ public
126
+ virtual
127
+ view
128
+ returns (IComponents.FeeInfo memory feeInfo)
129
+ {
130
+ return _getProductStorage()._feeInfo;
146
131
  }
147
132
 
148
133
 
149
134
  function _initializeProduct(
150
135
  address registry,
151
136
  NftId instanceNftId,
152
- IAuthorization authorization,
153
- address initialOwner,
154
137
  string memory name,
155
138
  address token,
156
- bool isInterceptor,
157
- bool isProcessingFundedClaims,
158
- bool hasDistribution,
159
- uint8 numberOfOracles,
139
+ IComponents.ProductInfo memory productInfo,
140
+ IComponents.FeeInfo memory feeInfo,
141
+ IAuthorization authorization,
142
+ address initialOwner,
160
143
  bytes memory componentData // writeonly data that will saved in the object info record of the registry
161
144
  )
162
145
  internal
@@ -170,15 +153,14 @@ abstract contract Product is
170
153
  token,
171
154
  PRODUCT(),
172
155
  authorization,
173
- isInterceptor,
156
+ productInfo.isInterceptingPolicyTransfers,
174
157
  initialOwner,
175
158
  componentData);
176
159
 
177
160
  ProductStorage storage $ = _getProductStorage();
178
- $._isProcessingFundedClaims = isProcessingFundedClaims;
179
- $._hasDistribution = hasDistribution;
180
- $._numberOfOracles = numberOfOracles;
181
- $._riskService = IRiskService(_getServiceAddress(PRODUCT()));
161
+ $._productInfo = productInfo;
162
+ $._feeInfo = feeInfo;
163
+ $._riskService = IRiskService(_getServiceAddress(RISK()));
182
164
  $._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
183
165
  $._policyService = IPolicyService(_getServiceAddress(POLICY()));
184
166
  $._claimService = IClaimService(_getServiceAddress(CLAIM()));
@@ -201,13 +183,14 @@ abstract contract Product is
201
183
 
202
184
 
203
185
  function _createRisk(
204
- RiskId id,
186
+ bytes32 id,
205
187
  bytes memory data
206
188
  )
207
189
  internal
208
190
  virtual
191
+ returns (RiskId riskId)
209
192
  {
210
- _getProductStorage()._riskService.createRisk(
193
+ return _getProductStorage()._riskService.createRisk(
211
194
  id,
212
195
  data
213
196
  );
@@ -240,11 +223,6 @@ abstract contract Product is
240
223
  }
241
224
 
242
225
 
243
- function _getRiskInfo(RiskId id) internal virtual view returns (IRisk.RiskInfo memory info) {
244
- return getInstance().getInstanceReader().getRiskInfo(id);
245
- }
246
-
247
-
248
226
  function _createApplication(
249
227
  address applicationOwner,
250
228
  RiskId riskId,
@@ -277,8 +255,9 @@ abstract contract Product is
277
255
  )
278
256
  internal
279
257
  virtual
258
+ returns (Amount premiumAmount)
280
259
  {
281
- _getProductStorage()._policyService.createPolicy(
260
+ premiumAmount = _getProductStorage()._policyService.createPolicy(
282
261
  applicationNftId,
283
262
  activateAt);
284
263
  }
@@ -304,6 +283,21 @@ abstract contract Product is
304
283
  expiredAt = _getProductStorage()._policyService.expire(policyNftId, expireAt);
305
284
  }
306
285
 
286
+ /// @dev adjust the activation date of the policy.
287
+ /// The policy must already have an activation date set.
288
+ /// Allowed values are from the current blocktime to the expiration date of the policy.
289
+ function _adjustActivation(
290
+ NftId policyNftId,
291
+ Timestamp activateAt
292
+ )
293
+ internal
294
+ virtual
295
+ {
296
+ _getProductStorage()._policyService.adjustActivation(
297
+ policyNftId,
298
+ activateAt);
299
+ }
300
+
307
301
  function _collectPremium(
308
302
  NftId policyNftId,
309
303
  Timestamp activateAt
@@ -353,6 +347,18 @@ abstract contract Product is
353
347
  claimData);
354
348
  }
355
349
 
350
+ function _revokeClaim(
351
+ NftId policyNftId,
352
+ ClaimId claimId
353
+ )
354
+ internal
355
+ virtual
356
+ {
357
+ _getProductStorage()._claimService.revoke(
358
+ policyNftId,
359
+ claimId);
360
+ }
361
+
356
362
  function _confirmClaim(
357
363
  NftId policyNftId,
358
364
  ClaimId claimId,
@@ -443,8 +449,16 @@ abstract contract Product is
443
449
  payoutId);
444
450
  }
445
451
 
446
- function _toRiskId(string memory riskName) internal virtual pure returns (RiskId riskId) {
447
- return RiskIdLib.toRiskId(riskName);
452
+ function _cancelPayout(
453
+ NftId policyNftId,
454
+ PayoutId payoutId
455
+ )
456
+ internal
457
+ virtual
458
+ {
459
+ _getProductStorage()._claimService.cancelPayout(
460
+ policyNftId,
461
+ payoutId);
448
462
  }
449
463
 
450
464
  function _getProductStorage() internal virtual pure returns (ProductStorage storage $) {
@@ -2,27 +2,25 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {IInstance} from "../instance/IInstance.sol";
5
- import {IInstanceService} from "../instance/IInstanceService.sol";
6
- import {IPoolService} from "../pool/PoolService.sol";
7
- import {IRiskService} from "./IRiskService.sol";
8
- import {IRegistryService} from "../registry/IRegistryService.sol";
5
+ import {IRegistry} from "../registry/IRegistry.sol";
9
6
  import {IRisk} from "../instance/module/IRisk.sol";
7
+ import {IRiskService} from "./IRiskService.sol";
10
8
 
9
+ import {ContractLib} from "../shared/ContractLib.sol";
11
10
  import {InstanceReader} from "../instance/InstanceReader.sol";
12
- import {ObjectType, INSTANCE, PRODUCT, POOL, POLICY, REGISTRY} from "../type/ObjectType.sol";
13
- import {KEEP_STATE} from "../type/StateId.sol";
11
+ import {ObjectType, COMPONENT, PRODUCT, RISK} from "../type/ObjectType.sol";
12
+ import {ACTIVE, PAUSED, KEEP_STATE} from "../type/StateId.sol";
14
13
  import {NftId} from "../type/NftId.sol";
15
- import {RiskId} from "../type/RiskId.sol";
14
+ import {RiskId, RiskIdLib} from "../type/RiskId.sol";
16
15
  import {StateId} from "../type/StateId.sol";
17
- import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
16
+ import {RiskSet} from "../instance/RiskSet.sol";
17
+ import {Service} from "../shared/Service.sol";
18
+ import {TimestampLib} from "../type/Timestamp.sol";
18
19
 
19
20
  contract RiskService is
20
- ComponentVerifyingService,
21
+ Service,
21
22
  IRiskService
22
23
  {
23
- IInstanceService private _instanceService;
24
- IPoolService internal _poolService;
25
- IRegistryService private _registryService;
26
24
 
27
25
  function _initialize(
28
26
  address owner,
@@ -33,34 +31,41 @@ contract RiskService is
33
31
  virtual override
34
32
  {
35
33
  (
36
- address registryAddress,
37
- address authority
34
+ address authority,
35
+ address registry
38
36
  ) = abi.decode(data, (address, address));
39
37
 
40
- _initializeService(registryAddress, authority, owner);
41
-
42
- _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
43
- _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
44
- _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
45
-
38
+ __Service_init(authority, registry, owner);
46
39
  _registerInterface(type(IRiskService).interfaceId);
47
40
  }
48
41
 
49
-
42
+ /// @inheritdoc IRiskService
50
43
  function createRisk(
51
- RiskId riskId,
44
+ bytes32 id,
52
45
  bytes memory data
53
46
  )
54
47
  external
55
- override
48
+ restricted()
49
+ returns (RiskId riskId)
56
50
  {
57
- (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
58
- IRisk.RiskInfo memory riskInfo = IRisk.RiskInfo(productNftId, data);
51
+ // checks
52
+ (NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
53
+
54
+ // effects
55
+ riskId = RiskIdLib.toRiskId(productNftId, id);
56
+ IRisk.RiskInfo memory riskInfo = IRisk.RiskInfo({
57
+ productNftId: productNftId,
58
+ createdAt: TimestampLib.blockTimestamp(),
59
+ data: data});
59
60
 
60
61
  instance.getInstanceStore().createRisk(
61
62
  riskId,
62
63
  riskInfo
63
64
  );
65
+
66
+ // add risk to RiskSet
67
+ RiskSet riskSet = instance.getRiskSet();
68
+ riskSet.add(riskId);
64
69
  }
65
70
 
66
71
 
@@ -68,11 +73,14 @@ contract RiskService is
68
73
  RiskId riskId,
69
74
  bytes memory data
70
75
  )
71
- external
76
+ external
77
+ restricted()
72
78
  {
73
- (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
74
- InstanceReader instanceReader = instance.getInstanceReader();
79
+ // checks
80
+ (NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
75
81
 
82
+ // effects
83
+ InstanceReader instanceReader = instance.getInstanceReader();
76
84
  IRisk.RiskInfo memory riskInfo = instanceReader.getRiskInfo(riskId);
77
85
  riskInfo.data = data;
78
86
  instance.getInstanceStore().updateRisk(riskId, riskInfo, KEEP_STATE());
@@ -83,14 +91,54 @@ contract RiskService is
83
91
  RiskId riskId,
84
92
  StateId state
85
93
  )
86
- external
94
+ external
95
+ restricted()
87
96
  {
88
- (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
97
+ // checks
98
+ (NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
99
+
100
+ // effects
89
101
  instance.getInstanceStore().updateRiskState(riskId, state);
102
+
103
+ if (state == ACTIVE()) {
104
+ instance.getRiskSet().activate(riskId);
105
+ } else if (state == PAUSED()) {
106
+ instance.getRiskSet().pause(riskId);
107
+ }
108
+ }
109
+
110
+ function _getAndVerifyActiveComponent(ObjectType expectedType)
111
+ internal
112
+ view
113
+ returns (
114
+ NftId componentNftId,
115
+ IInstance instance
116
+ )
117
+ {
118
+ IRegistry.ObjectInfo memory info;
119
+ address instanceAddress;
120
+ bool isActive = true;
121
+
122
+ if (expectedType != COMPONENT()) {
123
+ (info, instanceAddress) = ContractLib.getAndVerifyComponent(
124
+ getRegistry(),
125
+ msg.sender, // caller
126
+ expectedType,
127
+ isActive);
128
+ } else {
129
+ (info, instanceAddress) = ContractLib.getAndVerifyAnyComponent(
130
+ getRegistry(),
131
+ msg.sender,
132
+ isActive);
133
+ }
134
+
135
+ // get component nft id and instance
136
+ componentNftId = info.nftId;
137
+ instance = IInstance(instanceAddress);
90
138
  }
91
139
 
92
140
 
93
141
  function _getDomain() internal pure override returns(ObjectType) {
94
- return PRODUCT();
142
+ return RISK();
95
143
  }
96
144
  }
@@ -17,7 +17,7 @@ contract RiskServiceManager is ProxyManager {
17
17
  )
18
18
  {
19
19
  RiskService svc = new RiskService{salt: salt}();
20
- bytes memory data = abi.encode(registry, authority);
20
+ bytes memory data = abi.encode(authority, registry);
21
21
  IVersionable versionable = initialize(
22
22
  registry,
23
23
  address(svc),
@@ -62,6 +62,7 @@ contract ChainNft is ERC721Enumerable {
62
62
  // 3 -> staking
63
63
  // >= 4 -> all other objects
64
64
  _idNext = 4;
65
+ _totalMinted = 0;
65
66
  }
66
67
 
67
68
  /**
@@ -108,10 +109,11 @@ contract ChainNft is ERC721Enumerable {
108
109
 
109
110
 
110
111
  /**
111
- * @dev amend the open zeppelin transferFrom function by an interceptor call if such an interceptor is defined for the nft token id
112
- * this allows distribution, product and pool components to be notified when distributors, policies and bundles are transferred.
112
+ * @dev Amend the open zeppelin transferFrom function by an interceptor call if such an interceptor is defined for the nft token id.
113
+ * This allows distribution, product and pool components to be notified when distributors, policies and bundles are transferred.
113
114
  */
114
115
  function transferFrom(address from, address to, uint256 tokenId) public override (IERC721, ERC721) {
116
+ // default open zeppelin implementation of transferFrom
115
117
  super.transferFrom(from, to, tokenId);
116
118
 
117
119
  if (_interceptor[tokenId] != address(0)) {