@etherisc/gif-next 0.0.2-adb0ad8-584 → 0.0.2-ae6744f-037

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 (375) hide show
  1. package/README.md +27 -6
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
  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 +2 -2
  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/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  16. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +53 -163
  18. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  20. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +6 -68
  22. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +121 -82
  24. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +72 -48
  26. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +6 -50
  28. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +23 -0
  30. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  31. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  32. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +51 -148
  33. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  34. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +49 -17
  35. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  36. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +106 -192
  37. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  38. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +17 -17
  39. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  40. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  41. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +79 -121
  42. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  45. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +31 -117
  46. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  47. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +168 -155
  48. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  51. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +403 -205
  52. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -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 +64 -18
  58. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +24 -17
  60. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  61. package/artifacts/contracts/instance/Instance.sol/Instance.json +96 -29
  62. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +103 -72
  64. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  65. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +40 -27
  66. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +303 -75
  68. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +71 -48
  70. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +46 -22
  72. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +59 -69
  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 +2 -2
  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 +20 -130
  94. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  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 +6 -50
  99. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +6 -68
  102. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +84 -60
  104. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +66 -22
  106. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  107. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +6 -83
  108. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  109. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +49 -17
  110. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  111. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +101 -206
  112. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +58 -70
  114. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  115. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +19 -57
  116. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  117. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +6 -89
  118. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  119. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +77 -75
  120. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  121. package/artifacts/contracts/pool/Pool.sol/Pool.json +6 -107
  122. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  123. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +154 -160
  124. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  125. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +61 -33
  126. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  127. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +58 -23
  128. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +42 -22
  130. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  131. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +11 -68
  132. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  133. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  134. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  135. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +74 -66
  136. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  137. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +67 -47
  138. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  139. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -7
  140. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  141. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  142. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +38 -19
  143. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  144. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  145. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +11 -50
  146. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  147. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  148. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +132 -121
  149. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +70 -42
  151. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  152. package/artifacts/contracts/product/PricingService.sol/PricingService.json +50 -34
  153. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +56 -32
  155. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  156. package/artifacts/contracts/product/Product.sol/Product.json +11 -68
  157. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  158. package/artifacts/contracts/product/RiskService.sol/RiskService.json +34 -18
  159. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  160. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +40 -16
  161. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  162. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  163. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  164. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +24 -0
  165. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  166. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  167. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  168. package/artifacts/contracts/registry/Registry.sol/Registry.json +62 -38
  169. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  170. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +107 -94
  171. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  172. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +32 -16
  173. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +39 -15
  175. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  176. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  177. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  178. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +12 -12
  179. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  180. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  181. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  182. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  183. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  184. package/artifacts/contracts/shared/Component.sol/Component.json +6 -54
  185. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  186. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +256 -116
  187. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  188. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +78 -42
  189. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  190. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  191. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +402 -6
  192. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  193. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  194. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  195. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  196. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +6 -36
  198. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +146 -14
  200. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +6 -50
  202. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  203. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  204. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  205. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  206. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  207. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  208. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  209. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  210. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  211. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +6 -68
  212. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  214. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  215. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  216. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  217. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  218. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  219. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  220. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  221. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  222. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  223. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  224. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  226. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
  227. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  228. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  229. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  230. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  231. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  232. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +24 -72
  233. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  234. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  235. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +3 -3
  236. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  237. package/artifacts/contracts/staking/Staking.sol/Staking.json +80 -152
  238. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  239. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  240. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  241. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +50 -46
  242. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  243. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  244. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  245. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +36 -20
  246. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  247. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +43 -19
  248. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  249. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +13 -13
  250. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  251. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +3 -3
  252. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  253. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  255. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  258. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  260. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  262. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  263. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  264. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  265. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  266. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  268. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  269. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  270. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  272. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  274. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  276. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  278. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +43 -5
  280. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  282. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  290. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  292. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  293. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  294. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
  295. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  296. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  297. package/contracts/authorization/AccessAdmin.sol +21 -2
  298. package/contracts/authorization/ReleaseAccessManager.sol +1 -1
  299. package/contracts/distribution/BasicDistribution.sol +6 -6
  300. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  301. package/contracts/distribution/Distribution.sol +32 -30
  302. package/contracts/distribution/DistributionService.sol +18 -19
  303. package/contracts/distribution/IDistributionService.sol +5 -6
  304. package/contracts/examples/fire/FirePool.sol +25 -10
  305. package/contracts/examples/fire/FirePoolAuthorization.sol +1 -0
  306. package/contracts/examples/fire/FireProduct.sol +29 -11
  307. package/contracts/examples/fire/FireProductAuthorization.sol +1 -0
  308. package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
  309. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  310. package/contracts/examples/unpermissioned/SimplePool.sol +33 -2
  311. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  312. package/contracts/examples/unpermissioned/SimpleProduct.sol +22 -21
  313. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  314. package/contracts/instance/BundleSet.sol +38 -34
  315. package/contracts/instance/IInstance.sol +7 -2
  316. package/contracts/instance/IInstanceService.sol +7 -9
  317. package/contracts/instance/Instance.sol +16 -9
  318. package/contracts/instance/InstanceAdmin.sol +41 -30
  319. package/contracts/instance/InstanceAuthorizationV3.sol +33 -9
  320. package/contracts/instance/InstanceReader.sol +89 -3
  321. package/contracts/instance/InstanceService.sol +39 -58
  322. package/contracts/instance/RiskSet.sol +119 -0
  323. package/contracts/instance/base/ObjectCounter.sol +1 -2
  324. package/contracts/instance/base/ObjectSet.sol +24 -25
  325. package/contracts/instance/module/IComponents.sol +1 -2
  326. package/contracts/instance/module/IPolicy.sol +2 -1
  327. package/contracts/instance/module/IRisk.sol +1 -0
  328. package/contracts/oracle/OracleService.sol +87 -69
  329. package/contracts/pool/BasicPool.sol +24 -3
  330. package/contracts/pool/BasicPoolAuthorization.sol +12 -1
  331. package/contracts/pool/BundleService.sol +14 -84
  332. package/contracts/pool/IBundleService.sol +2 -23
  333. package/contracts/pool/IPoolComponent.sol +1 -7
  334. package/contracts/pool/IPoolService.sol +12 -26
  335. package/contracts/pool/Pool.sol +112 -102
  336. package/contracts/pool/PoolService.sol +156 -88
  337. package/contracts/product/ApplicationService.sol +12 -12
  338. package/contracts/product/BasicProduct.sol +7 -11
  339. package/contracts/product/BasicProductAuthorization.sol +1 -2
  340. package/contracts/product/ClaimService.sol +3 -1
  341. package/contracts/product/IApplicationService.sol +5 -2
  342. package/contracts/product/IPolicyService.sol +17 -7
  343. package/contracts/product/PolicyService.sol +237 -195
  344. package/contracts/product/Product.sol +12 -40
  345. package/contracts/product/RiskService.sol +14 -3
  346. package/contracts/registry/ChainNft.sol +4 -2
  347. package/contracts/registry/IRegistry.sol +2 -0
  348. package/contracts/registry/Registry.sol +9 -1
  349. package/contracts/registry/RegistryAdmin.sol +22 -13
  350. package/contracts/registry/ReleaseRegistry.sol +5 -20
  351. package/contracts/registry/ServiceAuthorizationV3.sol +13 -31
  352. package/contracts/shared/Component.sol +44 -90
  353. package/contracts/shared/ComponentService.sol +160 -36
  354. package/contracts/shared/ComponentVerifyingService.sol +15 -13
  355. package/contracts/shared/ContractLib.sol +196 -10
  356. package/contracts/shared/IComponent.sol +1 -13
  357. package/contracts/shared/IComponentService.sol +19 -5
  358. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  359. package/contracts/shared/InstanceLinkedComponent.sol +2 -18
  360. package/contracts/shared/Registerable.sol +0 -2
  361. package/contracts/shared/RegistryLinked.sol +6 -12
  362. package/contracts/shared/TokenHandler.sol +316 -66
  363. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  364. package/contracts/staking/IStaking.sol +9 -4
  365. package/contracts/staking/Staking.sol +39 -21
  366. package/contracts/staking/StakingService.sol +41 -8
  367. package/contracts/type/Key32.sol +2 -2
  368. package/contracts/type/Key32Set.sol +62 -0
  369. package/contracts/type/NftId.sol +6 -0
  370. package/contracts/type/ObjectType.sol +2 -0
  371. package/contracts/type/RiskId.sol +18 -6
  372. package/contracts/type/UFixed.sol +9 -119
  373. package/package.json +3 -3
  374. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  375. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
