@etherisc/gif-next 0.0.2-ba07940-332 → 0.0.2-ba4eef0-232

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 (479) 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 +449 -248
  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/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +673 -0
  14. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  16. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +222 -21
  18. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +348 -184
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +100 -13
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +92 -285
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +207 -33
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +44 -162
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +309 -168
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +89 -51
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +31 -131
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +177 -67
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +93 -139
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +188 -46
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +247 -287
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +207 -33
  49. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +161 -244
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +644 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  55. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +76 -155
  56. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  57. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +130 -131
  58. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +644 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +288 -226
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +644 -0
  64. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  66. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  67. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +184 -22
  68. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +112 -12
  70. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  71. package/artifacts/contracts/instance/Instance.sol/Instance.json +221 -39
  72. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +700 -317
  74. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  75. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +201 -46
  76. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  77. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +619 -219
  78. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +138 -85
  80. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +46 -34
  82. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +421 -371
  84. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  85. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  86. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  87. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  88. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  91. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  92. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  93. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  94. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  95. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  96. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  97. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  102. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +66 -167
  105. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +189 -35
  107. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +36 -71
  110. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  112. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +50 -103
  114. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +112 -81
  116. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +69 -27
  118. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  119. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +49 -102
  120. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +188 -46
  122. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  123. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +127 -331
  124. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  125. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +53 -87
  126. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  127. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +56 -136
  128. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  129. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +36 -95
  130. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  131. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +163 -226
  132. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  133. package/artifacts/contracts/pool/Pool.sol/Pool.json +49 -126
  134. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  135. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  136. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  137. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +302 -363
  138. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  139. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +93 -51
  140. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  141. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +165 -57
  142. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  143. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +54 -24
  144. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  145. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +155 -193
  146. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  147. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +207 -33
  148. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  149. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +244 -179
  150. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  151. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +74 -64
  152. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  153. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +103 -10
  154. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  155. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
  156. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  157. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +112 -56
  158. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +48 -3
  160. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  161. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +142 -162
  162. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  163. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +58 -7
  164. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  165. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +211 -180
  166. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  167. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  168. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  169. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +76 -50
  170. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  171. package/artifacts/contracts/product/PricingService.sol/PricingService.json +120 -76
  172. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  173. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +60 -38
  174. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  175. package/artifacts/contracts/product/Product.sol/Product.json +155 -193
  176. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  177. package/artifacts/contracts/product/RiskService.sol/RiskService.json +143 -77
  178. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  179. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +66 -24
  180. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  181. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  182. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  183. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -2
  184. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  185. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  186. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  187. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  188. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  189. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  190. package/artifacts/contracts/registry/Registry.sol/Registry.json +88 -40
  191. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  192. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +556 -424
  193. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  194. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
  195. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  196. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
  197. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  198. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +42 -20
  199. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  200. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1954 -0
  201. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  202. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  203. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  204. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +324 -54
  205. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  206. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  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 +49 -88
  211. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  212. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +228 -440
  213. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  214. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +65 -63
  215. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  216. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
  217. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +509 -4
  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 +36 -57
  227. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +123 -262
  229. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +36 -71
  231. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  232. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  233. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  236. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  237. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  239. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  240. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  241. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  242. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  243. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +49 -102
  244. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  245. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  246. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  247. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  248. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  249. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  250. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  251. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  252. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  253. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  254. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  255. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  256. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  257. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  258. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  259. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
  260. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  261. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  262. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  263. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  264. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  265. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +116 -90
  266. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  267. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +127 -3
  268. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  269. package/artifacts/contracts/staking/Staking.sol/Staking.json +193 -193
  270. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  271. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  272. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  273. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  274. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  275. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +61 -45
  276. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  277. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +30 -57
  278. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  279. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +180 -49
  280. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  281. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +50 -24
  282. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  283. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +143 -129
  284. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  285. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +33 -23
  286. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  287. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  289. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  292. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  294. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  296. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  298. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  299. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  300. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  302. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  303. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  304. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  306. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  308. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  310. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  312. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +69 -7
  314. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  316. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  319. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  321. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  325. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  327. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  328. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  329. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  330. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  331. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  332. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  333. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
  334. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  335. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  336. package/contracts/accounting/AccountingService.sol +262 -0
  337. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  338. package/contracts/accounting/IAccountingService.sol +45 -0
  339. package/contracts/authorization/AccessAdmin.sol +300 -192
  340. package/contracts/authorization/AccessAdminLib.sol +183 -0
  341. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  342. package/contracts/authorization/Authorization.sol +307 -231
  343. package/contracts/authorization/IAccessAdmin.sol +69 -36
  344. package/contracts/authorization/IAuthorization.sol +21 -1
  345. package/contracts/distribution/BasicDistribution.sol +18 -16
  346. package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
  347. package/contracts/distribution/Distribution.sol +36 -77
  348. package/contracts/distribution/DistributionService.sol +84 -53
  349. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  350. package/contracts/distribution/IDistributionComponent.sol +0 -9
  351. package/contracts/distribution/IDistributionService.sol +22 -20
  352. package/contracts/examples/fire/FirePool.sol +10 -11
  353. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  354. package/contracts/examples/fire/FireProduct.sol +16 -11
  355. package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
  356. package/contracts/examples/unpermissioned/SimpleDistribution.sol +39 -8
  357. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  358. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
  359. package/contracts/examples/unpermissioned/SimplePool.sol +26 -5
  360. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  361. package/contracts/examples/unpermissioned/SimpleProduct.sol +36 -8
  362. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  363. package/contracts/instance/BundleSet.sol +42 -38
  364. package/contracts/instance/IInstance.sol +56 -17
  365. package/contracts/instance/IInstanceService.sol +22 -10
  366. package/contracts/instance/Instance.sol +93 -29
  367. package/contracts/instance/InstanceAdmin.sol +279 -106
  368. package/contracts/instance/InstanceAuthorizationV3.sol +87 -46
  369. package/contracts/instance/InstanceReader.sol +187 -32
  370. package/contracts/instance/InstanceService.sol +167 -115
  371. package/contracts/instance/InstanceServiceManager.sol +1 -1
  372. package/contracts/instance/InstanceStore.sol +13 -2
  373. package/contracts/instance/RiskSet.sol +118 -0
  374. package/contracts/instance/base/ObjectCounter.sol +1 -2
  375. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  376. package/contracts/instance/base/ObjectSet.sol +31 -33
  377. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  378. package/contracts/instance/module/IComponents.sol +3 -4
  379. package/contracts/instance/module/IDistribution.sol +5 -2
  380. package/contracts/instance/module/IPolicy.sol +2 -1
  381. package/contracts/instance/module/IRisk.sol +3 -0
  382. package/contracts/oracle/BasicOracle.sol +1 -3
  383. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  384. package/contracts/oracle/Oracle.sol +1 -3
  385. package/contracts/oracle/OracleService.sol +92 -73
  386. package/contracts/oracle/OracleServiceManager.sol +1 -1
  387. package/contracts/pool/BasicPool.sol +19 -2
  388. package/contracts/pool/BasicPoolAuthorization.sol +22 -14
  389. package/contracts/pool/BundleService.sol +88 -154
  390. package/contracts/pool/BundleServiceManager.sol +1 -1
  391. package/contracts/pool/IBundleService.sol +15 -43
  392. package/contracts/pool/IPoolComponent.sol +1 -5
  393. package/contracts/pool/IPoolService.sol +58 -62
  394. package/contracts/pool/Pool.sol +95 -81
  395. package/contracts/pool/PoolLib.sol +216 -0
  396. package/contracts/pool/PoolService.sol +418 -211
  397. package/contracts/pool/PoolServiceManager.sol +1 -1
  398. package/contracts/product/ApplicationService.sol +39 -16
  399. package/contracts/product/ApplicationServiceManager.sol +1 -1
  400. package/contracts/product/BasicProduct.sol +2 -2
  401. package/contracts/product/BasicProductAuthorization.sol +24 -10
  402. package/contracts/product/ClaimService.sol +177 -136
  403. package/contracts/product/ClaimServiceManager.sol +1 -1
  404. package/contracts/product/IApplicationService.sol +8 -2
  405. package/contracts/product/IClaimService.sol +14 -2
  406. package/contracts/product/IPolicyService.sol +26 -11
  407. package/contracts/product/IPricingService.sol +1 -0
  408. package/contracts/product/IProductComponent.sol +4 -1
  409. package/contracts/product/IRiskService.sol +7 -7
  410. package/contracts/product/PolicyService.sol +244 -263
  411. package/contracts/product/PolicyServiceLib.sol +65 -0
  412. package/contracts/product/PolicyServiceManager.sol +1 -1
  413. package/contracts/product/PricingService.sol +32 -20
  414. package/contracts/product/PricingServiceManager.sol +3 -3
  415. package/contracts/product/Product.sol +59 -23
  416. package/contracts/product/RiskService.sol +89 -31
  417. package/contracts/product/RiskServiceManager.sol +1 -1
  418. package/contracts/registry/ChainNft.sol +4 -2
  419. package/contracts/registry/IRegistry.sol +10 -15
  420. package/contracts/registry/IRelease.sol +26 -0
  421. package/contracts/registry/Registry.sol +16 -3
  422. package/contracts/registry/RegistryAdmin.sol +145 -335
  423. package/contracts/registry/RegistryAuthorization.sol +267 -0
  424. package/contracts/registry/RegistryService.sol +3 -3
  425. package/contracts/registry/RegistryServiceManager.sol +1 -1
  426. package/contracts/registry/ReleaseAdmin.sol +253 -0
  427. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  428. package/contracts/registry/ReleaseRegistry.sol +150 -134
  429. package/contracts/registry/ServiceAuthorizationV3.sol +177 -40
  430. package/contracts/registry/TokenRegistry.sol +6 -8
  431. package/contracts/shared/Component.sol +52 -107
  432. package/contracts/shared/ComponentService.sol +264 -291
  433. package/contracts/shared/ComponentServiceManager.sol +1 -1
  434. package/contracts/shared/ComponentVerifyingService.sol +16 -14
  435. package/contracts/shared/ContractLib.sol +246 -3
  436. package/contracts/shared/IComponent.sol +1 -17
  437. package/contracts/shared/IComponentService.sol +18 -26
  438. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  439. package/contracts/shared/IRegisterable.sol +15 -4
  440. package/contracts/shared/IService.sol +3 -5
  441. package/contracts/shared/InitializableERC165.sol +9 -1
  442. package/contracts/shared/InstanceLinkedComponent.sol +4 -22
  443. package/contracts/shared/NftOwnable.sol +10 -6
  444. package/contracts/shared/PolicyHolder.sol +1 -1
  445. package/contracts/shared/Registerable.sol +41 -20
  446. package/contracts/shared/RegistryLinked.sol +7 -13
  447. package/contracts/shared/Service.sol +8 -27
  448. package/contracts/shared/TokenHandler.sol +275 -72
  449. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  450. package/contracts/staking/IStaking.sol +17 -10
  451. package/contracts/staking/IStakingService.sol +16 -1
  452. package/contracts/staking/Staking.sol +95 -46
  453. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +80 -23
  454. package/contracts/staking/StakingReader.sol +6 -16
  455. package/contracts/staking/StakingService.sol +85 -14
  456. package/contracts/staking/StakingServiceManager.sol +5 -4
  457. package/contracts/staking/StakingStore.sol +2 -1
  458. package/contracts/type/Key32.sol +2 -2
  459. package/contracts/type/Key32Set.sol +62 -0
  460. package/contracts/type/NftId.sol +6 -0
  461. package/contracts/type/ObjectType.sol +53 -35
  462. package/contracts/type/RiskId.sol +26 -8
  463. package/contracts/type/RoleId.sol +24 -4
  464. package/contracts/type/Selector.sol +5 -0
  465. package/contracts/type/Timestamp.sol +0 -5
  466. package/contracts/type/UFixed.sol +9 -119
  467. package/contracts/type/Version.sol +54 -5
  468. package/contracts/upgradeability/ProxyManager.sol +1 -1
  469. package/package.json +4 -4
  470. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  471. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  472. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  473. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  474. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  475. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
  476. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  477. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  478. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
  479. package/contracts/instance/module/IAccess.sol +0 -46
