@etherisc/gif-next 0.0.2-7177fd8-761 → 0.0.2-71b939f-497

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 (471) hide show
  1. package/README.md +32 -8
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
  4. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  6. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -32
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  14. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  16. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  18. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  20. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +159 -353
  22. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
  24. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +99 -277
  26. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +227 -290
  28. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +125 -117
  30. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +89 -115
  32. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +101 -31
  34. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  36. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1429 -0
  38. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  40. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1979 -0
  42. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  44. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1430 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1177 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1606 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2281 -0
  54. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  55. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +147 -42
  56. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +98 -30
  58. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +53 -88
  60. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  61. package/artifacts/contracts/instance/Instance.sol/Instance.json +123 -123
  62. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +179 -139
  64. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  65. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +58 -85
  66. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +726 -133
  68. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +118 -247
  70. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +99 -87
  72. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +337 -138
  74. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  75. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
  76. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  77. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  78. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  79. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  80. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  81. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  82. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  83. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  84. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  85. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  86. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  87. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  88. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  89. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  90. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  91. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  92. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +111 -305
  94. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
  96. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  98. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +77 -103
  99. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  101. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +87 -265
  103. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +147 -191
  105. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +119 -83
  107. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  108. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +106 -284
  109. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  110. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
  111. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  112. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +146 -307
  113. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  114. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +111 -119
  115. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  116. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +48 -33
  117. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  118. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +98 -135
  119. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  120. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +283 -180
  121. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  122. package/artifacts/contracts/pool/Pool.sol/Pool.json +106 -295
  123. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  124. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +382 -407
  125. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +123 -99
  127. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  128. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +119 -165
  129. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +93 -85
  131. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  132. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +149 -281
  133. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  134. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
  135. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  136. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +282 -229
  137. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +132 -108
  139. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  140. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +63 -7
  141. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  142. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +161 -7
  143. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  144. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +179 -35
  145. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  146. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
  147. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  148. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +136 -116
  149. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  150. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
  151. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  152. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +281 -323
  153. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +123 -119
  155. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  156. package/artifacts/contracts/product/PricingService.sol/PricingService.json +215 -309
  157. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  158. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +117 -117
  159. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  160. package/artifacts/contracts/product/Product.sol/Product.json +147 -279
  161. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  162. package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
  163. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  164. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -0
  165. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  166. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  167. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  168. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +310 -34
  169. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  170. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
  171. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  172. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  173. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  174. package/artifacts/contracts/registry/Registry.sol/Registry.json +516 -95
  175. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  176. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +296 -143
  177. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  178. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +94 -284
  179. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  180. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +91 -75
  181. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  182. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  183. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  184. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +131 -223
  185. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  186. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  187. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  188. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  189. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  190. package/artifacts/contracts/shared/Component.sol/Component.json +76 -239
  191. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  192. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +413 -329
  193. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  194. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +140 -118
  195. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  196. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
  197. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  198. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +488 -0
  199. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  200. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  201. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  202. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  203. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  204. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +66 -77
  205. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  206. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +388 -19
  207. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  208. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +77 -103
  209. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  210. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  211. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  212. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  213. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  214. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  215. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  216. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  217. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  219. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  220. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  221. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  222. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  223. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  224. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  225. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +87 -265
  226. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  227. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  228. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  229. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  230. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  231. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  232. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  234. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  235. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  236. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
  238. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  239. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  240. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  241. package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
  242. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  243. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +674 -49
  244. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  245. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  246. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  247. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  248. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  249. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +111 -114
  250. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  251. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  252. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  253. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +64 -94
  254. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  255. package/artifacts/contracts/staking/Staking.sol/Staking.json +193 -368
  256. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  257. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  258. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  259. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +117 -110
  260. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  261. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  262. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  263. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +87 -165
  264. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  265. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +95 -79
  266. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  267. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +170 -129
  268. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  269. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +55 -24
  270. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  271. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/Amount.sol/AmountLib.json +33 -9
  273. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  276. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  278. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  280. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  281. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  282. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  283. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  284. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  286. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  287. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  288. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  290. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  292. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  294. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  296. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +99 -5
  298. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  300. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  302. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  306. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  309. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +16 -3
  311. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  313. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  314. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  315. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +71 -70
  316. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  317. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  318. package/contracts/authorization/AccessAdmin.sol +83 -59
  319. package/contracts/authorization/Authorization.sol +111 -40
  320. package/contracts/authorization/IAccess.sol +1 -0
  321. package/contracts/authorization/IAccessAdmin.sol +4 -3
  322. package/contracts/authorization/IAuthorization.sol +13 -7
  323. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  324. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  325. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  326. package/contracts/distribution/BasicDistribution.sol +4 -3
  327. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  328. package/contracts/distribution/Distribution.sol +12 -23
  329. package/contracts/distribution/DistributionService.sol +97 -66
  330. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  331. package/contracts/distribution/IDistributionComponent.sol +1 -1
  332. package/contracts/distribution/IDistributionService.sol +13 -8
  333. package/contracts/examples/fire/DamageLevel.sol +59 -0
  334. package/contracts/examples/fire/FirePool.sol +86 -0
  335. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  336. package/contracts/examples/fire/FireProduct.sol +431 -0
  337. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  338. package/contracts/examples/fire/FireUSD.sol +26 -0
  339. package/contracts/examples/unpermissioned/SimpleDistribution.sol +58 -0
  340. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  341. package/contracts/examples/unpermissioned/SimplePool.sol +108 -0
  342. package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
  343. package/contracts/instance/BundleSet.sol +38 -34
  344. package/contracts/instance/IInstance.sol +16 -30
  345. package/contracts/instance/IInstanceService.sol +7 -25
  346. package/contracts/instance/Instance.sol +43 -56
  347. package/contracts/instance/InstanceAdmin.sol +64 -49
  348. package/contracts/instance/InstanceAuthorizationV3.sol +40 -27
  349. package/contracts/instance/InstanceReader.sol +193 -20
  350. package/contracts/instance/InstanceService.sol +58 -100
  351. package/contracts/instance/InstanceServiceManager.sol +6 -7
  352. package/contracts/instance/InstanceStore.sol +11 -1
  353. package/contracts/instance/RiskSet.sol +119 -0
  354. package/contracts/instance/base/ObjectCounter.sol +1 -2
  355. package/contracts/instance/base/ObjectLifecycle.sol +7 -1
  356. package/contracts/instance/base/ObjectSet.sol +24 -25
  357. package/contracts/instance/module/IComponents.sol +10 -6
  358. package/contracts/instance/module/IPolicy.sol +25 -24
  359. package/contracts/instance/module/IRisk.sol +1 -0
  360. package/contracts/oracle/BasicOracle.sol +0 -1
  361. package/contracts/oracle/IOracleService.sol +2 -1
  362. package/contracts/oracle/Oracle.sol +6 -16
  363. package/contracts/oracle/OracleService.sol +112 -81
  364. package/contracts/oracle/OracleServiceManager.sol +6 -6
  365. package/contracts/pool/BasicPool.sol +33 -24
  366. package/contracts/pool/BasicPoolAuthorization.sol +12 -2
  367. package/contracts/pool/BundleService.sol +69 -83
  368. package/contracts/pool/BundleServiceManager.sol +6 -6
  369. package/contracts/pool/IBundleService.sol +3 -14
  370. package/contracts/pool/IPoolComponent.sol +19 -15
  371. package/contracts/pool/IPoolService.sol +48 -42
  372. package/contracts/pool/Pool.sol +144 -127
  373. package/contracts/pool/PoolService.sol +277 -189
  374. package/contracts/pool/PoolServiceManager.sol +4 -4
  375. package/contracts/product/ApplicationService.sol +34 -25
  376. package/contracts/product/ApplicationServiceManager.sol +4 -4
  377. package/contracts/product/BasicProduct.sol +9 -12
  378. package/contracts/product/BasicProductAuthorization.sol +0 -1
  379. package/contracts/product/ClaimService.sol +312 -115
  380. package/contracts/product/ClaimServiceManager.sol +4 -4
  381. package/contracts/product/IApplicationService.sol +5 -2
  382. package/contracts/product/IClaimService.sol +30 -7
  383. package/contracts/product/IPolicyService.sol +31 -25
  384. package/contracts/product/IPricingService.sol +10 -10
  385. package/contracts/product/IProductComponent.sol +23 -4
  386. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -2
  387. package/contracts/product/PolicyService.sol +396 -263
  388. package/contracts/product/PolicyServiceManager.sol +4 -4
  389. package/contracts/product/PricingService.sol +49 -53
  390. package/contracts/product/PricingServiceManager.sol +3 -3
  391. package/contracts/product/Product.sol +101 -87
  392. package/contracts/product/{ProductService.sol → RiskService.sol} +21 -13
  393. package/contracts/product/RiskServiceManager.sol +39 -0
  394. package/contracts/registry/ChainNft.sol +72 -40
  395. package/contracts/registry/IRegistry.sol +57 -18
  396. package/contracts/registry/IRegistryService.sol +5 -12
  397. package/contracts/registry/ITransferInterceptor.sol +1 -2
  398. package/contracts/registry/Registry.sol +350 -201
  399. package/contracts/registry/RegistryAdmin.sol +140 -54
  400. package/contracts/registry/RegistryService.sol +35 -46
  401. package/contracts/registry/RegistryServiceManager.sol +2 -2
  402. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  403. package/contracts/registry/ReleaseRegistry.sol +207 -206
  404. package/contracts/registry/ServiceAuthorizationV3.sol +22 -47
  405. package/contracts/shared/Component.sol +52 -116
  406. package/contracts/shared/ComponentService.sol +335 -166
  407. package/contracts/shared/ComponentServiceManager.sol +8 -5
  408. package/contracts/shared/ComponentVerifyingService.sol +28 -17
  409. package/contracts/shared/ContractLib.sol +224 -0
  410. package/contracts/shared/IComponent.sol +10 -14
  411. package/contracts/shared/IComponentService.sol +38 -16
  412. package/contracts/shared/IInstanceLinkedComponent.sol +2 -17
  413. package/contracts/shared/ILifecycle.sol +3 -1
  414. package/contracts/shared/INftOwnable.sol +2 -0
  415. package/contracts/shared/IPolicyHolder.sol +12 -22
  416. package/contracts/shared/IRegisterable.sol +11 -0
  417. package/contracts/shared/InitializableERC165.sol +2 -2
  418. package/contracts/shared/InstanceLinkedComponent.sol +71 -38
  419. package/contracts/shared/KeyValueStore.sol +1 -1
  420. package/contracts/shared/Lifecycle.sol +15 -4
  421. package/contracts/shared/NftOwnable.sol +27 -7
  422. package/contracts/shared/PolicyHolder.sol +15 -52
  423. package/contracts/shared/Registerable.sol +19 -11
  424. package/contracts/shared/RegistryLinked.sol +9 -14
  425. package/contracts/shared/Service.sol +20 -18
  426. package/contracts/shared/TokenHandler.sol +357 -30
  427. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  428. package/contracts/staking/IStaking.sol +11 -5
  429. package/contracts/staking/IStakingService.sol +0 -3
  430. package/contracts/staking/StakeManagerLib.sol +18 -25
  431. package/contracts/staking/Staking.sol +39 -50
  432. package/contracts/staking/StakingManager.sol +8 -6
  433. package/contracts/staking/StakingReader.sol +12 -5
  434. package/contracts/staking/StakingService.sol +58 -25
  435. package/contracts/staking/StakingServiceManager.sol +2 -2
  436. package/contracts/staking/TargetManagerLib.sol +7 -3
  437. package/contracts/type/Amount.sol +15 -0
  438. package/contracts/type/ClaimId.sol +6 -1
  439. package/contracts/type/Key32.sol +2 -2
  440. package/contracts/type/Key32Set.sol +62 -0
  441. package/contracts/type/NftId.sol +7 -0
  442. package/contracts/type/ObjectType.sol +18 -11
  443. package/contracts/type/PayoutId.sol +10 -10
  444. package/contracts/type/RiskId.sol +30 -4
  445. package/contracts/type/RoleId.sol +0 -12
  446. package/contracts/type/Seconds.sol +8 -0
  447. package/contracts/type/StateId.sol +15 -1
  448. package/contracts/type/UFixed.sol +13 -119
  449. package/contracts/upgradeability/ProxyManager.sol +68 -34
  450. package/contracts/upgradeability/Versionable.sol +2 -2
  451. package/package.json +4 -3
  452. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  453. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  454. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  455. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  456. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  457. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  458. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  459. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  460. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  461. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  462. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  463. package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.dbg.json +0 -4
  464. package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.json +0 -42
  465. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  466. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  467. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  468. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  469. package/contracts/product/ProductServiceManager.sol +0 -39
  470. package/contracts/shared/InitializableCustom.sol +0 -177
  471. package/contracts/shared/TokenTransferLib.sol +0 -60