@@ -2,10 +2,11 @@
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 {BundleSet} from "../instance/BundleSet.sol";
8
+ import {BundleSet} from "../instance/BundleSet.sol";
9
+ import {RiskSet} from "../instance/RiskSet.sol";
9
10
  import {IAccess} from "../authorization/IAccess.sol";
10
11
  import {Instance} from "../instance/Instance.sol";
11
12
  import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
@@ -23,6 +24,7 @@ contract InstanceAuthorizationV3
23
24
  string public constant INSTANCE_STORE_TARGET_NAME = "InstanceStore";
24
25
  string public constant INSTANCE_ADMIN_TARGET_NAME = "InstanceAdmin";
25
26
  string public constant BUNDLE_SET_TARGET_NAME = "BundleSet";
27
+ string public constant RISK_SET_TARGET_NAME = "RiskSet";
26
28
 
27
29
  constructor() Authorization(INSTANCE_TARGET_NAME) {}
28
30
 
@@ -49,6 +51,7 @@ contract InstanceAuthorizationV3
49
51
  _addTarget(INSTANCE_STORE_TARGET_NAME);
50
52
  _addTarget(INSTANCE_ADMIN_TARGET_NAME);
51
53
  _addTarget(BUNDLE_SET_TARGET_NAME);
54
+ _addTarget(RISK_SET_TARGET_NAME);
52
55
 