@@ -2,40 +2,31 @@
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
-
7
- import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
8
- import {Amount} from "../type/Amount.sol";
9
- import {BundleSet} from "./BundleSet.sol";
10
- import {ChainNft} from "../registry/ChainNft.sol";
11
- import {NftId} from "../type/NftId.sol";
12
- 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} from "../type/RoleId.sol";
16
- import {ObjectType, INSTANCE, BUNDLE, APPLICATION, CLAIM, DISTRIBUTION, INSTANCE, POLICY, POOL, PRODUCT, REGISTRY, STAKING} from "../type/ObjectType.sol";
17
-
18
- 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
5
 
6
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
7
+ import {IComponentService} from "../shared/IComponentService.sol";
8
+ import {IInstance} from "./IInstance.sol";
9
+ import {IInstanceService} from "./IInstanceService.sol";
26
10
  import {IRegistry} from "../registry/IRegistry.sol";
27
11
  import {IRegistryService} from "../registry/IRegistryService.sol";
28
12
  import {IStakingService} from "../staking/IStakingService.sol";
29
- import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
30
13
 
14
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
15
+ import {Amount} from "../type/Amount.sol";
16
+ import {BundleSet} from "./BundleSet.sol";
31
17
  import {Instance} from "./Instance.sol";
32
- import {IInstance} from "./IInstance.sol";
33
18
  import {InstanceAdmin} from "./InstanceAdmin.sol";
