@etherisc/gif-next 0.0.2-de7c770-422 → 0.0.2-deb924b-641

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 (503) hide show
  1. package/README.md +28 -7
  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 +203 -77
  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 +200 -16
  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 +142 -44
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +107 -15
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +194 -214
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +206 -27
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +132 -128
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +280 -171
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +146 -69
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +119 -110
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +148 -72
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1475 -0
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +589 -0
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2040 -0
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +589 -0
  49. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +234 -166
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +175 -151
  57. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +321 -183
  59. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +778 -330
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  67. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +158 -57
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -103
  71. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  72. package/artifacts/contracts/instance/Instance.sol/Instance.json +211 -82
  73. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +446 -143
  75. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +150 -90
  77. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +781 -202
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +134 -157
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +110 -49
  83. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +473 -342
  85. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  87. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  89. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  92. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  94. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  96. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  98. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  103. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +151 -171
  106. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +180 -29
  108. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +113 -104
  111. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
  113. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +127 -123
  115. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +156 -81
  117. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +130 -45
  119. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +146 -142
  121. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +206 -27
  123. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +161 -262
  125. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +114 -85
  127. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +84 -111
  129. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +133 -135
  131. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +279 -247
  133. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  134. package/artifacts/contracts/pool/Pool.sol/Pool.json +146 -153
  135. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  136. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  137. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +495 -390
  139. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  140. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +168 -55
  141. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +135 -54
  143. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +106 -45
  145. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  146. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +260 -195
  147. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  148. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +206 -27
  149. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +319 -148
  151. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  152. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +145 -72
  153. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +89 -9
  155. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +199 -21
  157. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +244 -48
  159. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +105 -52
  161. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  162. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +246 -176
  163. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +55 -2
  165. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  166. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +377 -148
  167. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  168. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  169. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +153 -60
  171. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  172. package/artifacts/contracts/product/PricingService.sol/PricingService.json +185 -115
  173. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +123 -54
  175. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  176. package/artifacts/contracts/product/Product.sol/Product.json +256 -191
  177. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  178. package/artifacts/contracts/product/RiskService.sol/RiskService.json +117 -63
  179. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  180. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +115 -42
  181. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  182. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  183. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  184. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +117 -17
  185. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  186. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
  187. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  188. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  189. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  190. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  191. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  192. package/artifacts/contracts/registry/Registry.sol/Registry.json +161 -53
  193. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +326 -259
  195. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  196. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +112 -183
  197. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  198. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +102 -37
  199. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  200. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
  201. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  202. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  203. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  204. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +414 -250
  205. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  206. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  207. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  208. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  209. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  210. package/artifacts/contracts/shared/Component.sol/Component.json +105 -83
  211. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  212. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +498 -495
  213. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  214. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +144 -77
  215. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  216. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +60 -2
  217. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  225. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +92 -65
  227. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +446 -276
  229. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +113 -104
  231. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  233. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  234. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  235. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  236. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  237. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -6
  239. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  240. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  241. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  242. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  243. package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
  244. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  245. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  246. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +126 -122
  247. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  248. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  249. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  250. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  251. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  252. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  253. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  254. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +18 -2
  255. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  256. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +18 -8
  257. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  258. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +152 -38
  259. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  260. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  261. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  262. package/artifacts/contracts/shared/Service.sol/Service.json +60 -2
  263. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  264. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
  265. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  266. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  267. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  268. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  269. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  270. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +113 -115
  271. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  272. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +119 -16
  273. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  274. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +49 -44
  275. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  276. package/artifacts/contracts/staking/Staking.sol/Staking.json +203 -185
  277. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  278. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  279. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  280. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +131 -53
  281. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  282. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -63
  283. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  284. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +175 -55
  285. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  286. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +111 -42
  287. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  288. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +171 -130
  289. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  290. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
  291. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  292. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/Amount.sol/AmountLib.json +33 -9
  294. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  297. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  299. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  301. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  302. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  303. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  304. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  305. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  307. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  308. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  309. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  311. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  313. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  315. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  317. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +118 -5
  319. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  321. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  324. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  326. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  328. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  330. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  331. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  332. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +16 -3
  333. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  334. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  335. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  336. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  337. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  338. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  339. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +79 -27
  340. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  341. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  342. package/contracts/accounting/AccountingService.sol +262 -0
  343. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  344. package/contracts/accounting/IAccountingService.sol +45 -0
  345. package/contracts/authorization/AccessAdmin.sol +231 -131
  346. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  347. package/contracts/authorization/Authorization.sol +321 -201
  348. package/contracts/authorization/IAccess.sol +1 -0
  349. package/contracts/authorization/IAccessAdmin.sol +17 -10
  350. package/contracts/authorization/IAuthorization.sol +27 -7
  351. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  352. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  353. package/contracts/distribution/BasicDistribution.sol +15 -12
  354. package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
  355. package/contracts/distribution/Distribution.sol +41 -47
  356. package/contracts/distribution/DistributionService.sol +104 -82
  357. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  358. package/contracts/distribution/IDistributionComponent.sol +1 -1
  359. package/contracts/distribution/IDistributionService.sol +19 -19
  360. package/contracts/examples/fire/DamageLevel.sol +59 -0
  361. package/contracts/examples/fire/FirePool.sol +90 -0
  362. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  363. package/contracts/examples/fire/FireProduct.sol +438 -0
  364. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  365. package/contracts/examples/fire/FireUSD.sol +26 -0
  366. package/contracts/examples/unpermissioned/SimpleDistribution.sol +11 -4
  367. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  368. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
  369. package/contracts/examples/unpermissioned/SimplePool.sol +37 -7
  370. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  371. package/contracts/examples/unpermissioned/SimpleProduct.sol +49 -23
  372. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  373. package/contracts/instance/BundleSet.sol +42 -38
  374. package/contracts/instance/IInstance.sol +17 -10
  375. package/contracts/instance/IInstanceService.sol +9 -29
  376. package/contracts/instance/Instance.sol +52 -34
  377. package/contracts/instance/InstanceAdmin.sol +254 -102
  378. package/contracts/instance/InstanceAuthorizationV3.sol +54 -45
  379. package/contracts/instance/InstanceReader.sol +246 -39
  380. package/contracts/instance/InstanceService.sol +86 -149
  381. package/contracts/instance/InstanceServiceManager.sol +6 -7
  382. package/contracts/instance/InstanceStore.sol +13 -2
  383. package/contracts/instance/RiskSet.sol +118 -0
  384. package/contracts/instance/base/ObjectCounter.sol +1 -2
  385. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  386. package/contracts/instance/base/ObjectSet.sol +31 -33
  387. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  388. package/contracts/instance/module/IComponents.sol +13 -8
  389. package/contracts/instance/module/IDistribution.sol +2 -1
  390. package/contracts/instance/module/IPolicy.sol +4 -3
  391. package/contracts/instance/module/IRisk.sol +3 -0
  392. package/contracts/oracle/BasicOracle.sol +0 -1
  393. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  394. package/contracts/oracle/IOracleService.sol +2 -1
  395. package/contracts/oracle/Oracle.sol +5 -16
  396. package/contracts/oracle/OracleService.sol +111 -80
  397. package/contracts/oracle/OracleServiceManager.sol +6 -6
  398. package/contracts/pool/BasicPool.sol +33 -24
  399. package/contracts/pool/BasicPoolAuthorization.sol +27 -9
  400. package/contracts/pool/BundleService.sol +91 -134
  401. package/contracts/pool/BundleServiceManager.sol +6 -6
  402. package/contracts/pool/IBundleService.sol +15 -34
  403. package/contracts/pool/IPoolComponent.sol +19 -15
  404. package/contracts/pool/IPoolService.sol +70 -65
  405. package/contracts/pool/Pool.sol +136 -117
  406. package/contracts/pool/PoolLib.sol +216 -0
  407. package/contracts/pool/PoolService.sol +484 -236
  408. package/contracts/pool/PoolServiceManager.sol +4 -4
  409. package/contracts/product/ApplicationService.sol +32 -21
  410. package/contracts/product/ApplicationServiceManager.sol +4 -4
  411. package/contracts/product/BasicProduct.sol +10 -12
  412. package/contracts/product/BasicProductAuthorization.sol +24 -11
  413. package/contracts/product/ClaimService.sol +300 -155
  414. package/contracts/product/ClaimServiceManager.sol +4 -4
  415. package/contracts/product/IApplicationService.sol +5 -2
  416. package/contracts/product/IClaimService.sol +17 -4
  417. package/contracts/product/IPolicyService.sol +33 -11
  418. package/contracts/product/IPricingService.sol +9 -9
  419. package/contracts/product/IProductComponent.sol +27 -4
  420. package/contracts/product/PolicyService.sol +343 -234
  421. package/contracts/product/PolicyServiceLib.sol +65 -0
  422. package/contracts/product/PolicyServiceManager.sol +4 -4
  423. package/contracts/product/PricingService.sol +31 -28
  424. package/contracts/product/PricingServiceManager.sol +4 -4
  425. package/contracts/product/Product.sol +125 -72
  426. package/contracts/product/RiskService.sol +75 -27
  427. package/contracts/product/RiskServiceManager.sol +4 -4
  428. package/contracts/registry/ChainNft.sol +10 -11
  429. package/contracts/registry/IRegistry.sol +16 -18
  430. package/contracts/registry/IRegistryService.sol +5 -12
  431. package/contracts/registry/IRelease.sol +26 -0
  432. package/contracts/registry/ITransferInterceptor.sol +1 -2
  433. package/contracts/registry/Registry.sol +36 -8
  434. package/contracts/registry/RegistryAdmin.sol +132 -242
  435. package/contracts/registry/RegistryService.sol +36 -47
  436. package/contracts/registry/RegistryServiceManager.sol +3 -3
  437. package/contracts/registry/ReleaseAdmin.sol +245 -0
  438. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  439. package/contracts/registry/ReleaseRegistry.sol +257 -237
  440. package/contracts/registry/ServiceAuthorizationV3.sol +98 -50
  441. package/contracts/registry/TokenRegistry.sol +6 -8
  442. package/contracts/shared/Component.sol +69 -110
  443. package/contracts/shared/ComponentService.sol +424 -373
  444. package/contracts/shared/ComponentServiceManager.sol +8 -5
  445. package/contracts/shared/ComponentVerifyingService.sol +27 -16
  446. package/contracts/shared/ContractLib.sol +253 -0
  447. package/contracts/shared/IComponent.sol +8 -17
  448. package/contracts/shared/IComponentService.sol +41 -37
  449. package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
  450. package/contracts/shared/ILifecycle.sol +3 -1
  451. package/contracts/shared/INftOwnable.sol +2 -0
  452. package/contracts/shared/IPolicyHolder.sol +12 -13
  453. package/contracts/shared/IRegisterable.sol +23 -1
  454. package/contracts/shared/IService.sol +3 -5
  455. package/contracts/shared/InstanceLinkedComponent.sol +69 -44
  456. package/contracts/shared/KeyValueStore.sol +1 -1
  457. package/contracts/shared/Lifecycle.sol +15 -4
  458. package/contracts/shared/NftOwnable.sol +26 -6
  459. package/contracts/shared/PolicyHolder.sol +12 -6
  460. package/contracts/shared/Registerable.sol +53 -19
  461. package/contracts/shared/RegistryLinked.sol +7 -13
  462. package/contracts/shared/Service.sol +13 -30
  463. package/contracts/shared/TokenHandler.sol +274 -72
  464. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  465. package/contracts/staking/IStaking.sol +6 -10
  466. package/contracts/staking/IStakingService.sol +11 -4
  467. package/contracts/staking/StakeManagerLib.sol +67 -16
  468. package/contracts/staking/Staking.sol +74 -42
  469. package/contracts/staking/StakingManager.sol +8 -6
  470. package/contracts/staking/StakingReader.sol +13 -21
  471. package/contracts/staking/StakingService.sol +66 -24
  472. package/contracts/staking/StakingServiceManager.sol +6 -5
  473. package/contracts/type/Amount.sol +15 -0
  474. package/contracts/type/ClaimId.sol +6 -1
  475. package/contracts/type/Key32.sol +2 -2
  476. package/contracts/type/Key32Set.sol +62 -0
  477. package/contracts/type/NftId.sol +7 -0
  478. package/contracts/type/ObjectType.sol +49 -21
  479. package/contracts/type/PayoutId.sol +10 -10
  480. package/contracts/type/RiskId.sol +35 -4
  481. package/contracts/type/RoleId.sol +23 -15
  482. package/contracts/type/Selector.sol +5 -0
  483. package/contracts/type/StateId.sol +14 -1
  484. package/contracts/type/Timestamp.sol +0 -5
  485. package/contracts/type/UFixed.sol +13 -119
  486. package/contracts/type/Version.sol +15 -5
  487. package/contracts/upgradeability/ProxyManager.sol +68 -34
  488. package/contracts/upgradeability/Versionable.sol +2 -2
  489. package/package.json +4 -3
  490. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  491. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  492. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  493. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  494. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  495. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  496. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  497. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  498. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  499. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  500. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  501. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  502. package/contracts/instance/module/IAccess.sol +0 -46
  503. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -2,41 +2,34 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