53
56
  // service targets relevant to instance
54
57
  _addServiceTargetWithRole(INSTANCE());
@@ -57,7 +60,7 @@ contract InstanceAuthorizationV3
57
60
  _addServiceTargetWithRole(ORACLE());
58
61
  _addServiceTargetWithRole(POOL());
59
62
  _addServiceTargetWithRole(BUNDLE());
60
- _addServiceTargetWithRole(PRODUCT());
63
+ _addServiceTargetWithRole(RISK());
61
64
  _addServiceTargetWithRole(APPLICATION());
62
65
  _addServiceTargetWithRole(POLICY());
63
66
  _addServiceTargetWithRole(CLAIM());
@@ -72,7 +75,7 @@ contract InstanceAuthorizationV3
72
75
  _setupInstanceAdminAuthorization();
73
76
  _setupInstanceStoreAuthorization();
74
77
  _setupBundleSetAuthorization();
75
-
78
+ _setUpRiskSetAuthorization();
76
79
  }
77
80
 
78
81
 
@@ -83,11 +86,31 @@ contract InstanceAuthorizationV3
83
86
 
84
87
  // authorize bundle service role
85
88
  functions = _authorizeForTarget(BUNDLE_SET_TARGET_NAME, getServiceRole(BUNDLE()));
86
- _authorize(functions, BundleSet.linkPolicy.selector, "linkPolicy");
87
- _authorize(functions, BundleSet.unlinkPolicy.selector, "unlinkPolicy");
88
89
  _authorize(functions, BundleSet.add.selector, "add");
89
90
  _authorize(functions, BundleSet.lock.selector, "lock");
90
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");
91
114
  }
92
115
 
93
116
 
@@ -111,8 +134,9 @@ contract InstanceAuthorizationV3
111
134
  functions = _authorizeForTarget(INSTANCE_ADMIN_TARGET_NAME, _toTargetRoleId(INSTANCE()));