34
- import {IInstanceService} from "./IInstanceService.sol";
35
19
  import {InstanceReader} from "./InstanceReader.sol";
36
20
  import {InstanceStore} from "./InstanceStore.sol";
21
+ import {NftId} from "../type/NftId.sol";
22
+ import {ObjectType, INSTANCE, COMPONENT, INSTANCE, REGISTRY, STAKING} from "../type/ObjectType.sol";
23
+ import {RiskSet} from "./RiskSet.sol";
24
+ import {RoleId} from "../type/RoleId.sol";
37
25
  import {Seconds} from "../type/Seconds.sol";
38
- import {VersionPart, VersionPartLib} from "../type/Version.sol";
26
+ import {Service} from "../shared/Service.sol";
27
+ import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
28
+ import {UFixed} from "../type/UFixed.sol";
29
+ import {VersionPart} from "../type/Version.sol";
39
30
 
40
31
 
41
32
  contract InstanceService is
@@ -48,32 +39,19 @@ contract InstanceService is
48
39
 
49
40
  IRegistryService internal _registryService;
50
41
  IStakingService internal _stakingService;
42
+ IComponentService internal _componentService;
51
43
 
52
44
  address internal _masterAccessManager;
53
45
  address internal _masterInstanceAdmin;
54
46
  address internal _masterInstance;