@@ -5,15 +5,16 @@ import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManage
5
5
 
6
6
  import {AccessAdmin} from "../authorization/AccessAdmin.sol";
7
7
  import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
8
- import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
9
8
  import {IAuthorization} from "../authorization/IAuthorization.sol";
10
- import {IModuleAuthorization} from "../authorization/IModuleAuthorization.sol";
9
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
10
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
11
11
  import {IRegistry} from "../registry/IRegistry.sol";
12
12
  import {IInstance} from "./IInstance.sol";
13
13
  import {IService} from "../shared/IService.sol";
14
14
  import {ObjectType, ObjectTypeLib, ALL, POOL, RELEASE} from "../type/ObjectType.sol";
15
- import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
15
+ import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
16
16
  import {Str, StrLib} from "../type/String.sol";
17
+ import {TokenHandler} from "../shared/TokenHandler.sol";
17
18
  import {VersionPart} from "../type/Version.sol";
18
19
 
19
20
 
@@ -24,6 +25,7 @@ contract InstanceAdmin is
24
25
  string public constant INSTANCE_STORE_TARGET_NAME = "InstanceStore";
25
26
  string public constant INSTANCE_ADMIN_TARGET_NAME = "InstanceAdmin";
26
27
  string public constant BUNDLE_SET_TARGET_NAME = "BundleSet";