112
135
  _authorize(functions, InstanceAdmin.grantRole.selector, "grantRole");
113
136
 
114
- // authorize instance service role
115
- // functions = _authorizeForTarget(INSTANCE_ADMIN_TARGET_NAME, getServiceRole(INSTANCE()));
137
+ // authorize component service role
138
+ functions = _authorizeForTarget(INSTANCE_ADMIN_TARGET_NAME, getServiceRole(COMPONENT()));
139
+ _authorize(functions, InstanceAdmin.setTargetLocked.selector, "setTargetLocked");
116
140
  }
117
141
 
118
142
 
@@ -164,7 +188,7 @@ contract InstanceAuthorizationV3
164
188
  _authorize(functions, InstanceStore.decreaseLocked.selector, "decreaseLocked");
165
189
 
166
190
  // authorize product service role
167
- functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(PRODUCT()));
191
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(RISK()));
168
192
  _authorize(functions, InstanceStore.createRisk.selector, "createRisk");
169
193
  _authorize(functions, InstanceStore.updateRisk.selector, "updateRisk");
170
194
  _authorize(functions, InstanceStore.updateRiskState.selector, "updateRiskState");
@@ -27,6 +27,7 @@ import {TimestampLib} from "../type/Timestamp.sol";
27
27
 
28
28
  import {InstanceStore} from "./InstanceStore.sol";
29
29
  import {BundleSet} from "./BundleSet.sol";
30
+ import {RiskSet} from "./RiskSet.sol";
30
31
 
31
32
 