55
47
  address internal _masterInstanceReader;
56
48
  address internal _masterInstanceBundleSet;
49
+ address internal _masterInstanceRiskSet;
57
50
  address internal _masterInstanceStore;
58
51
 
59
52
 
60
- modifier onlyInstance() {
61
- address instanceAddress = msg.sender;
62
- NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
63
- if (instanceNftId.eqz()) {
64
- revert ErrorInstanceServiceNotRegistered(instanceAddress);
65
- }
66
-
67
- ObjectType objectType = getRegistry().getObjectInfo(instanceNftId).objectType;
68
- if (objectType != INSTANCE()) {
69
- revert ErrorInstanceServiceNotInstance(instanceAddress, objectType);
70
- }
71
-
72
- VersionPart instanceVersion = IInstance(instanceAddress).getRelease();
73
- if (instanceVersion != getVersion().toMajorPart()) {
74
- revert ErrorInstanceServiceInstanceVersionMismatch(instanceAddress, instanceVersion);
75
- }
76
-
53
+ modifier onlyInstance() {
54
+ _checkInstance(msg.sender, getRelease());
77
55
  _;
78
56
  }
79
57
 
@@ -85,6 +63,7 @@ contract InstanceService is
85
63
  _;
86
64
  }
87
65
 
66
+
88
67
  // TODO check component - service - instance version match