28
+ string public constant RISK_SET_TAGET_NAME = "RiskSet";
27
29
 
28
30
  uint64 public constant CUSTOM_ROLE_ID_MIN = 10000; // MUST be even
29
31
 
@@ -36,16 +38,16 @@ contract InstanceAdmin is
36
38
  IRegistry internal _registry;
37
39
  uint64 _idNext;
38
40
 
39
- IModuleAuthorization _instanceAuthorization;
41
+ IAuthorization _instanceAuthorization;
40
42
 
41
43
  /// @dev Only used for master instance admin.
42
44
  /// Contracts created via constructor come with disabled initializers.
43
45
  constructor(
44
- IModuleAuthorization instanceAuthorization
46
+ address instanceAuthorization
45
47
  )
46
48
  AccessAdmin()
47
49
  {
48
- _instanceAuthorization = instanceAuthorization;
50
+ _instanceAuthorization = IAuthorization(instanceAuthorization);
49
51
  }
50
52
 
51
53
  /// @dev Initializes this instance admin with the provided instances authorization specification.
@@ -54,10 +56,10 @@ contract InstanceAdmin is
54
56
  /// Important: Initialization of this instance admin is only complete after calling function initializeInstance.
55
57
  function initialize(
56
58
  AccessManagerCloneable accessManager,
57
- IModuleAuthorization instanceAuthorization
59
+ address instanceAuthorization
58
60
  )
59
61
  external
60
- initializer()
62
+ initializer()
61
63
  {
62
64
  // create new access manager for this instance admin
63
65
  _initializeAuthority(address(accessManager));
@@ -66,20 +68,7 @@ contract InstanceAdmin is
66
68
  _createAdminAndPublicRoles();
67
69
 
68
70
  // store instance authorization specification
69
- _instanceAuthorization = IModuleAuthorization(instanceAuthorization);
70
- }
71
-
72
- function _checkTargetIsReadyForAuthorization(address target)
73
- internal
74
- view
75
- {
76
- if (address(_registry) != address(0) && !_registry.isRegistered(target)) {
77
- revert ErrorInstanceAdminNotRegistered(target);
78
- }
79
-
80
- if (targetExists(target)) {
81
- revert ErrorInstanceAdminAlreadyAuthorized(target);
82
- }
71
+ _instanceAuthorization = IAuthorization(instanceAuthorization);
83
72
  }