32
33
  contract InstanceReader {
@@ -39,6 +40,7 @@ contract InstanceReader {
39
40
  IInstance internal _instance;
40
41
  InstanceStore internal _store;
41
42
  BundleSet internal _bundleSet;
43
+ RiskSet internal _riskSet;
42
44
 
43
45
  /// @dev This initializer needs to be called from the instance itself.
44
46
  function initialize() public {
@@ -50,7 +52,9 @@ contract InstanceReader {
50
52
  }
51
53
 
52
54
  /// @dev This initializer needs to be called from the instance itself.
53
- function initializeWithInstance(address instanceAddress) public {
55
+ function initializeWithInstance(address instanceAddress)
56
+ public
57
+ {
54
58
  if(_initialized) {
55
59
  revert ErrorInstanceReaderAlreadyInitialized();
56
60
  }
@@ -59,6 +63,7 @@ contract InstanceReader {
59
63
  _instance = IInstance(instanceAddress);
60
64
  _store = _instance.getInstanceStore();
61
65
  _bundleSet = _instance.getBundleSet();
66
+ _riskSet = _instance.getRiskSet();
62
67
  }
63
68
 
64
69
 
@@ -102,6 +107,14 @@ contract InstanceReader {
102
107
  return _store.getState(toPremiumKey(policyNftId));
103
108
  }
104
109
 
110
+ function bundles(NftId poolNftId)
111
+ public
112
+ view
113
+ returns (uint256 bundles)
114
+ {
115
+ return _bundleSet.bundles(poolNftId);
116
+ }
117
+
105
118
  function activeBundles(NftId poolNftId)
106
119
  public
107
120
  view
@@ -118,6 +131,14 @@ contract InstanceReader {
118
131
  return _bundleSet.getActiveBundleNftId(poolNftId, idx);
119
132
  }
120
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
+
121
142
  function getBundleState(NftId bundleNftId)
122
143
  public
123
144
  view
@@ -226,6 +247,38 @@ contract InstanceReader {
226
247
  return _store.getState(payoutId.toKey32(policyNftId));
227
248
  }
228
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
+
229
282
  function getRiskInfo(RiskId riskId)
230
283
  public
231
284
  view
@@ -237,6 +290,31 @@ contract InstanceReader {
237
290
  }
238
291
  }
239
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
+
240
318
  function getWallet(NftId componentNftId)
241
319
  public
242
320
  view
@@ -246,7 +324,7 @@ contract InstanceReader {
246
324
 
247
325
  if (data.length > 0) {
248
326
  IComponents.ComponentInfo memory info = abi.decode(data, (IComponents.ComponentInfo));
249
- return info.wallet;
327
+ return info.tokenHandler.getWallet();
250
328
  }
251
329
  }
252
330
 
@@ -440,7 +518,7 @@ contract InstanceReader {
440
518
  }
441
519
 
442
520
 
443
- function isTargetLocked(address target) public view returns (bool) {
521
+ function isLocked(address target) public view returns (bool) {
444
522
  return _instance.getInstanceAdmin().isTargetLocked(target);
445
523
  }
446
524
 
@@ -485,6 +563,14 @@ contract InstanceReader {
485
563
  return _store;
486
564
  }
487
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
+
488
574
  function toUFixed(uint256 value, int8 exp) public pure returns (UFixed) {
489
575
  return UFixedLib.toUFixed(value, exp);
490
576
  }
@@ -2,32 +2,25 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
- import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
5
 
7
6
  import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
8
7
  import {Amount} from "../type/Amount.sol";
9
8
  import {BundleSet} from "./BundleSet.sol";
9
+ import {RiskSet} from "./RiskSet.sol";
10
10
  import {ChainNft} from "../registry/ChainNft.sol";
11
11
  import {NftId} from "../type/NftId.sol";
12
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";
13
+ import {UFixed} from "../type/UFixed.sol";
14
+ import {ObjectType, INSTANCE, COMPONENT, INSTANCE, REGISTRY, STAKING} from "../type/ObjectType.sol";
17
15
 
18
16
  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
17
 
26
18
  import {IRegistry} from "../registry/IRegistry.sol";
27
19
  import {IRegistryService} from "../registry/IRegistryService.sol";
28
20
  import {IStakingService} from "../staking/IStakingService.sol";
29
21
  import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
30
22
 
23
+ import {IComponentService} from "../shared/IComponentService.sol";
31
24
  import {Instance} from "./Instance.sol";
32
25
  import {IInstance} from "./IInstance.sol";
33
26
  import {InstanceAdmin} from "./InstanceAdmin.sol";
@@ -35,7 +28,7 @@ import {IInstanceService} from "./IInstanceService.sol";
35
28
  import {InstanceReader} from "./InstanceReader.sol";
36
29
  import {InstanceStore} from "./InstanceStore.sol";
37
30
  import {Seconds} from "../type/Seconds.sol";
38
- import {VersionPart, VersionPartLib} from "../type/Version.sol";
31
+ import {VersionPart} from "../type/Version.sol";
39
32
 
40
33
 
41
34
  contract InstanceService is
@@ -48,12 +41,14 @@ contract InstanceService is
48
41
 
49
42
  IRegistryService internal _registryService;
50
43
  IStakingService internal _stakingService;
44
+ IComponentService internal _componentService;
51
45
 
52
46
  address internal _masterAccessManager;
53
47
  address internal _masterInstanceAdmin;
54
48
  address internal _masterInstance;
55
49
  address internal _masterInstanceReader;
56
50
  address internal _masterInstanceBundleSet;
51
+ address internal _masterInstanceRiskSet;
57
52
  address internal _masterInstanceStore;
58
53
 
59
54
 
@@ -96,8 +91,8 @@ contract InstanceService is
96
91
  function createInstance()
97
92
  external
98
93
  returns (
99
- Instance clonedInstance,
100
- NftId clonedInstanceNftId
94
+ IInstance instance,
95
+ NftId instanceNftId
101
96
  )
102
97
  {
103
98
  // tx sender will become instance owner
@@ -105,24 +100,24 @@ contract InstanceService is
105
100
 
106
101
  // create instance admin and instance
107
102
  InstanceAdmin instanceAdmin = _createInstanceAdmin();
108
- clonedInstance = _createInstance(instanceAdmin, instanceOwner);
103
+ instance = _createInstance(instanceAdmin, instanceOwner);
109
104
 
110
105
  // register cloned instance with registry
111
- clonedInstanceNftId = _registryService.registerInstance(
112
- clonedInstance, instanceOwner).nftId;
106
+ instanceNftId = _registryService.registerInstance(
107
+ instance, instanceOwner).nftId;
113
108
 
114
109
  // register cloned instance as staking target
115
110
  _stakingService.createInstanceTarget(
116
- clonedInstanceNftId,
111
+ instanceNftId,
117
112
  TargetManagerLib.getDefaultLockingPeriod(),
118
113
  TargetManagerLib.getDefaultRewardRate());
119
114
 
120
115
  // MUST be set after instance is set up and registered
121
- instanceAdmin.initializeInstanceAuthorization(address(clonedInstance));
116
+ instanceAdmin.initializeInstanceAuthorization(address(instance));
122
117
 
123
118
  emit LogInstanceCloned(
124
- clonedInstanceNftId,
125
- address(clonedInstance));
119
+ instanceNftId,
120
+ address(instance));
126
121
  }
127
122
 
128
123
 
@@ -175,33 +170,6 @@ contract InstanceService is
175
170
  dipAmount);
176
171
  }
177
172
 
178
-
179
- function setComponentLocked(bool locked)
180
- external
181
- virtual
182
- onlyComponent()
183
- {
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));
196
-
197
- // no revert in case already locked
198
- // TODO refactor/implement
199
- // instance.getInstanceAdmin().setTargetLockedByService(
200
- // componentAddress,
201
- // locked);
202
- }
203
-
204
-
205
173
  function getMasterInstanceReader() external view returns (address) {
206
174
  return _masterInstanceReader;
207
175
  }