89
68
  modifier onlyComponent() {
90
69
  if (! getRegistry().isRegisteredComponent(msg.sender)) {
@@ -93,42 +72,78 @@ contract InstanceService is
93
72
  _;
94
73
  }
95
74
 
75
+ /// @inheritdoc IInstanceService
76
+ function setInstanceLocked(bool locked)
77
+ external
78
+ virtual
79
+ restricted()
80
+ onlyInstance()
81
+ {
82
+ address instanceAddress = msg.sender;
83
+ IInstance(instanceAddress).getInstanceAdmin().setInstanceLocked(locked);
84
+ }
85
+
86
+
87
+ /// @dev Locks/unlocks the specified target constrolled by the corresponding instance admin.
88
+ function setTargetLocked(address target, bool locked)
89
+ external
90
+ virtual
91
+ restricted()
92
+ onlyInstance()
93
+ {
94
+ address instanceAddress = msg.sender;
95
+ IInstance(instanceAddress).getInstanceAdmin().setTargetLocked(target, locked);
96
+ }
97
+
98
+
96
99
  function createInstance()
97
100
  external
101
+ virtual
102
+ restricted()
98
103
  returns (
99
- Instance clonedInstance,
100
- NftId clonedInstanceNftId
104
+ IInstance instance,
105
+ NftId instanceNftId
101
106
  )
102
107
  {
103
108
  // tx sender will become instance owner
104
109
  address instanceOwner = msg.sender;
105
110
 
106
111
  // create instance admin and instance
107
- InstanceAdmin instanceAdmin = _createInstanceAdmin();
108
- clonedInstance = _createInstance(instanceAdmin, instanceOwner);
112
+ InstanceAdmin instanceAdmin = _cloneNewInstanceAdmin();
113
+ instance = _createInstance(instanceAdmin, instanceOwner);
109
114
 
110
115
  // register cloned instance with registry
111
- clonedInstanceNftId = _registryService.registerInstance(
112
- clonedInstance, instanceOwner).nftId;
116
+ instanceNftId = _registryService.registerInstance(
117
+ instance, instanceOwner).nftId;
118
+
119
+ // MUST be set after instance is set up and registered
120
+ IAuthorization instanceAuthorization = InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization();
121
+ instanceAdmin.completeSetup(
122
+ address(getRegistry()),
123
+ address(instance),
124
+ address(instanceAuthorization),
125
+ getRelease());
126
+
127
+ // hard checks for newly cloned instance
128
+ assert(address(instance.getRegistry()) == address(getRegistry()));
129
+ assert(instance.getRelease() == getRelease());
113
130
 
114
131
  // register cloned instance as staking target
115
132
  _stakingService.createInstanceTarget(
116
- clonedInstanceNftId,
133
+ instanceNftId,
117
134
  TargetManagerLib.getDefaultLockingPeriod(),
118
135
  TargetManagerLib.getDefaultRewardRate());
119
136
 
120
- // MUST be set after instance is set up and registered
121
- instanceAdmin.initializeInstanceAuthorization(address(clonedInstance));
122
-
123
137
  emit LogInstanceCloned(
124
- clonedInstanceNftId,
125
- address(clonedInstance));
138
+ instanceNftId,
139
+ address(instance));
126
140
  }