84
73
 
85
74
  /// @dev Completes the initialization of this instance admin using the provided instance.
@@ -94,7 +83,7 @@ contract InstanceAdmin is
94
83
  _registry = _instance.getRegistry();
95
84
 
96
85
  // check matching releases
97
- if (_instanceAuthorization.getRelease() != _instance.getMajorVersion()) {
86
+ if (_instanceAuthorization.getRelease() != _instance.getRelease()) {
98
87
  revert ErrorInstanceAdminReleaseMismatch();
99
88
  }
100
89
 
@@ -102,50 +91,58 @@ contract InstanceAdmin is
102
91
  _createRoles(_instanceAuthorization);
103
92
  _createModuleTargetsWithRoles();
104
93
  _createTargetAuthorizations(_instanceAuthorization);
105
-
106
- // grant component owner roles to instance owner
107
- _grantComponentOwnerRoles();
108
94
  }
109
95
 
110
96
 
111
97
  /// @dev Initializes the authorization for the specified component.
112
98
  /// Important: The component MUST be registered.
113
99
  function initializeComponentAuthorization(
114
- address componentAddress,
115
- IAuthorization authorization
100
+ IInstanceLinkedComponent component
116
101
  )
117
102
  external
118
103
  {
119
- _checkTargetIsReadyForAuthorization(componentAddress);
104
+ // checks
105
+ // get authorization specification
106
+ IAuthorization authorization = component.getAuthorization();
107
+ string memory targetName = authorization.getTargetName();
108
+ _checkTargetIsReadyForAuthorization(address(component));
109
+
120
110
 
111
+ // create roles
121
112
  _createRoles(authorization);
122
113
 
123
114
  // create component target
124
115
  _createTarget(
125
- componentAddress,
126
- authorization.getTargetName(),
116
+ address(component),
117
+ targetName,
127
118
  true, // checkAuthority
128
119
  false); // custom
129
120
 
121
+ _createTarget(
122
+ address(component.getTokenHandler()),
123
+ string(abi.encodePacked(targetName, "TH")),
124
+ true,
125
+ false);
126
+
127
+ FunctionInfo[] memory functions = new FunctionInfo[](3);
128
+ functions[0] = toFunction(TokenHandler.collectTokens.selector, "collectTokens");
129
+ functions[1] = toFunction(TokenHandler.collectTokensToThreeRecipients.selector, "collectTokensToThreeRecipients");
130
+ functions[2] = toFunction(TokenHandler.distributeTokens.selector, "distributeTokens");
131
+
132
+ // FIXME: make this a bit nicer and work with IAuthorization. Use a specific role, not public - access to TokenHandler must be restricted
133
+ _authorizeTargetFunctions(
134
+ address(component.getTokenHandler()),
135
+ getPublicRole(),
136
+ functions);
137
+
130
138
  _grantRoleToAccount(
131
139
  authorization.getTargetRole(
132
- authorization.getTarget()),
133
- componentAddress);
140
+ authorization.getMainTarget()),
141
+ address(component));
134
142
 
135
143
  _createTargetAuthorizations(authorization);
136
144
  }
137
145
 
138
-
139
- function _grantComponentOwnerRoles()
140
- internal
141
- {
142
- address instanceOwner = _registry.ownerOf(_instance.getNftId());
143
- _grantRoleToAccount(DISTRIBUTION_OWNER_ROLE(), instanceOwner);
144
- _grantRoleToAccount(ORACLE_OWNER_ROLE(), instanceOwner);
145
- _grantRoleToAccount(POOL_OWNER_ROLE(), instanceOwner);
146
- _grantRoleToAccount(PRODUCT_OWNER_ROLE(), instanceOwner);
147
- }
148
-
149
146
  /// @dev Creates a custom role
150
147
  // TODO implement
151
148
  // function createRole()
@@ -169,12 +166,26 @@ contract InstanceAdmin is
169
166
  function getInstanceAuthorization()
170
167
  external
171
168
  view
172
- returns (IModuleAuthorization instanceAuthorizaion)
169
+ returns (IAuthorization instanceAuthorizaion)
173
170
  {
174
171
  return _instanceAuthorization;
175
172
  }
176
173
 
177
174
 
175
+ function _checkTargetIsReadyForAuthorization(address target)
176
+ internal
177
+ view
178
+ {
179
+ if (address(_registry) != address(0) && !_registry.isRegistered(target)) {
180
+ revert ErrorInstanceAdminNotRegistered(target);
181
+ }
182
+
183
+ if (targetExists(target)) {
184
+ revert ErrorInstanceAdminAlreadyAuthorized(target);
185
+ }
186
+ }
187
+
188
+
178
189
  function _createRoles(IAuthorization authorization)
179
190
  internal
180
191
  {
@@ -184,9 +195,12 @@ contract InstanceAdmin is
184
195
 
185
196
  for(uint256 i = 0; i < roles.length; i++) {
186
197
  roleId = roles[i];
187
- _createRole(
188
- roleId,
189
- authorization.getRoleInfo(roleId));
198
+
199
+ if (!roleExists(roleId)) {
200
+ _createRole(
201
+ roleId,
202
+ authorization.getRoleInfo(roleId));
203
+ }
190
204
  }
191
205
  }