- import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
5
 
6
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
7
7
  import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
8
8
  import {Amount} from "../type/Amount.sol";
9
9
  import {BundleSet} from "./BundleSet.sol";
10
+ import {RiskSet} from "./RiskSet.sol";
10
11
  import {ChainNft} from "../registry/ChainNft.sol";
11
12
  import {NftId} from "../type/NftId.sol";
12
13
  import {RoleId} from "../type/RoleId.sol";
13
- import {SecondsLib} from "../type/Seconds.sol";
14
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
15
- import {ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
16
- import {ObjectType, INSTANCE, BUNDLE, APPLICATION, CLAIM, DISTRIBUTION, INSTANCE, POLICY, POOL, PRODUCT, REGISTRY, STAKING} from "../type/ObjectType.sol";
14
+ import {UFixed} from "../type/UFixed.sol";
15
+ import {ObjectType, INSTANCE, COMPONENT, INSTANCE, REGISTRY, STAKING} from "../type/ObjectType.sol";
17
16
 
18
17
  import {Service} from "../shared/Service.sol";
19
- import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
20
- import {IService} from "../shared/IService.sol";
21
-
22
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
23
- import {IPoolComponent} from "../pool/IPoolComponent.sol";
24
- import {IProductComponent} from "../product/IProductComponent.sol";
25
18
 
26
19
  import {IRegistry} from "../registry/IRegistry.sol";
27
20
  import {IRegistryService} from "../registry/IRegistryService.sol";
28
21
  import {IStakingService} from "../staking/IStakingService.sol";
29
22
  import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
30
23
 
24
+ import {IComponentService} from "../shared/IComponentService.sol";
31
25
  import {Instance} from "./Instance.sol";
32
- import {IModuleAuthorization} from "../authorization/IModuleAuthorization.sol";
33
26
  import {IInstance} from "./IInstance.sol";
34
27
  import {InstanceAdmin} from "./InstanceAdmin.sol";
35
28
  import {IInstanceService} from "./IInstanceService.sol";
36
29
  import {InstanceReader} from "./InstanceReader.sol";
37
30
  import {InstanceStore} from "./InstanceStore.sol";
38
31
  import {Seconds} from "../type/Seconds.sol";
39
- import {VersionPart, VersionPartLib} from "../type/Version.sol";
32
+ import {VersionPart} from "../type/Version.sol";
40
33
 
41
34
 
42
35
  contract InstanceService is
@@ -49,12 +42,14 @@ contract InstanceService is
49
42
 
50
43
  IRegistryService internal _registryService;
51
44
  IStakingService internal _stakingService;
45
+ IComponentService internal _componentService;
52
46
 
53
47
  address internal _masterAccessManager;
54
48
  address internal _masterInstanceAdmin;
55
49
  address internal _masterInstance;
56
50
  address internal _masterInstanceReader;
57
51
  address internal _masterInstanceBundleSet;
52
+ address internal _masterInstanceRiskSet;
58
53
  address internal _masterInstanceStore;
59
54
 
60
55
 
@@ -70,7 +65,7 @@ contract InstanceService is
70
65
  revert ErrorInstanceServiceNotInstance(instanceAddress, objectType);
71
66
  }