@@ -214,7 +182,7 @@ contract InstanceService is
214
182
  if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
215
183
  if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
216
184
  if(_masterInstanceBundleSet != address(0)) { revert ErrorInstanceServiceMasterBundleSetAlreadySet(); }
217
-
185
+ if(_masterInstanceRiskSet != address(0)) { revert ErrorInstanceServiceMasterRiskSetAlreadySet(); }
218
186
  if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
219
187
 
220
188
  IInstance instance = IInstance(instanceAddress);
@@ -223,28 +191,34 @@ contract InstanceService is
223
191
  address instanceAdminAddress = address(instanceAdmin);
224
192
  InstanceReader instanceReader = instance.getInstanceReader();
225
193
  address instanceReaderAddress = address(instanceReader);
226
- BundleSet bundleManager = instance.getBundleSet();
227
- address bundleManagerAddress = address(bundleManager);
194
+ BundleSet bundleSet = instance.getBundleSet();
195
+ address bundleSetAddress = address(bundleSet);
196
+ RiskSet riskSet = instance.getRiskSet();
197
+ address riskSetAddress = address(riskSet);
228
198
  InstanceStore instanceStore = instance.getInstanceStore();
229
199
  address instanceStoreAddress = address(instanceStore);
230
200
 
231
201
  if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
232
202
  if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
233
203
  if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