192
206
 
@@ -231,7 +245,7 @@ contract InstanceAdmin is
231
245
  _createTarget(
232
246
  target,
233
247
  targetName,
234
- false, // check authority TODO check normal targets, don't check service targets (they share authority with registry admin)
248
+ false, // check authority TODO check normal targets, don't check service targets (they share authority with release admin)
235
249
  false);
236
250
 
237
251
  // assign target role if defined
@@ -249,6 +263,7 @@ contract InstanceAdmin is
249
263
  _checkAndCreateTargetWithRole(address(_instance.getInstanceStore()), INSTANCE_STORE_TARGET_NAME);
250
264
  _checkAndCreateTargetWithRole(address(_instance.getInstanceAdmin()), INSTANCE_ADMIN_TARGET_NAME);
251
265
  _checkAndCreateTargetWithRole(address(_instance.getBundleSet()), BUNDLE_SET_TARGET_NAME);
266
+ _checkAndCreateTargetWithRole(address(_instance.getRiskSet()), RISK_SET_TAGET_NAME);
252
267
 
253
268
  // create targets for services that need to access the module targets
254
269
  ObjectType[] memory serviceDomains = _instanceAuthorization.getServiceDomains();
@@ -2,49 +2,38 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {
5
- PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, APPLICATION, POLICY, CLAIM, BUNDLE
5
+ PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, APPLICATION, POLICY, CLAIM, BUNDLE, RISK
6
6
  } from "../../contracts/type/ObjectType.sol";
7
7
 
8
- import {
9
- ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE
10
- } from "../../contracts/type/RoleId.sol";
11
-
12
- import {BundleSet} from "../instance/BundleSet.sol";
8
+ import {BundleSet} from "../instance/BundleSet.sol";
9
+ import {RiskSet} from "../instance/RiskSet.sol";
13
10
  import {IAccess} from "../authorization/IAccess.sol";
14
11
  import {Instance} from "../instance/Instance.sol";
15
12
  import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
16
13
  import {InstanceStore} from "../instance/InstanceStore.sol";
17
- import {ModuleAuthorization} from "../authorization/ModuleAuthorization.sol";
18
- import {RoleId} from "../type/RoleId.sol";
19
- import {VersionPart, VersionPartLib} from "../type/Version.sol";
14
+ import {Authorization} from "../authorization/Authorization.sol";
20
15
 
21
16
 
22
17
  contract InstanceAuthorizationV3
23
- is ModuleAuthorization
18
+ is Authorization
24
19
  {
25
20
 
21
+ string public constant INSTANCE_ROLE_NAME = "InstanceRole";
22
+
26
23
  string public constant INSTANCE_TARGET_NAME = "Instance";
27
24
  string public constant INSTANCE_STORE_TARGET_NAME = "InstanceStore";
28
25
  string public constant INSTANCE_ADMIN_TARGET_NAME = "InstanceAdmin";
29
26
  string public constant BUNDLE_SET_TARGET_NAME = "BundleSet";
27
+ string public constant RISK_SET_TARGET_NAME = "RiskSet";
30
28
 
31
- string public constant INSTANCE_ROLE_NAME = "InstanceRole";
32
- string public constant DISTRIBUTION_OWNER_ROLE_NAME = "DistributionOwnerRole";
33
- string public constant ORACLE_OWNER_ROLE_NAME = "OracleOwnerRole";
34
- string public constant POOL_OWNER_ROLE_NAME = "PoolOwnerRole";
35
- string public constant PRODUCT_OWNER_ROLE_NAME = "ProductOwnerRole";
36
-
37
- constructor() ModuleAuthorization(INSTANCE_TARGET_NAME) {}
29
+ constructor() Authorization(INSTANCE_TARGET_NAME) {}
38
30
 
39
31
 
40
32
  function _setupRoles()
41
33
  internal
42
34
  override
43
35
  {
44
- _addGifRole(DISTRIBUTION_OWNER_ROLE(), DISTRIBUTION_OWNER_ROLE_NAME);
45
- _addGifRole(ORACLE_OWNER_ROLE(), ORACLE_OWNER_ROLE_NAME);
46
- _addGifRole(POOL_OWNER_ROLE(), POOL_OWNER_ROLE_NAME);
47
- _addGifRole(PRODUCT_OWNER_ROLE(), PRODUCT_OWNER_ROLE_NAME);
36
+ // empty implementation
48
37
  }
49
38
 
50
39
 
@@ -55,13 +44,14 @@ contract InstanceAuthorizationV3
55
44
  // instance target
56
45
  _addTargetWithRole(
57
46
  INSTANCE_TARGET_NAME,
58
- _getTargetRoleId(INSTANCE()),
47
+ _toTargetRoleId(INSTANCE()),
59
48
  INSTANCE_ROLE_NAME);
60
49
 
61
50
  // instance supporting targets
62
51
  _addTarget(INSTANCE_STORE_TARGET_NAME);
63
52
  _addTarget(INSTANCE_ADMIN_TARGET_NAME);
64
53
  _addTarget(BUNDLE_SET_TARGET_NAME);
54
+ _addTarget(RISK_SET_TARGET_NAME);
65
55
 
66
56
  // service targets relevant to instance
67
57
  _addServiceTargetWithRole(INSTANCE());
@@ -70,7 +60,7 @@ contract InstanceAuthorizationV3
70
60
  _addServiceTargetWithRole(ORACLE());
71
61
  _addServiceTargetWithRole(POOL());
72
62
  _addServiceTargetWithRole(BUNDLE());
73
- _addServiceTargetWithRole(PRODUCT());
63
+ _addServiceTargetWithRole(RISK());
74
64
  _addServiceTargetWithRole(APPLICATION());
75
65
  _addServiceTargetWithRole(POLICY());
76
66
  _addServiceTargetWithRole(CLAIM());
@@ -85,6 +75,7 @@ contract InstanceAuthorizationV3
85
75
  _setupInstanceAdminAuthorization();
86
76
  _setupInstanceStoreAuthorization();
87
77
  _setupBundleSetAuthorization();
78
+ _setUpRiskSetAuthorization();
88
79
  }