72
67
 
73
- VersionPart instanceVersion = IInstance(instanceAddress).getMajorVersion();
68
+ VersionPart instanceVersion = IInstance(instanceAddress).getRelease();
74
69
  if (instanceVersion != getVersion().toMajorPart()) {
75
70
  revert ErrorInstanceServiceInstanceVersionMismatch(instanceAddress, instanceVersion);
76
71
  }
@@ -86,6 +81,7 @@ contract InstanceService is
86
81
  _;
87
82
  }
88
83
 
84
+
89
85
  // TODO check component - service - instance version match
90
86
  modifier onlyComponent() {
91
87
  if (! getRegistry().isRegisteredComponent(msg.sender)) {
@@ -96,9 +92,10 @@ contract InstanceService is
96
92
 
97
93
  function createInstance()
98
94
  external
95
+ restricted()
99
96
  returns (
100
- Instance clonedInstance,
101
- NftId clonedInstanceNftId
97
+ IInstance instance,
98
+ NftId instanceNftId
102
99
  )
103
100
  {
104
101
  // tx sender will become instance owner
@@ -106,30 +103,35 @@ contract InstanceService is
106
103
 
107
104
  // create instance admin and instance
108
105
  InstanceAdmin instanceAdmin = _createInstanceAdmin();
109
- clonedInstance = _createInstance(instanceAdmin, instanceOwner);
106
+ instance = _createInstance(instanceAdmin, instanceOwner);
110
107
 
111
108
  // register cloned instance with registry
112
- clonedInstanceNftId = _registryService.registerInstance(
113
- clonedInstance, instanceOwner).nftId;
109
+ instanceNftId = _registryService.registerInstance(
110
+ instance, instanceOwner).nftId;
114
111
 
115
112
  // register cloned instance as staking target
116
113
  _stakingService.createInstanceTarget(
117
- clonedInstanceNftId,
114
+ instanceNftId,
118
115
  TargetManagerLib.getDefaultLockingPeriod(),
119
116
  TargetManagerLib.getDefaultRewardRate());
120
117
 
121
118
  // MUST be set after instance is set up and registered
122
- instanceAdmin.initializeInstanceAuthorization(address(clonedInstance));
119
+ IAuthorization instanceAuthorization = InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization();
120
+ VersionPart release = AccessManagerCloneable(authority()).getRelease();
121
+ instanceAdmin.completeSetup(
122
+ address(instance),
123
+ address(instanceAuthorization));
123
124
 
124
125
  emit LogInstanceCloned(
125
- clonedInstanceNftId,
126
- address(clonedInstance));
126
+ instanceNftId,
127
+ address(instance));
127
128
  }
128
129
 
129
130
 
130
131
  function setStakingLockingPeriod(Seconds stakeLockingPeriod)
131
132
  external
132
133
  virtual
134
+ restricted()
133
135
  onlyInstance()
134
136
  {
135
137
  NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
@@ -142,6 +144,7 @@ contract InstanceService is
142
144
  function setStakingRewardRate(UFixed rewardRate)
143
145
  external
144
146
  virtual
147
+ restricted()
145
148
  onlyInstance()
146
149
  {
147
150
  NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
@@ -154,6 +157,7 @@ contract InstanceService is
154
157
  function refillStakingRewardReserves(address rewardProvider, Amount dipAmount)
155
158
  external
156
159
  virtual
160
+ restricted()
157
161
  onlyInstance()
158
162
  {
159
163
  NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
@@ -167,6 +171,7 @@ contract InstanceService is
167
171
  function withdrawStakingRewardReserves(Amount dipAmount)
168
172
  external
169
173
  virtual
174
+ restricted()
170
175
  onlyInstance()
171
176
  returns (Amount newBalance)
172
177
  {
@@ -176,47 +181,31 @@ contract InstanceService is
176
181
  dipAmount);
177
182
  }
178
183
 
179
-
180
- function setComponentLocked(bool locked)
181
- external
182
- virtual
183
- onlyComponent()
184
+ function upgradeInstanceReader(NftId instanceNftId)
185
+ external
186
+ nonReentrant()
187
+ restricted()
188
+ onlyInstanceOwner(instanceNftId)
189
+ onlyNftOfType(instanceNftId, INSTANCE())
184
190
  {
185
- // checks
186
- address componentAddress = msg.sender;
187
-
188
- if (!IInstanceLinkedComponent(componentAddress).supportsInterface(type(IInstanceLinkedComponent).interfaceId)) {
189
- revert ErrorInstanceServiceComponentNotInstanceLinked(componentAddress);
190
- }
191
-
192
191
  IRegistry registry = getRegistry();
193
- NftId instanceNftId = registry.getObjectInfo(componentAddress).parentNftId;
194
-
195
- IInstance instance = IInstance(
196
- registry.getObjectInfo(
197
- instanceNftId).objectAddress);
198
-
199
- // no revert in case already locked
200
- // TODO refactor/implement
201
- // instance.getInstanceAdmin().setTargetLockedByService(
202
- // componentAddress,
203
- // locked);
204
- }
205
-
206
-
207
- function getMasterInstanceReader() external view returns (address) {
208
- return _masterInstanceReader;
192
+ IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
193
+ Instance instance = Instance(instanceInfo.objectAddress);
194
+
195
+ InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
196
+ upgradedInstanceReaderClone.initializeWithInstance(address(instance));
197
+ instance.setInstanceReader(upgradedInstanceReaderClone);
209
198
  }
210
199
 
211
200
  function setAndRegisterMasterInstance(address instanceAddress)
212
- external
213
- onlyOwner
214
- returns(NftId masterInstanceNftId)
201
+ external
202
+ onlyOwner()
203
+ returns(NftId masterInstanceNftId)
215
204
  {
216
205
  if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
217
206
  if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
218
207
  if(_masterInstanceBundleSet != address(0)) { revert ErrorInstanceServiceMasterBundleSetAlreadySet(); }
219
-
208
+ if(_masterInstanceRiskSet != address(0)) { revert ErrorInstanceServiceMasterRiskSetAlreadySet(); }
220
209
  if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
221
210
 
222
211
  IInstance instance = IInstance(instanceAddress);
@@ -225,28 +214,34 @@ contract InstanceService is
225
214
  address instanceAdminAddress = address(instanceAdmin);
226
215
  InstanceReader instanceReader = instance.getInstanceReader();
227
216
  address instanceReaderAddress = address(instanceReader);
228
- BundleSet bundleManager = instance.getBundleSet();
229
- address bundleManagerAddress = address(bundleManager);
217
+ BundleSet bundleSet = instance.getBundleSet();
218
+ address bundleSetAddress = address(bundleSet);
219
+ RiskSet riskSet = instance.getRiskSet();
220
+ address riskSetAddress = address(riskSet);
230
221
  InstanceStore instanceStore = instance.getInstanceStore();
231
222
  address instanceStoreAddress = address(instanceStore);
232
223
 
233
224
  if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
234
225
  if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
235
226
  if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
236
- if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
227
+ if(bundleSetAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
228
+ if(riskSetAddress == address(0)) { revert ErrorInstanceServiceRiskSetZero(); }
237
229
  if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
238
230
 
239
231
  if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
240
- if(bundleManager.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
232
+ if(bundleSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
233
+ if(riskSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceRiskSetAuthorityMismatch(); }
241
234
  if(instanceStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
242
- if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
235
+ if(bundleSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceBundleSetInstanceMismatch(); }
236
+ if(riskSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceRiskSetInstanceMismatch(); }
243
237
  if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
244
238
 
245
239
  _masterAccessManager = accessManagerAddress;
246
240
  _masterInstanceAdmin = instanceAdminAddress;
247
241
  _masterInstance = instanceAddress;
248
242
  _masterInstanceReader = instanceReaderAddress;
249
- _masterInstanceBundleSet = bundleManagerAddress;
243
+ _masterInstanceBundleSet = bundleSetAddress;
244
+ _masterInstanceRiskSet = riskSetAddress;
250
245
  _masterInstanceStore = instanceStoreAddress;
251
246
 
252
247
  IInstance masterInstance = IInstance(_masterInstance);
@@ -254,7 +249,10 @@ contract InstanceService is
254
249
  masterInstanceNftId = info.nftId;
255
250
  }
256
251
 
257
- function upgradeMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
252
+ function upgradeMasterInstanceReader(address instanceReaderAddress)
253
+ external
254
+ onlyOwner
255
+ {
258
256
  if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
259
257
  if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
260
258
  if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
@@ -265,78 +263,8 @@ contract InstanceService is
265
263
  _masterInstanceReader = instanceReaderAddress;
266
264
  }
267
265
 
268
- function upgradeInstanceReader(NftId instanceNftId)
269
- external
270
- onlyInstanceOwner(instanceNftId)
271
- {
272
- IRegistry registry = getRegistry();
273
- IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
274
- Instance instance = Instance(instanceInfo.objectAddress);
275
-
276
- InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
277
- upgradedInstanceReaderClone.initializeWithInstance(address(instance));
278
- instance.setInstanceReader(upgradedInstanceReaderClone);
279
- }
280
-
281
-
282
- function createGifTarget(
283
- NftId instanceNftId,
284
- address targetAddress,
285
- string memory targetName,
286
- bytes4[][] memory selectors,
287
- RoleId[] memory roles
288
- )
289
- external
290
- virtual
291
- restricted()
292
- {
293
- _createGifTarget(
294
- instanceNftId,
295
- targetAddress,
296
- targetName,
297
- roles,
298
- selectors
299
- );
300
- }
301
-
302
-
303
- function initializeAuthorization(
304
- NftId instanceNftId,
305
- IInstanceLinkedComponent component
306
- )
307
- external
308
- virtual
309
- restricted()
310
- {
311
- (IInstance instance, ) = _validateInstanceAndComponent(
312
- instanceNftId,
313
- address(component));
314
-
315
- InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
316
- instanceAdmin.initializeComponentAuthorization(
317
- component,
318
- component.getAuthorization());
319
- }
320
-
321
-
322
- function createComponentTarget(
323
- NftId instanceNftId,
324
- address targetAddress,
325
- string memory targetName,
326
- bytes4[][] memory selectors,
327
- RoleId[] memory roles
328
- )
329
- external
330
- virtual
331
- restricted()
332
- {
333
- _createGifTarget(
334
- instanceNftId,
335
- targetAddress,
336
- targetName,
337
- roles,
338
- selectors
339
- );
266
+ function getMasterInstanceReader() external view returns (address) {
267
+ return _masterInstanceReader;
340
268
  }
341
269
 
342
270
  /// @dev create new cloned instance admin
@@ -347,17 +275,16 @@ contract InstanceService is
347
275
  returns (InstanceAdmin clonedInstanceAdmin)
348
276
  {
349
277
  // start with setting up a new OZ access manager
278
+ // TODO consider _masterInstanceAdmin.authority() instead of _masterAccessManager
350
279
  AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
351
280
  Clones.clone(_masterAccessManager));
352
281
 
353
282
  // set up the instance admin
354
283
  clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
355
- clonedAccessManager.initialize(
356
- address(clonedInstanceAdmin)); // grant ADMIN_ROLE to instance admin
357
-
358
284
  clonedInstanceAdmin.initialize(
359
285
  clonedAccessManager,
360
- InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
286
+ getRegistry(),
287
+ getRelease());
361
288
  }
362
289
 
363
290
 
@@ -369,21 +296,24 @@ contract InstanceService is
369
296
  )
370
297
  internal
371
298
  virtual
372
- returns (Instance clonedInstance)
299
+ returns (IInstance)
373
300
  {
374
301
  InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
375
302
  BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
303
+ RiskSet clonedRiskSet = RiskSet(Clones.clone(_masterInstanceRiskSet));
376
304
  InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
377
305
 
378
306
  // clone instance
379
- clonedInstance = Instance(Clones.clone(_masterInstance));
307
+ Instance clonedInstance = Instance(Clones.clone(_masterInstance));
380
308
  clonedInstance.initialize(
381
309
  instanceAdmin,
382
310
  clonedInstanceStore,
383
311
  clonedBundleSet,
312
+ clonedRiskSet,
384
313
  clonedInstanceReader,
385
314
  getRegistry(),
386
315
  instanceOwner);
316
+ return clonedInstance;
387
317
  }
388
318
 
389
319
 
@@ -426,15 +356,15 @@ contract InstanceService is
426
356
  initializer()
427
357
  {
428
358
  (
429
- address registryAddress,,
430
- //address managerAddress
431
- address authority
432
- ) = abi.decode(data, (address, address, address));
359
+ address authority,
360
+ address registry
361
+ ) = abi.decode(data, (address, address));
433
362
 
434
- _initializeService(registryAddress, authority, owner);
363
+ __Service_init(authority, registry, owner);
435
364
 
436
365
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
437
366
  _stakingService = IStakingService(_getServiceAddress(STAKING()));
367
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
438
368
 
439
369
  _registerInterface(type(IInstanceService).interfaceId);
440
370
  }
@@ -451,13 +381,20 @@ contract InstanceService is
451
381
  revert ErrorInstanceServiceNotInstanceNftId(instanceNftId);
452
382
  }
453
383
 
454
- IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
455
- if(componentInfo.parentNftId != instanceNftId) {
456
- revert ErrorInstanceServiceInstanceComponentMismatch(instanceNftId, componentInfo.nftId);
384
+ if (registry.getNftIdForAddress(componentAddress).gtz()) {
385
+ IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
386
+
387
+ if(componentInfo.parentNftId != instanceNftId) {
388
+ revert ErrorInstanceServiceInstanceComponentMismatch(instanceNftId, componentInfo.nftId);
389
+ }
390
+
391
+ componentNftId = componentInfo.nftId;
392
+ } else {
393
+
457
394
  }
458
395
 
459
396
  instance = Instance(instanceInfo.objectAddress);
460
- componentNftId = componentInfo.nftId;
397
+
461
398
  }
462
399
 
463
400
  // From IService
@@ -12,16 +12,15 @@ contract InstanceServiceManager is ProxyManager {
12
12
  /// @dev initializes proxy manager with instance service implementation
13
13
  constructor(
14
14
  address authority,
15
- address registryAddress,
15
+ address registry,
16
16
  bytes32 salt
17
17
  )
18
- ProxyManager(registryAddress)
19
18
  {
20
- InstanceService instSrv = new InstanceService{salt: salt}();
21
- // bytes memory initCode = type(InstanceService).creationCode;
22
- bytes memory data = abi.encode(registryAddress, address(this), authority);
23
- IVersionable versionable = deployDetermenistic(
24
- address(instSrv),
19
+ InstanceService svc = new InstanceService{salt: salt}();
20
+ bytes memory data = abi.encode(authority, registry);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
25
24
  data,
26
25
  salt);
27
26
 
@@ -7,10 +7,10 @@ import {Amount} from "../type/Amount.sol";
7
7
  import {Key32} from "../type/Key32.sol";
8
8
  import {NftId} from "../type/NftId.sol";
9
9
  import {ClaimId} from "../type/ClaimId.sol";
10
- import {ObjectType, BUNDLE, POLICY, POOL, PREMIUM, PRODUCT, COMPONENT, DISTRIBUTOR} from "../type/ObjectType.sol";
10
+ import {ObjectType, BUNDLE, POLICY, POOL, PREMIUM, PRODUCT, COMPONENT, DISTRIBUTOR, FEE} from "../type/ObjectType.sol";
11
11
  import {RequestId} from "../type/RequestId.sol";
12
12
  import {RiskId} from "../type/RiskId.sol";
13
- import {StateId} from "../type/StateId.sol";
13
+ import {StateId, KEEP_STATE} from "../type/StateId.sol";
14
14
  import {ReferralId} from "../type/Referral.sol";
15
15
  import {DistributorType} from "../type/DistributorType.sol";
16
16
  import {PayoutId} from "../type/PayoutId.sol";
@@ -85,6 +85,17 @@ contract InstanceStore is
85
85
  _update(_toNftKey32(productNftId, PRODUCT()), abi.encode(info), newState);
86
86
  }
87
87
 
88
+
89
+ //--- Fee -----------------------------------------------------------//
90
+ function createFee(NftId productNftId, IComponents.FeeInfo memory info) external restricted() {
91
+ _create(_toNftKey32(productNftId, FEE()), abi.encode(info));
92
+ }
93
+
94
+ // Fee only has one state, so no change change possible
95
+ function updateFee(NftId productNftId, IComponents.FeeInfo memory info) external restricted() {
96
+ _update(_toNftKey32(productNftId, FEE()), abi.encode(info), KEEP_STATE());
97
+ }
98
+
88
99
  //--- Pool --------------------------------------------------------------//
89
100
 
90
101
  function createPool(
@@ -0,0 +1,118 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Key32} from "../type/Key32.sol";
5
+ import {LibNftIdSet} from "../type/NftIdSet.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectSet} from "./base/ObjectSet.sol";
8
+ import {ObjectSetHelperLib} from "./base/ObjectSetHelperLib.sol";
9
+ import {RiskIdLib, RiskId} from "../type/RiskId.sol";
10
+
11
+ /// @dev RiskSet manages the risks and its active policies per product.
12
+ contract RiskSet is
13
+ ObjectSet
14
+ {
15
+
16
+ event LogRiskSetPolicyLinked(RiskId riskId, NftId policyNftId);
17
+ event LogRiskSetPolicyUnlinked(RiskId riskId, NftId policyNftId);
18
+
19
+ event LogRiskSetRiskAdded(NftId productNftId, RiskId riskId);
20
+ event LogRiskSetRiskActive(NftId poolNftId, RiskId riskId);
21
+ event LogRiskSetRiskPaused(NftId poolNftId, RiskId riskId);
22
+ event LogRiskSetRiskArchived(NftId poolNftId, RiskId riskId);
23
+
24
+ error ErrorRiskSetRiskLocked(RiskId riskId, NftId policyNftId);
25
+ error ErrorRiskSetRiskUnknown(RiskId riskId);
26
+ error ErrorRiskSetRiskNotRegistered(RiskId riskId);
27
+
28
+ mapping(RiskId riskId => LibNftIdSet.Set policies) internal _activePolicies;
29
+
30
+ /// @dev links a policy to its bundle
31
+ function linkPolicy(NftId productNftId, RiskId riskId, NftId policyNftId) external restricted() {
32
+
33
+ // ensure risk is active (in active set) and registered with this instance
34
+ if (!_isActive(productNftId, riskId.toKey32())) {
35
+ revert ErrorRiskSetRiskLocked(riskId, policyNftId);
36
+ }
37
+
38
+ LibNftIdSet.add(_activePolicies[riskId], policyNftId);
39
+ emit LogRiskSetPolicyLinked(riskId, policyNftId);
40
+ }
41
+
42
+ /// @dev Unlinks a policy from its risk.
43
+ function unlinkPolicy(NftId productNftId, RiskId riskId, NftId policyNftId) external restricted() {
44
+
45
+ // ensure risk is registered with this instance
46
+ if (!_contains(productNftId, riskId.toKey32())) {
47
+ revert ErrorRiskSetRiskUnknown(riskId);
48
+ }
49
+
50
+ LibNftIdSet.remove(_activePolicies[riskId], policyNftId);
51
+ emit LogRiskSetPolicyUnlinked(riskId, policyNftId);
52
+ }
53
+
54
+ /// @dev add a new risk to a product registered with this instance
55
+ // the corresponding product is fetched via instance reader
56
+ function add(RiskId riskId) external restricted() {
57
+ NftId productNftId = ObjectSetHelperLib.getProductNftId(_instanceAddress, riskId);
58
+
59
+ // ensure product is registered with instance
60
+ if(productNftId.eqz()) {
61
+ revert ErrorRiskSetRiskNotRegistered(riskId);
62
+ }
63
+
64
+ _add(productNftId, riskId.toKey32());
65
+ emit LogRiskSetRiskAdded(productNftId, riskId);
66
+ }
67
+
68
+ /// @dev Applications linked to active risks may be underwritten
69
+ function activate(RiskId riskId) external restricted() {
70
+ NftId productNftId = ObjectSetHelperLib.getProductNftId(_instanceAddress, riskId);
71
+ _activate(productNftId, riskId.toKey32());
72
+ emit LogRiskSetRiskActive(productNftId, riskId);
73
+ }
74
+
75
+ /// @dev Applications linked to paused/archived risks may not be underwritten
76
+ function pause(RiskId riskId) external restricted() {
77
+ NftId productNftId = ObjectSetHelperLib.getProductNftId(_instanceAddress, riskId);
78
+ _deactivate(productNftId, riskId.toKey32());
79
+ emit LogRiskSetRiskPaused(productNftId, riskId);
80
+ }
81
+
82
+ function checkRisk(NftId productNftId, RiskId riskId)
83
+ public
84
+ view
85
+ returns (bool exists, bool active)
86
+ {
87
+ Key32 riskKey32 = riskId.toKey32();
88
+ exists = _contains(productNftId, riskKey32);
89
+
90
+ if (exists) {
91
+ active = _isActive(productNftId, riskKey32);
92
+ }
93
+ }
94
+
95
+ function risks(NftId productNftId) external view returns(uint256) {
96
+ return _objects(productNftId);
97
+ }
98
+
99
+ function getRiskId(NftId productNftId, uint256 idx) external view returns(RiskId riskId) {
100
+ return RiskIdLib.toRiskId(_getObject(productNftId, idx).toKeyId());
101
+ }
102
+
103
+ function activeRisks(NftId productNftId) external view returns(uint256) {
104
+ return _activeObjs(productNftId);
105
+ }
106
+
107
+ function getActiveRiskId(NftId productNftId, uint256 idx) external view returns(RiskId riskId) {
108
+ return RiskIdLib.toRiskId(_getActiveObject(productNftId, idx).toKeyId());
109
+ }
110
+
111
+ function linkedPolicies(RiskId riskId) external view returns(uint256) {
112
+ return LibNftIdSet.size(_activePolicies[riskId]);
113
+ }
114
+
115
+ function getLinkedPolicyNftId(RiskId riskId, uint256 idx) external view returns(NftId policyNftId) {
116
+ return LibNftIdSet.getElementAt(_activePolicies[riskId], idx);
117
+ }
118
+ }
@@ -11,9 +11,8 @@ contract ObjectCounter {
11
11
  // TODO refactor risk id
12
12
  // mapping(NftId productNftId => uint64 risks) private _riskCounter;
13
13
 
14
- uint256 private _requestCounter;
14
+ uint256 private _requestCounter = 0;
15
15
 
16
- // TODO introduce RequestId (uint64)
17
16
  function _createNextRequestId() internal returns (RequestId requestId) {
18
17
  _requestCounter++;
19
18
  requestId = RequestIdLib.toRequestId(_requestCounter);
@@ -3,7 +3,7 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
5
 
6
- import {COMPONENT, BUNDLE, POLICY, REQUEST, RISK, CLAIM, PAYOUT, POOL, PREMIUM, PRODUCT, DISTRIBUTION, DISTRIBUTOR, DISTRIBUTOR_TYPE, REFERRAL} from "../../type/ObjectType.sol";
6
+ import {COMPONENT, BUNDLE, POLICY, REQUEST, RISK, CLAIM, PAYOUT, POOL, PREMIUM, PRODUCT, DISTRIBUTION, DISTRIBUTOR, DISTRIBUTOR_TYPE, REFERRAL, FEE} from "../../type/ObjectType.sol";
7
7
  import {ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, COLLATERALIZED, REVOKED, SUBMITTED, CONFIRMED, DECLINED, EXPECTED, PAID, FULFILLED, FAILED, CANCELLED} from "../../type/StateId.sol";
8
8
  import {Lifecycle} from "../../shared/Lifecycle.sol";
9
9
 
@@ -65,6 +65,7 @@ contract ObjectLifecycle is
65
65
 
66
66
  function _setupClaimLifecycle() private {
67
67
  setInitialState(CLAIM(), SUBMITTED());
68
+ setStateTransition(CLAIM(), SUBMITTED(), REVOKED());
68
69
  setStateTransition(CLAIM(), SUBMITTED(), CONFIRMED());
69
70
  setStateTransition(CLAIM(), SUBMITTED(), DECLINED());
70
71
  setStateTransition(CLAIM(), CONFIRMED(), CLOSED());
@@ -72,8 +73,8 @@ contract ObjectLifecycle is
72
73
 
73
74
  function _setupPayoutLifecycle() private {
74
75
  setInitialState(PAYOUT(), EXPECTED());
75
- // TODO: add state cancelled
76
76
  setStateTransition(PAYOUT(), EXPECTED(), PAID());
77
+ setStateTransition(PAYOUT(), EXPECTED(), CANCELLED());
77
78
  }
78
79
 
79
80
  function _setupRiskLifecycle() private {
@@ -99,6 +100,7 @@ contract ObjectLifecycle is
99
100
  // dummy lifecycle only
100
101
  function _setUpProductLifecycle() private {
101
102
  setInitialState(PRODUCT(), ACTIVE());
103
+ setInitialState(FEE(), ACTIVE());
102
104
  }
103
105
 
104
106
  // dummy lifecycles only