127
141
 
128
142
 
129
143
  function setStakingLockingPeriod(Seconds stakeLockingPeriod)
130
144
  external
131
145
  virtual
146
+ restricted()
132
147
  onlyInstance()
133
148
  {
134
149
  NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
@@ -141,6 +156,7 @@ contract InstanceService is
141
156
  function setStakingRewardRate(UFixed rewardRate)
142
157
  external
143
158
  virtual
159
+ restricted()
144
160
  onlyInstance()
145
161
  {
146
162
  NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
@@ -149,10 +165,23 @@ contract InstanceService is
149
165
  rewardRate);
150
166
  }
151
167
 
168
+ function setStakingMaxAmount(Amount maxStakedAmount)
169
+ external
170
+ virtual
171
+ restricted()
172
+ onlyInstance()
173
+ {
174
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
175
+ _stakingService.setInstanceMaxStakedAmount(
176
+ instanceNftId,
177
+ maxStakedAmount);
178
+ }
179
+
152
180
 
153
181
  function refillStakingRewardReserves(address rewardProvider, Amount dipAmount)
154
182
  external
155
183
  virtual
184
+ restricted()
156
185
  onlyInstance()
157
186
  {
158
187
  NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
@@ -166,6 +195,7 @@ contract InstanceService is
166
195
  function withdrawStakingRewardReserves(Amount dipAmount)
167
196
  external
168
197
  virtual
198
+ restricted()
169
199
  onlyInstance()
170
200
  returns (Amount newBalance)
171
201
  {
@@ -176,45 +206,31 @@ contract InstanceService is
176
206
  }
177
207
 
178
208
 
179
- function setComponentLocked(bool locked)
180
- external
181
- virtual
182
- onlyComponent()
209
+ function upgradeInstanceReader()
210
+ external
211
+ restricted()
212
+ onlyInstance()
183
213
  {
184
- // checks
185
- address componentAddress = msg.sender;
186
-
187
- if (!IInstanceLinkedComponent(componentAddress).supportsInterface(type(IInstanceLinkedComponent).interfaceId)) {
188
- revert ErrorInstanceServiceComponentNotInstanceLinked(componentAddress);
189
- }
190
-
191
- IRegistry registry = getRegistry();
192
- NftId instanceNftId = registry.getObjectInfo(componentAddress).parentNftId;
193
-
194
- IInstance instance = IInstance(
195
- registry.getObjectAddress(instanceNftId));
214
+ address instanceAddress = msg.sender;
215
+ IInstance instance = IInstance(msg.sender);
216
+
217
+ InstanceReader upgradedInstanceReaderClone = InstanceReader(
218
+ Clones.clone(address(_masterInstanceReader)));
196
219
 
197
- // no revert in case already locked
198
- // TODO refactor/implement
199
- // instance.getInstanceAdmin().setTargetLockedByService(
200
- // componentAddress,
201
- // locked);
220
+ upgradedInstanceReaderClone.initializeWithInstance(instanceAddress);
221
+ instance.setInstanceReader(upgradedInstanceReaderClone);
202
222
  }
203
223
 
204
224
 
205
- function getMasterInstanceReader() external view returns (address) {
206
- return _masterInstanceReader;
207
- }
208
-
209
225
  function setAndRegisterMasterInstance(address instanceAddress)
210
- external
211
- onlyOwner
212
- returns(NftId masterInstanceNftId)
226
+ external
227
+ onlyOwner()
228
+ returns(NftId masterInstanceNftId)
213
229
  {
214
230
  if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
215
231
  if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
216
232
  if(_masterInstanceBundleSet != address(0)) { revert ErrorInstanceServiceMasterBundleSetAlreadySet(); }
217
-
233
+ if(_masterInstanceRiskSet != address(0)) { revert ErrorInstanceServiceMasterRiskSetAlreadySet(); }
218
234
  if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
219
235
 
220
236
  IInstance instance = IInstance(instanceAddress);
@@ -223,28 +239,34 @@ contract InstanceService is
223
239
  address instanceAdminAddress = address(instanceAdmin);
224
240
  InstanceReader instanceReader = instance.getInstanceReader();
225
241
  address instanceReaderAddress = address(instanceReader);
226
- BundleSet bundleManager = instance.getBundleSet();
227
- address bundleManagerAddress = address(bundleManager);
242
+ BundleSet bundleSet = instance.getBundleSet();
243
+ address bundleSetAddress = address(bundleSet);
244
+ RiskSet riskSet = instance.getRiskSet();
245
+ address riskSetAddress = address(riskSet);
228
246
  InstanceStore instanceStore = instance.getInstanceStore();
229
247
  address instanceStoreAddress = address(instanceStore);
230
248
 
231
249
  if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
232
250
  if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
233
251
  if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
234
- if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
252
+ if(bundleSetAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
253
+ if(riskSetAddress == address(0)) { revert ErrorInstanceServiceRiskSetZero(); }
235
254
  if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
236
255
 
237
256
  if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
238
- if(bundleManager.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
257
+ if(bundleSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
258
+ if(riskSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceRiskSetAuthorityMismatch(); }
239
259
  if(instanceStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
240
- if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
260
+ if(bundleSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceBundleSetInstanceMismatch(); }
261
+ if(riskSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceRiskSetInstanceMismatch(); }
241
262
  if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
242
263
 
243
264
  _masterAccessManager = accessManagerAddress;
244
265
  _masterInstanceAdmin = instanceAdminAddress;
245
266
  _masterInstance = instanceAddress;
246
267
  _masterInstanceReader = instanceReaderAddress;
247
- _masterInstanceBundleSet = bundleManagerAddress;
268
+ _masterInstanceBundleSet = bundleSetAddress;
269
+ _masterInstanceRiskSet = riskSetAddress;
248
270
  _masterInstanceStore = instanceStoreAddress;
249
271
 
250
272
  IInstance masterInstance = IInstance(_masterInstance);
@@ -252,7 +274,10 @@ contract InstanceService is
252
274
  masterInstanceNftId = info.nftId;
253
275
  }
254
276
 
255
- function upgradeMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
277
+ function upgradeMasterInstanceReader(address instanceReaderAddress)
278
+ external
279
+ onlyOwner
280
+ {
256
281
  if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
257
282
  if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
258
283
  if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
@@ -263,38 +288,29 @@ contract InstanceService is
263
288
  _masterInstanceReader = instanceReaderAddress;
264
289
  }
265
290
 
266
- function upgradeInstanceReader(NftId instanceNftId)
267
- external
268
- onlyInstanceOwner(instanceNftId)
269
- {
270
- IRegistry registry = getRegistry();
271
- IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
272
- Instance instance = Instance(instanceInfo.objectAddress);
273
-
274
- InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
275
- upgradedInstanceReaderClone.initializeWithInstance(address(instance));
276
- instance.setInstanceReader(upgradedInstanceReaderClone);
291
+ function getMasterInstanceReader() external view returns (address) {
292
+ return _masterInstanceReader;
277
293
  }
278
294
 
279
295
  /// @dev create new cloned instance admin
280
296
  /// function used to setup a new instance
281
- function _createInstanceAdmin()
297
+ function _cloneNewInstanceAdmin()
282
298
  internal
283
299
  virtual
284
- returns (InstanceAdmin clonedInstanceAdmin)
300
+ returns (InstanceAdmin clonedAdmin)
285
301
  {
286
- // start with setting up a new OZ access manager
302
+ // clone instance specific access manager
287
303
  AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
288
- Clones.clone(_masterAccessManager));
304
+ Clones.clone(
305
+ InstanceAdmin(_masterInstanceAdmin).authority()));
289
306
 
290
307
  // set up the instance admin
291
- clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
292
- clonedAccessManager.initialize(
293
- address(clonedInstanceAdmin)); // grant ADMIN_ROLE to instance admin
308
+ clonedAdmin = InstanceAdmin(
309
+ Clones.clone(_masterInstanceAdmin));
294
310
 
295
- clonedInstanceAdmin.initialize(
296
- clonedAccessManager,
297
- InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
311
+ clonedAdmin.initialize(
312
+ address(clonedAccessManager),
313
+ "InstanceAdmin");
298
314
  }
299
315
 
300
316
 
@@ -306,21 +322,26 @@ contract InstanceService is
306
322
  )
307
323
  internal
308
324
  virtual
309
- returns (Instance clonedInstance)
325
+ returns (IInstance)
310
326
  {
311
327
  InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
312
328
  BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
329
+ RiskSet clonedRiskSet = RiskSet(Clones.clone(_masterInstanceRiskSet));
313
330
  InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
314
331
 
315
332
  // clone instance
316
- clonedInstance = Instance(Clones.clone(_masterInstance));
333
+ Instance clonedInstance = Instance(Clones.clone(_masterInstance));
317
334
  clonedInstance.initialize(
318
335
  instanceAdmin,
319
336
  clonedInstanceStore,
320
337
  clonedBundleSet,
338
+ clonedRiskSet,
321
339
  clonedInstanceReader,
322
340
  getRegistry(),
341
+ getRelease(),
323
342
  instanceOwner);
343
+
344
+ return clonedInstance;
324
345
  }
325
346
 
326
347
 
@@ -363,14 +384,15 @@ contract InstanceService is
363
384
  initializer()
364
385
  {
365
386
  (
366
- address registryAddress,
367
- address authority
387
+ address authority,
388
+ address registry
368
389
  ) = abi.decode(data, (address, address));
369
390
 
370
- _initializeService(registryAddress, authority, owner);
391
+ __Service_init(authority, registry, owner);
371
392
 
372
393
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
373
394
  _stakingService = IStakingService(_getServiceAddress(STAKING()));
395
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
374
396
 
375
397
  _registerInterface(type(IInstanceService).interfaceId);
376
398
  }
@@ -403,6 +425,36 @@ contract InstanceService is
403
425
 
404
426
  }
405
427
 
428
+
429
+ function _checkInstance(
430
+ address instanceAddress,
431
+ VersionPart expectedRelease
432
+ )
433
+ internal
434
+ virtual
435
+ view
436
+ {
437
+ IRegistry registry = getRegistry();
438
+
439
+ NftId instanceNftId = registry.getNftIdForAddress(instanceAddress);
440
+ if (instanceNftId.eqz()) {
441
+ revert ErrorInstanceServiceNotRegistered(instanceAddress);
442
+ }
443
+
444
+ ObjectType objectType = registry.getObjectInfo(instanceNftId).objectType;
445
+ if (objectType != INSTANCE()) {
446
+ revert ErrorInstanceServiceNotInstance(instanceAddress, objectType);
447
+ }
448
+
449
+ if (expectedRelease.gtz()) {
450
+ VersionPart instanceRelease = IInstance(instanceAddress).getRelease();
451
+ if (instanceRelease != expectedRelease) {
452
+ revert ErrorInstanceServiceInstanceVersionMismatch(instanceNftId, expectedRelease, instanceRelease);
453
+ }
454
+ }
455
+ }
456
+
457
+
406
458
  // From IService
407
459
  function _getDomain() internal pure override returns(ObjectType) {
408
460
  return INSTANCE();
@@ -17,7 +17,7 @@ contract InstanceServiceManager is ProxyManager {
17
17
  )
18
18
  {
19
19
  InstanceService svc = new InstanceService{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),
@@ -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);