89
80
 
90
81
 
@@ -95,11 +86,31 @@ contract InstanceAuthorizationV3
95
86
 
96
87
  // authorize bundle service role
97
88
  functions = _authorizeForTarget(BUNDLE_SET_TARGET_NAME, getServiceRole(BUNDLE()));
98
- _authorize(functions, BundleSet.linkPolicy.selector, "linkPolicy");
99
- _authorize(functions, BundleSet.unlinkPolicy.selector, "unlinkPolicy");
100
89
  _authorize(functions, BundleSet.add.selector, "add");
101
90
  _authorize(functions, BundleSet.lock.selector, "lock");
102
91
  _authorize(functions, BundleSet.unlock.selector, "unlock");
92
+
93
+ // authorize bundle service role
94
+ functions = _authorizeForTarget(BUNDLE_SET_TARGET_NAME, getServiceRole(POLICY()));
95
+ _authorize(functions, BundleSet.linkPolicy.selector, "linkPolicy");
96
+ _authorize(functions, BundleSet.unlinkPolicy.selector, "unlinkPolicy");
97
+ }
98
+
99
+ function _setUpRiskSetAuthorization()
100
+ internal
101
+ {
102
+ IAccess.FunctionInfo[] storage functions;
103
+
104
+ // authorize risk service role
105
+ functions = _authorizeForTarget(RISK_SET_TARGET_NAME, getServiceRole(RISK()));
106
+ _authorize(functions, RiskSet.add.selector, "add");
107
+ _authorize(functions, RiskSet.pause.selector, "pause");
108
+ _authorize(functions, RiskSet.activate.selector, "activate");
109
+
110
+ // authorize policy service role
111
+ functions = _authorizeForTarget(RISK_SET_TARGET_NAME, getServiceRole(POLICY()));
112
+ _authorize(functions, RiskSet.linkPolicy.selector, "linkPolicy");
113
+ _authorize(functions, RiskSet.unlinkPolicy.selector, "unlinkPolicy");
103
114
  }
104
115
 
105
116
 
@@ -120,7 +131,7 @@ contract InstanceAuthorizationV3
120
131
  IAccess.FunctionInfo[] storage functions;
121
132
 
122
133
  // authorize instance role
123
- functions = _authorizeForTarget(INSTANCE_ADMIN_TARGET_NAME, _getTargetRoleId(INSTANCE()));
134
+ functions = _authorizeForTarget(INSTANCE_ADMIN_TARGET_NAME, _toTargetRoleId(INSTANCE()));
124
135
  _authorize(functions, InstanceAdmin.grantRole.selector, "grantRole");
125
136
 
126
137
  // authorize instance service role
@@ -176,7 +187,7 @@ contract InstanceAuthorizationV3
176
187
  _authorize(functions, InstanceStore.decreaseLocked.selector, "decreaseLocked");
177
188
 
178
189
  // authorize product service role
179
- functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(PRODUCT()));
190
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(RISK()));
180
191
  _authorize(functions, InstanceStore.createRisk.selector, "createRisk");
181
192
  _authorize(functions, InstanceStore.updateRisk.selector, "updateRisk");
182
193
  _authorize(functions, InstanceStore.updateRiskState.selector, "updateRiskState");
@@ -191,6 +202,8 @@ contract InstanceAuthorizationV3
191
202
  functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(POLICY()));
192
203
  _authorize(functions, InstanceStore.updatePolicy.selector, "updatePolicy");
193
204
  _authorize(functions, InstanceStore.updatePolicyState.selector, "updatePolicyState");
205
+ _authorize(functions, InstanceStore.createPremium.selector, "createPremium");
206
+ _authorize(functions, InstanceStore.updatePremiumState.selector, "updatePremiumState");
194
207
 
195
208
  // authorize claim service role
196
209
  functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(CLAIM()));
@@ -2,12 +2,12 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount} from "../type/Amount.sol";
5
- import {ClaimId} from "../type/ClaimId.sol";
5
+ import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
6
6
  import {DistributorType} from "../type/DistributorType.sol";
7
7
  import {Key32} from "../type/Key32.sol";
8
8
  import {NftId} from "../type/NftId.sol";
9
- import {COMPONENT, DISTRIBUTOR, DISTRIBUTION, PRODUCT, POLICY, POOL, BUNDLE} from "../type/ObjectType.sol";
10
- import {PayoutId} from "../type/PayoutId.sol";
9
+ import {COMPONENT, DISTRIBUTOR, DISTRIBUTION, PREMIUM, PRODUCT, POLICY, POOL, BUNDLE} from "../type/ObjectType.sol";
10
+ import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
11
11
  import {ReferralId, ReferralStatus, ReferralLib, REFERRAL_OK, REFERRAL_ERROR_UNKNOWN, REFERRAL_ERROR_EXPIRED, REFERRAL_ERROR_EXHAUSTED} from "../type/Referral.sol";