234
- if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
204
+ if(bundleSetAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
205
+ if(riskSetAddress == address(0)) { revert ErrorInstanceServiceRiskSetZero(); }
235
206
  if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
236
207
 
237
208
  if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
238
- if(bundleManager.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
209
+ if(bundleSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
210
+ if(riskSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceRiskSetAuthorityMismatch(); }
239
211
  if(instanceStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
240
- if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
212
+ if(bundleSet.getInstance() != instance) { revert ErrorInstanceServiceBundleSetInstanceMismatch(); }
213
+ if(riskSet.getInstance() != instance) { revert ErrorInstanceServiceRiskSetInstanceMismatch(); }
241
214
  if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
242
215
 
243
216
  _masterAccessManager = accessManagerAddress;
244
217
  _masterInstanceAdmin = instanceAdminAddress;
245
218
  _masterInstance = instanceAddress;
246
219
  _masterInstanceReader = instanceReaderAddress;
247
- _masterInstanceBundleSet = bundleManagerAddress;
220
+ _masterInstanceBundleSet = bundleSetAddress;
221
+ _masterInstanceRiskSet = riskSetAddress;
248
222
  _masterInstanceStore = instanceStoreAddress;
249
223
 
250
224
  IInstance masterInstance = IInstance(_masterInstance);
@@ -265,6 +239,7 @@ contract InstanceService is
265
239
 
266
240
  function upgradeInstanceReader(NftId instanceNftId)
267
241
  external
242
+ nonReentrant()
268
243
  onlyInstanceOwner(instanceNftId)
269
244
  onlyNftOfType(instanceNftId, INSTANCE())
270
245
  {
@@ -293,9 +268,11 @@ contract InstanceService is
293
268
  clonedAccessManager.initialize(
294
269
  address(clonedInstanceAdmin)); // grant ADMIN_ROLE to instance admin
295
270
 
271
+ address authorization = address(
272
+ InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
296
273
  clonedInstanceAdmin.initialize(
297
274
  clonedAccessManager,
298
- InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
275
+ authorization);
299
276
  }
300
277
 
301
278
 
@@ -307,21 +284,24 @@ contract InstanceService is
307
284
  )
308
285
  internal
309
286
  virtual
310
- returns (Instance clonedInstance)
287
+ returns (IInstance)
311
288
  {
312
289
  InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
313
290
  BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
291
+ RiskSet clonedRiskSet = RiskSet(Clones.clone(_masterInstanceRiskSet));
314
292
  InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
315
293
 
316
294
  // clone instance
317
- clonedInstance = Instance(Clones.clone(_masterInstance));
295
+ Instance clonedInstance = Instance(Clones.clone(_masterInstance));
318
296
  clonedInstance.initialize(
319
297
  instanceAdmin,
320
298
  clonedInstanceStore,
321
299
  clonedBundleSet,
300
+ clonedRiskSet,
322
301
  clonedInstanceReader,
323
302
  getRegistry(),
324
303
  instanceOwner);
304
+ return clonedInstance;
325
305
  }
326
306
 
327
307
 
@@ -372,6 +352,7 @@ contract InstanceService is
372
352
 
373
353
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
374
354
  _stakingService = IStakingService(_getServiceAddress(STAKING()));
355
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
375
356
 
376
357
  _registerInterface(type(IInstanceService).interfaceId);
377
358
  }
@@ -0,0 +1,119 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IPolicy} from "../instance/module/IPolicy.sol";
5
+ import {Key32} from "../type/Key32.sol";
6
+ import {LibNftIdSet} from "../type/NftIdSet.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {RiskIdLib, RiskId} from "../type/RiskId.sol";
9
+
10
+ import {ObjectSet} from "./base/ObjectSet.sol";
11
+
12
+ contract RiskSet is
13
+ ObjectSet
14
+ {
15
+ using LibNftIdSet for LibNftIdSet.Set;
16
+
17
+ event LogRiskSetPolicyLinked(RiskId riskId, NftId policyNftId);
18
+ event LogRiskSetPolicyUnlinked(RiskId riskId, NftId policyNftId);
19
+
20
+ event LogRiskSetRiskAdded(NftId productNftId, RiskId riskId);
21
+ event LogRiskSetRiskActive(NftId poolNftId, RiskId riskId);
22
+ event LogRiskSetRiskPaused(NftId poolNftId, RiskId riskId);
23
+ event LogRiskSetRiskArchived(NftId poolNftId, RiskId riskId);
24
+
25
+ error ErrorRiskSetRiskLocked(RiskId riskId, NftId policyNftId);
26
+ error ErrorRiskSetRiskUnknown(RiskId riskId);
27
+ error ErrorRiskSetRiskNotRegistered(RiskId riskId);
28
+
29
+ mapping(RiskId riskId => LibNftIdSet.Set policies) internal _activePolicies;
30
+
31
+ /// @dev links a policy to its bundle
32
+ function linkPolicy(NftId productNftId, RiskId riskId, NftId policyNftId) external restricted() {
33
+
34
+ // ensure risk is active (in active set) and registered with this instance
35
+ if (!_isActive(productNftId, riskId.toKey32())) {
36
+ revert ErrorRiskSetRiskLocked(riskId, policyNftId);
37
+ }
38
+
39
+ _activePolicies[riskId].add(policyNftId);
40
+ emit LogRiskSetPolicyLinked(riskId, policyNftId);
41
+ }
42
+
43
+ /// @dev Unlinks a policy from its risk.
44
+ function unlinkPolicy(NftId productNftId, RiskId riskId, NftId policyNftId) external restricted() {
45
+
46
+ // ensure risk is registered with this instance
47
+ if (!_contains(productNftId, riskId.toKey32())) {
48
+ revert ErrorRiskSetRiskUnknown(riskId);
49
+ }
50
+
51
+ _activePolicies[riskId].remove(policyNftId);
52
+ emit LogRiskSetPolicyUnlinked(riskId, policyNftId);
53
+ }
54
+
55
+ /// @dev add a new risk to a product registered with this instance
56
+ // the corresponding product is fetched via instance reader
57
+ function add(RiskId riskId) external restricted() {
58
+ NftId productNftId = _instance.getInstanceReader().getRiskInfo(riskId).productNftId;
59
+
60
+ // ensure product is registered with instance
61
+ if(productNftId.eqz()) {
62
+ revert ErrorRiskSetRiskNotRegistered(riskId);
63
+ }
64
+
65
+ _add(productNftId, riskId.toKey32());
66
+ emit LogRiskSetRiskAdded(productNftId, riskId);
67
+ }
68
+
69
+ /// @dev Applications linked to active risks may be underwritten
70
+ function activate(RiskId riskId) external restricted() {
71
+ NftId productNftId = _instance.getInstanceReader().getRiskInfo(riskId).productNftId;
72
+ _activate(productNftId, riskId.toKey32());
73
+ emit LogRiskSetRiskActive(productNftId, riskId);
74
+ }
75
+
76
+ /// @dev Applications linked to paused/archived risks may not be underwritten
77
+ function pause(RiskId riskId) external restricted() {
78
+ NftId productNftId = _instance.getInstanceReader().getRiskInfo(riskId).productNftId;
79
+ _deactivate(productNftId, riskId.toKey32());
80
+ emit LogRiskSetRiskPaused(productNftId, riskId);
81
+ }
82
+
83
+ function checkRisk(NftId productNftId, RiskId riskId)
84
+ public
85
+ view
86
+ returns (bool exists, bool active)
87
+ {
88
+ Key32 riskKey32 = riskId.toKey32();
89
+ exists = _contains(productNftId, riskKey32);
90
+
91
+ if (exists) {
92
+ active = _isActive(productNftId, riskKey32);
93
+ }
94
+ }
95
+
96
+ function risks(NftId productNftId) external view returns(uint256) {
97
+ return _objects(productNftId);
98
+ }
99
+
100
+ function getRiskId(NftId productNftId, uint256 idx) external view returns(RiskId riskId) {
101
+ return RiskIdLib.toRiskId(_getObject(productNftId, idx).toKeyId());
102
+ }
103
+
104
+ function activeRisks(NftId productNftId) external view returns(uint256) {
105
+ return _activeObjs(productNftId);
106
+ }
107
+
108
+ function getActiveRiskId(NftId productNftId, uint256 idx) external view returns(RiskId riskId) {
109
+ return RiskIdLib.toRiskId(_getActiveObject(productNftId, idx).toKeyId());
110
+ }
111
+
112
+ function linkedPolicies(RiskId riskId) external view returns(uint256) {
113
+ return _activePolicies[riskId].size();
114
+ }
115
+
116
+ function getLinkedPolicyNftId(RiskId riskId, uint256 idx) external view returns(NftId policyNftId) {
117
+ return _activePolicies[riskId].getElementAt(idx);
118
+ }
119
+ }
@@ -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);