12
12
  import {RequestId} from "../type/RequestId.sol";
13
13
  import {RiskId} from "../type/RiskId.sol";
@@ -26,6 +26,8 @@ import {IRisk} from "../instance/module/IRisk.sol";
26
26
  import {TimestampLib} from "../type/Timestamp.sol";
27
27
 
28
28
  import {InstanceStore} from "./InstanceStore.sol";
29
+ import {BundleSet} from "./BundleSet.sol";
30
+ import {RiskSet} from "./RiskSet.sol";
29
31
 
30
32
 
31
33
  contract InstanceReader {
@@ -37,6 +39,8 @@ contract InstanceReader {
37
39
 
38
40
  IInstance internal _instance;
39
41
  InstanceStore internal _store;
42
+ BundleSet internal _bundleSet;
43
+ RiskSet internal _riskSet;
40
44
 
41
45
  /// @dev This initializer needs to be called from the instance itself.
42
46
  function initialize() public {
@@ -48,7 +52,9 @@ contract InstanceReader {
48
52
  }
49
53
 
50
54
  /// @dev This initializer needs to be called from the instance itself.
51
- function initializeWithInstance(address instanceAddress) public {
55
+ function initializeWithInstance(address instanceAddress)
56
+ public
57
+ {
52
58
  if(_initialized) {
53
59
  revert ErrorInstanceReaderAlreadyInitialized();
54
60
  }
@@ -56,6 +62,8 @@ contract InstanceReader {
56
62
  _initialized = true;
57
63
  _instance = IInstance(instanceAddress);
58
64
  _store = _instance.getInstanceStore();
65
+ _bundleSet = _instance.getBundleSet();
66
+ _riskSet = _instance.getRiskSet();
59
67
  }
60
68
 
61
69
 
@@ -80,6 +88,57 @@ contract InstanceReader {
80
88
  return _store.getState(toPolicyKey(policyNftId));
81
89
  }
82
90
 
91
+ function getPremiumInfo(NftId policyNftId)
92
+ public
93
+ view
94
+ returns (IPolicy.PremiumInfo memory info)
95
+ {
96
+ bytes memory data = _store.getData(toPremiumKey(policyNftId));
97
+ if (data.length > 0) {
98
+ return abi.decode(data, (IPolicy.PremiumInfo));
99
+ }
100
+ }
101
+
102
+ function getPremiumInfoState(NftId policyNftId)
103
+ public
104
+ view
105
+ returns (StateId state)
106
+ {
107
+ return _store.getState(toPremiumKey(policyNftId));
108
+ }
109
+
110
+ function bundles(NftId poolNftId)
111
+ public
112
+ view
113
+ returns (uint256 bundles)
114
+ {
115
+ return _bundleSet.bundles(poolNftId);
116
+ }
117
+
118
+ function activeBundles(NftId poolNftId)
119
+ public
120
+ view
121
+ returns (uint256 bundles)
122
+ {
123
+ return _bundleSet.activeBundles(poolNftId);
124
+ }
125
+
126
+ function getActiveBundleNftId(NftId poolNftId, uint256 idx)
127
+ public
128
+ view
129
+ returns (NftId bundleNftId)
130
+ {
131
+ return _bundleSet.getActiveBundleNftId(poolNftId, idx);
132
+ }
133
+
134
+ function getBundleNftId(NftId poolNftId, uint256 idx)
135
+ public
136
+ view
137
+ returns (NftId bundleNftId)
138
+ {
139
+ return _bundleSet.getBundleNftId(poolNftId, idx);
140
+ }
141
+
83
142
  function getBundleState(NftId bundleNftId)
84
143
  public
85
144
  view
@@ -88,14 +147,8 @@ contract InstanceReader {
88
147
  return _store.getState(toBundleKey(bundleNftId));
89
148
  }
90
149
 
91
- /// @dev returns true iff policy may be closed
92
- /// a policy can be closed all conditions below are met
93
- /// - policy exists
94
- /// - has been activated
95
- /// - is not yet closed
96
- /// - has no open claims
97
- /// - claim amount matches sum insured amount or is expired
98
- function policyIsCloseable(NftId policyNftId)
150
+ /// @dev Returns true iff policy is active.
151
+ function policyIsActive(NftId policyNftId)
99
152
  public
100
153
  view
101
154
  returns (bool isCloseable)
@@ -104,17 +157,27 @@ contract InstanceReader {
104
157
 
105
158
  if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
106
159
  if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
107
- if (info.closedAt.gtz()) { return false; } // not closeable: already closed
108
- if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
160
+ if (info.activatedAt > TimestampLib.blockTimestamp()) { return false; } // not yet active
161
+ if (info.expiredAt <= TimestampLib.blockTimestamp()) { return false; } // already expired
109
162
 
110
- // closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
111
- if (info.claimAmount == info.sumInsuredAmount) { return true; }
163
+ return true;
164
+ }
165
+
166
+ function claims(NftId policyNftId)
167
+ public
168
+ view
169
+ returns (uint16 claims)
170
+ {
171
+ return getPolicyInfo(policyNftId).claimsCount;
172
+ }
112
173
 
113
- // not closeable: not yet expired
114
- if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
115
174
 
116
- // all conditionsl to close the policy are met
117
- return true;
175
+ function getClaimId(uint idx)
176
+ public
177
+ view
178
+ returns (ClaimId claimId)
179
+ {
180
+ return ClaimIdLib.toClaimId(idx + 1);
118
181
  }
119
182
 
120
183
  function getClaimInfo(NftId policyNftId, ClaimId claimId)
@@ -128,6 +191,7 @@ contract InstanceReader {
128
191
  }
129
192
  }
130
193
 
194
+
131
195
  function getClaimState(NftId policyNftId, ClaimId claimId)
132
196
  public
133
197
  view
@@ -136,6 +200,34 @@ contract InstanceReader {
136
200
  return _store.getState(claimId.toKey32(policyNftId));
137
201
  }
138
202
 
203
+
204
+ function payouts(NftId policyNftId, ClaimId claimId)
205
+ public
206
+ view
207
+ returns (uint24 payouts)
208
+ {
209
+ return getClaimInfo(policyNftId, claimId).payoutsCount;
210
+ }
211
+
212
+
213
+ function getPayoutId(ClaimId claimId, uint24 idx)
214
+ public
215
+ view
216
+ returns (PayoutId payoutId)
217
+ {
218
+ return PayoutIdLib.toPayoutId(claimId, idx + 1);
219
+ }
220
+
221
+
222
+ function getRemainingClaimableAmount(NftId policyNftId)
223
+ public
224
+ view
225
+ returns (Amount remainingClaimableAmount)
226
+ {
227
+ IPolicy.PolicyInfo memory info = getPolicyInfo(policyNftId);
228
+ return info.sumInsuredAmount - info.claimAmount;
229
+ }
230
+
139
231
  function getPayoutInfo(NftId policyNftId, PayoutId payoutId)
140
232
  public
141
233
  view
@@ -155,6 +247,38 @@ contract InstanceReader {
155
247
  return _store.getState(payoutId.toKey32(policyNftId));
156
248
  }
157
249
 
250
+ function risks(NftId productNftId)
251
+ public
252
+ view
253
+ returns (uint256 activeRisks)
254
+ {
255
+ return _riskSet.risks(productNftId);
256
+ }
257
+
258
+ function getRiskId(NftId productNftId, uint256 idx)
259
+ public
260
+ view
261
+ returns (RiskId riskId)
262
+ {
263
+ return _riskSet.getRiskId(productNftId, idx);
264
+ }
265
+
266
+ function activeRisks(NftId productNftId)
267
+ public
268
+ view
269
+ returns (uint256 activeRisks)
270
+ {
271
+ return _riskSet.activeRisks(productNftId);
272
+ }
273
+
274
+ function getActiveRiskId(NftId productNftId, uint256 idx)
275
+ public
276
+ view
277
+ returns (RiskId riskId)
278
+ {
279
+ return _riskSet.getActiveRiskId(productNftId, idx);
280
+ }
281
+
158
282
  function getRiskInfo(RiskId riskId)
159
283
  public
160
284
  view
@@ -166,6 +290,44 @@ contract InstanceReader {
166
290
  }
167
291
  }
168
292
 
293
+ function getRiskState(RiskId riskId)
294
+ public
295
+ view
296
+ returns (StateId stateId)
297
+ {
298
+ bytes memory data = _store.getData(riskId.toKey32());
299
+ return _store.getState(riskId.toKey32());
300
+ }
301
+
302
+ function policiesForRisk(RiskId riskId)
303
+ public
304
+ view
305
+ returns (uint256 linkedPolicies)
306
+ {
307
+ return _riskSet.linkedPolicies(riskId);
308
+ }
309
+
310
+ function getPolicyNftIdForRisk(RiskId riskId, uint256 idx)
311
+ public
312
+ view
313
+ returns (NftId linkedPolicyNftId)
314
+ {
315
+ return _riskSet.getLinkedPolicyNftId(riskId, idx);
316
+ }
317
+
318
+ function getWallet(NftId componentNftId)
319
+ public
320
+ view
321
+ returns (address tokenHandler)
322
+ {
323
+ bytes memory data = _store.getData(toComponentKey(componentNftId));
324
+
325
+ if (data.length > 0) {
326
+ IComponents.ComponentInfo memory info = abi.decode(data, (IComponents.ComponentInfo));
327
+ return info.tokenHandler.getWallet();
328
+ }
329
+ }
330
+
169
331
  function getTokenHandler(NftId componentNftId)
170
332
  public
171
333
  view
@@ -364,6 +526,9 @@ contract InstanceReader {
364
526
  return policyNftId.toKey32(POLICY());
365
527
  }
366
528
 
529
+ function toPremiumKey(NftId policyNftId) public pure returns (Key32) {
530
+ return policyNftId.toKey32(PREMIUM());
531
+ }
367
532
 
368
533
  function toDistributorKey(NftId distributorNftId) public pure returns (Key32) {
369
534
  return distributorNftId.toKey32(DISTRIBUTOR());
@@ -398,6 +563,14 @@ contract InstanceReader {
398
563
  return _store;
399
564
  }
400
565
 
566
+ function getBundleSet() external view returns (BundleSet bundleSet) {
567
+ return _bundleSet;
568
+ }
569
+
570
+ function getRiskSet() external view returns (RiskSet riskSet) {
571
+ return _riskSet;
572
+ }
573
+
401
574
  function toUFixed(uint256 value, int8 exp) public pure returns (UFixed) {
402
575
  return UFixedLib.toUFixed(value, exp);
403
576
  }