@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
@@ -1,10 +1,13 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
4
6
  import {Amount, AmountLib} from "../../type/Amount.sol";
5
7
  import {BasicProduct} from "../../product/BasicProduct.sol";
6
8
  import {ClaimId} from "../../type/ClaimId.sol";
7
9
  import {IAuthorization} from "../../authorization/IAuthorization.sol";
10
+ import {IComponents} from "../../instance/module/IComponents.sol";
8
11
  import {IOracleService} from "../../oracle/IOracleService.sol";
9
12
  import {ORACLE} from "../../type/ObjectType.sol";
10
13
  import {NftId} from "../../type/NftId.sol";
@@ -33,37 +36,32 @@ contract SimpleProduct is
33
36
  constructor(
34
37
  address registry,
35
38
  NftId instanceNftId,
36
- IAuthorization authorization,
37
- address initialOwner,
39
+ string memory name,
38
40
  address token,
39
- bool isInterceptor,
40
- bool hasDistribution,
41
- uint8 numberOfOracles
41
+ IComponents.ProductInfo memory productInfo,
42
+ IAuthorization authorization,
43
+ address initialOwner
42
44
  )
43
45
  {
44
46
  initialize(
45
47
  registry,
46
48
  instanceNftId,
47
- authorization,
48
- initialOwner,
49
- "SimpleProduct",
49
+ name,
50
50
  token,
51
- isInterceptor,
52
- hasDistribution,
53
- numberOfOracles);
51
+ productInfo,
52
+ authorization,
53
+ initialOwner);
54
54
  }
55
55
 
56
56
 
57
57
  function initialize(
58
58
  address registry,
59
59
  NftId instanceNftid,
60
- IAuthorization authorization,
61
- address initialOwner,
62
60
  string memory name,
63
61
  address token,
64
- bool isInterceptor,
65
- bool hasDistribution,
66
- uint8 numberOfOracles
62
+ IComponents.ProductInfo memory productInfo,
63
+ IAuthorization authorization,
64
+ address initialOwner
67
65
  )
68
66
  public
69
67
  virtual
@@ -72,17 +70,16 @@ contract SimpleProduct is
72
70
  _initializeBasicProduct(
73
71
  registry,
74
72
  instanceNftid,
75
- authorization,
76
- initialOwner,
77
73
  name,
78
74
  token,
79
- isInterceptor,
80
- hasDistribution,
81
- numberOfOracles);
75
+ productInfo,
76
+ authorization,
77
+ initialOwner);
82
78
 
83
79
  _oracleService = IOracleService(_getServiceAddress(ORACLE()));
84
80
  }
85
81
 
82
+
86
83
  function createRisk(
87
84
  RiskId id,
88
85
  bytes memory data
@@ -348,4 +345,8 @@ contract SimpleProduct is
348
345
  function getOracleService() public view returns (IOracleService) {
349
346
  return _oracleService;
350
347
  }
348
+
349
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
350
+ function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
351
+ function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
351
352
  }
@@ -0,0 +1,28 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {BasicProductAuthorization} from "../../product/BasicProductAuthorization.sol";
5
+ import {IAccess} from "../../authorization/IAccess.sol";
6
+ import {PUBLIC_ROLE} from "../../type/RoleId.sol";
7
+ import {SimpleProduct} from "./SimpleProduct.sol";
8
+
9
+ contract SimpleProductAuthorization
10
+ is BasicProductAuthorization
11
+ {
12
+ constructor(string memory componentName)
13
+ BasicProductAuthorization(componentName)
14
+ {}
15
+
16
+ function _setupTargetAuthorizations()
17
+ internal
18
+ virtual override
19
+ {
20
+ super._setupTargetAuthorizations();
21
+
22
+ // authorize public role (open access to any account, only allows to lock target)
23
+ IAccess.FunctionInfo[] storage functions;
24
+ functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
25
+ _authorize(functions, SimpleProduct.approveTokenHandler.selector, "approveTokenHandler");
26
+ _authorize(functions, SimpleProduct.setWallet.selector, "setWallet");
27
+ }
28
+ }
@@ -1,20 +1,18 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IInstance} from "./IInstance.sol";
5
- import {INSTANCE} from "../type/ObjectType.sol";
6
- import {InstanceReader} from "./InstanceReader.sol";
7
4
  import {IPolicy} from "../instance/module/IPolicy.sol";
8
- import {IRegistry} from "../registry/IRegistry.sol";
9
5
  import {LibNftIdSet} from "../type/NftIdSet.sol";
10
- import {NftId} from "../type/NftId.sol";
11
- import {TimestampLib} from "../type/Timestamp.sol";
6
+ import {NftId, NftIdLib} from "../type/NftId.sol";
7
+ import {Key32} from "../type/Key32.sol";
8
+ import {BUNDLE} from "../type/ObjectType.sol";
12
9
 
13
10
  import {ObjectSet} from "./base/ObjectSet.sol";
14
11
 
15
12
  contract BundleSet is
16
13
  ObjectSet
17
14
  {
15
+ using LibNftIdSet for LibNftIdSet.Set;
18
16
 
19
17
  event LogBundleSetPolicyLinked(NftId bundleNftId, NftId policyNftId);
20
18
  event LogBundleSetPolicyUnlinked(NftId bundleNftId, NftId policyNftId);
@@ -34,40 +32,28 @@ contract BundleSet is
34
32
  mapping(NftId bundleNftId => LibNftIdSet.Set policies) internal _activePolicies;
35
33
 
36
34
  /// @dev links a policy to its bundle
37
- // to link a policy it MUST NOT yet have been linked
38
- function linkPolicy(NftId policyNftId) external restricted() {
39
- NftId bundleNftId = _instance.getInstanceReader().getPolicyInfo(policyNftId).bundleNftId;
40
- // decision will likely depend on the decision what to check here and what in the service
41
- NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
35
+ function linkPolicy(NftId poolNftId, NftId bundleNftId, NftId policyNftId) external restricted() {
42
36
 
43
37
  // ensure bundle is unlocked (in active set) and registered with this instance
44
- if (!_isActive(poolNftId, bundleNftId)) {
38
+ if (!_isActive(poolNftId, _toBundleKey32(bundleNftId))) {
45
39
  revert ErrorBundleSetBundleLocked(bundleNftId, policyNftId);
46
40
  }
47
41
 
48
- LibNftIdSet.add(_activePolicies[bundleNftId], policyNftId);
42
+ _activePolicies[bundleNftId].add(policyNftId);
49
43
  emit LogBundleSetPolicyLinked(bundleNftId, policyNftId);
50
44
  }
51
45
 
52
46
 
53
47
  /// @dev unlinks a policy from its bundle
54
- // to unlink a policy it must closable, ie. meet one of the following criterias
55
- // - the policy MUST be past its expiry period and it MUST NOT have any open claims
56
- // - the policy's payoutAmount MUST be equal to its sumInsuredAmount and MUST NOT have any open claims
57
- function unlinkPolicy(NftId policyNftId) external restricted() {
58
- IPolicy.PolicyInfo memory policyInfo = _instance.getInstanceReader().getPolicyInfo(policyNftId);
59
-
60
- NftId bundleNftId = policyInfo.bundleNftId;
61
- // decision will likely depend on the decision what to check here and what in the service
62
- NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
48
+ function unlinkPolicy(NftId poolNftId, NftId bundleNftId, NftId policyNftId) external restricted() {
63
49
 
64
50
  // ensure bundle is registered with this instance
65
- if (!_contains(poolNftId, bundleNftId)) {
51
+ if (!_contains(poolNftId, _toBundleKey32(bundleNftId))) {
66
52
  revert ErrorBundleSetBundleUnknown(bundleNftId);
67
53
  }
68
54
 
69
- LibNftIdSet.remove(_activePolicies[bundleNftId], policyNftId);
70
- emit LogBundleSetPolicyUnlinked(policyInfo.bundleNftId, policyNftId);
55
+ _activePolicies[bundleNftId].remove(policyNftId);
56
+ emit LogBundleSetPolicyUnlinked(bundleNftId, policyNftId);
71
57
  }
72
58
 
73
59
 
@@ -81,7 +67,7 @@ contract BundleSet is
81
67
  revert ErrorBundleSetBundleNotRegistered(bundleNftId);
82
68
  }
83
69
 
84
- _add(poolNftId, bundleNftId);
70
+ _add(poolNftId, _toBundleKey32(bundleNftId));
85
71
  emit LogBundleSetBundleAdded(poolNftId, bundleNftId);
86
72
  }
87
73
 
@@ -89,38 +75,56 @@ contract BundleSet is
89
75
  /// @dev unlocked (active) bundles are available to collateralize new policies
90
76
  function unlock(NftId bundleNftId) external restricted() {
91
77
  NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
92
- _activate(poolNftId, bundleNftId);
78
+ _activate(poolNftId, _toBundleKey32(bundleNftId));
93
79
  emit LogBundleSetBundleUnlocked(poolNftId, bundleNftId);
94
80
  }
95
81
 
96
82
  /// @dev locked (deactivated) bundles may not collateralize any new policies
97
83
  function lock(NftId bundleNftId) external restricted() {
98
84
  NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
99
- _deactivate(poolNftId, bundleNftId);
85
+ _deactivate(poolNftId, _toBundleKey32(bundleNftId));
100
86
  emit LogBundleSetBundleLocked(poolNftId, bundleNftId);
101
87
  }
102
88
 
89
+
90
+ function checkBundle(NftId productNftId, NftId bundleId)
91
+ public
92
+ view
93
+ returns (bool exists, bool active)
94
+ {
95
+ Key32 bundleKey32 = bundleId.toKey32(BUNDLE());
96
+ exists = _contains(productNftId, bundleKey32);
97
+
98
+ if (exists) {
99
+ active = _isActive(productNftId, bundleKey32);
100
+ }
101
+ }
102
+
103
103
  function bundles(NftId poolNftId) external view returns(uint256) {
104
104
  return _objects(poolNftId);
105
105
  }
106
106
 
107
- function getBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId bundleNftId) {
108
- return _getObject(poolNftId, idx);
107
+ function getBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId) {
108
+ return NftIdLib.toNftId(_getObject(poolNftId, idx).toKeyId());
109
109
  }
110
110
 
111
111
  function activeBundles(NftId poolNftId) external view returns(uint256) {
112
112
  return _activeObjs(poolNftId);
113
113
  }
114
114
 
115
- function getActiveBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId bundleNftId) {
116
- return _getActiveObject(poolNftId, idx);
115
+ function getActiveBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId) {
116
+ return NftIdLib.toNftId(_getActiveObject(poolNftId, idx).toKeyId());
117
117
  }
118
118
 
119
119
  function activePolicies(NftId bundleNftId) external view returns(uint256) {
120
- return LibNftIdSet.size(_activePolicies[bundleNftId]);
120
+ return _activePolicies[bundleNftId].size();
121
121
  }
122
122
 
123
123
  function getActivePolicy(NftId bundleNftId, uint256 idx) external view returns(NftId policyNftId) {
124
- return LibNftIdSet.getElementAt(_activePolicies[bundleNftId], idx);
124
+ return _activePolicies[bundleNftId].getElementAt(idx);
125
+ }
126
+
127
+ function _toBundleKey32(NftId nftId) private pure returns (Key32) {
128
+ return nftId.toKey32(BUNDLE());
125
129
  }
126
130
  }
@@ -5,6 +5,7 @@ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessMana
5
5
 
6
6
  import {Amount} from "../type/Amount.sol";
7
7
  import {BundleSet} from "./BundleSet.sol";
8
+ import {RiskSet} from "./RiskSet.sol";
8
9
  import {InstanceAdmin} from "./InstanceAdmin.sol";
9
10
  import {InstanceReader} from "./InstanceReader.sol";
10
11
  import {InstanceStore} from "./InstanceStore.sol";
@@ -14,7 +15,6 @@ import {NftId} from "../type/NftId.sol";
14
15
  import {RoleId} from "../type/RoleId.sol";
15
16
  import {Seconds} from "../type/Seconds.sol";
16
17
  import {UFixed} from "../type/UFixed.sol";
17
- import {VersionPart} from "../type/Version.sol";
18
18
 
19
19
 
20
20
  interface IInstance is
@@ -30,6 +30,10 @@ interface IInstance is
30
30
  error ErrorInstanceBundleSetInstanceMismatch(address instance);
31
31
  error ErrorInstanceBundleSetAuthorityMismatch(address instanceAuthority);
32
32
 
33
+ error ErrorInstanceRiskSetAlreadySet(address instanceRiskSet);
34
+ error ErrorInstanceRiskSetInstanceMismatch(address instance);
35
+ error ErrorInstanceRiskSetAuthorityMismatch(address instanceAuthority);
36
+
33
37
  error ErrorInstanceInstanceReaderInstanceMismatch(address instanceAuthority);
34
38
 
35
39
  error ErrorInstanceInstanceStoreAlreadySet(address instanceStore);
@@ -48,7 +52,7 @@ interface IInstance is
48
52
 
49
53
  function createTarget(address target, string memory name) external;
50
54
  function setTargetFunctionRole(string memory targetName, bytes4[] calldata selectors, RoleId roleId) external;
51
- function setTargetLocked(address target, bool locked) external;
55
+ function setLocked(address target, bool locked) external;
52
56
 
53
57
  function setStakingLockingPeriod(Seconds stakeLockingPeriod) external;
54
58
  function setStakingRewardRate(UFixed rewardRate) external;
@@ -61,6 +65,7 @@ interface IInstance is
61
65
  // get instance release and supporting contracts
62
66
  function getInstanceReader() external view returns (InstanceReader);
63
67
  function getBundleSet() external view returns (BundleSet);
68
+ function getRiskSet() external view returns (RiskSet);
64
69
  function getInstanceAdmin() external view returns (InstanceAdmin);
65
70
  function getInstanceStore() external view returns (InstanceStore);
66
71
  }
@@ -2,13 +2,10 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount} from "../type/Amount.sol";
5
- import {BundleSet} from "./BundleSet.sol";
6
- import {Instance} from "./Instance.sol";
7
- import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
5
+ import {IInstance} from "./IInstance.sol";
8
6
  import {IService} from "../shared/IService.sol";
9
7
  import {NftId} from "../type/NftId.sol";
10
8
  import {ObjectType} from "../type/ObjectType.sol";
11
- import {RoleId} from "../type/RoleId.sol";
12
9
  import {Seconds} from "../type/Seconds.sol";
13
10
  import {UFixed} from "../type/UFixed.sol";
14
11
  import {VersionPart} from "../type/Version.sol";
@@ -25,6 +22,7 @@ interface IInstanceService is IService {
25
22
  error ErrorInstanceServiceMasterInstanceAlreadySet();
26
23
  error ErrorInstanceServiceMasterInstanceAdminAlreadySet();
27
24
  error ErrorInstanceServiceMasterBundleSetAlreadySet();
25
+ error ErrorInstanceServiceMasterRiskSetAlreadySet();
28
26
  error ErrorInstanceServiceInstanceAddressZero();
29
27
 
30
28
  error ErrorInstanceServiceMasterInstanceReaderNotSet();
@@ -36,12 +34,15 @@ interface IInstanceService is IService {
36
34
  error ErrorInstanceServiceInstanceAdminZero();
37
35
  error ErrorInstanceServiceInstanceReaderZero();
38
36
  error ErrorInstanceServiceBundleSetZero();
37
+ error ErrorInstanceServiceRiskSetZero();
39
38
  error ErrorInstanceServiceInstanceStoreZero();
40
39
 
41
40
  error ErrorInstanceServiceInstanceAuthorityMismatch();
42
41
  error ErrorInstanceServiceBundleSetAuthorityMismatch();
42
+ error ErrorInstanceServiceRiskSetAuthorityMismatch();
43
43
  error ErrorInstanceServiceInstanceReaderInstanceMismatch2();
44
- error ErrorInstanceServiceBundleMangerInstanceMismatch();
44
+ error ErrorInstanceServiceBundleSetInstanceMismatch();
45
+ error ErrorInstanceServiceRiskSetInstanceMismatch();
45
46
  error ErrorInstanceServiceInstanceStoreAuthorityMismatch();
46
47
 
47
48
  error ErrorInstanceServiceRequestUnauhorized(address caller);
@@ -55,8 +56,7 @@ interface IInstanceService is IService {
55
56
  function createInstance()
56
57
  external
57
58
  returns (
58
- // TODO check if Instance can be changed to IInstance
59
- Instance clonedInstance,
59
+ IInstance instance,
60
60
  NftId instanceNftId
61
61
  );
62
62
 
@@ -67,6 +67,4 @@ interface IInstanceService is IService {
67
67
 
68
68
  /// @dev Defunds the staking reward reserves for the specified target.
69
69
  function withdrawStakingRewardReserves(Amount dipAmount) external returns (Amount newBalance);
70
-
71
- function setComponentLocked(bool locked) external;
72
70
  }
@@ -5,6 +5,7 @@ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/acce
5
5
 
6
6
  import {Amount} from "../type/Amount.sol";
7
7
  import {BundleSet} from "./BundleSet.sol";
8
+ import {RiskSet} from "./RiskSet.sol";
8
9
  import {COMPONENT, INSTANCE} from "../type/ObjectType.sol";
9
10
  import {IInstance} from "./IInstance.sol";
10
11
  import {IComponentService} from "../shared/IComponentService.sol";
@@ -18,7 +19,6 @@ import {Registerable} from "../shared/Registerable.sol";
18
19
  import {RoleId} from "../type/RoleId.sol";
19
20
  import {Seconds} from "../type/Seconds.sol";
20
21
  import {UFixed} from "../type/UFixed.sol";
21
- import {VersionPart, VersionPartLib} from "../type/Version.sol";
22
22
 
23
23
  contract Instance is
24
24
  IInstance,
@@ -31,7 +31,8 @@ contract Instance is
31
31
  IInstanceService internal _instanceService;
32
32
  InstanceAdmin internal _instanceAdmin;
33
33
  InstanceReader internal _instanceReader;
34
- BundleSet internal _bundleManager;
34
+ BundleSet internal _bundleSet;
35
+ RiskSet internal _riskSet;
35
36
  InstanceStore internal _instanceStore;
36
37
 
37
38
  modifier onlyChainNft() {
@@ -44,7 +45,8 @@ contract Instance is
44
45
  function initialize(
45
46
  InstanceAdmin instanceAdmin,
46
47
  InstanceStore instanceStore,
47
- BundleSet bundleManager,
48
+ BundleSet bundleSet,
49
+ RiskSet riskSet,
48
50
  InstanceReader instanceReader,
49
51
  IRegistry registry,
50
52
  address initialOwner
@@ -71,12 +73,14 @@ contract Instance is
71
73
 
72
74
  // store instance supporting contracts
73
75
  _instanceStore = instanceStore;
74
- _bundleManager = bundleManager;
76
+ _bundleSet = bundleSet;
77
+ _riskSet = riskSet;
75
78
  _instanceReader = instanceReader;
76
79
 
77
80
  // initialize instance supporting contracts
78
81
  _instanceStore.initialize();
79
- _bundleManager.initialize();
82
+ _bundleSet.initialize();
83
+ _riskSet.initialize();
80
84
  _instanceReader.initialize();
81
85
 
82
86
  _componentService = IComponentService(
@@ -181,12 +185,11 @@ contract Instance is
181
185
  // _instanceAdmin.setTargetFunctionRoleByInstance(targetName, selectors, roleId);
182
186
  }
183
187
 
184
- function setTargetLocked(address target, bool locked)
188
+ function setLocked(address target, bool locked)
185
189
  external
186
190
  onlyOwner()
187
191
  {
188
- // TODO refactor
189
- // _instanceAdmin.setTargetLockedByInstance(target, locked);
192
+ _componentService.setLockedFromInstance(target, locked);
190
193
  }
191
194
 
192
195
  //--- ITransferInterceptor ----------------------------------------------//
@@ -217,7 +220,11 @@ contract Instance is
217
220
  }
218
221
 
219
222
  function getBundleSet() external view returns (BundleSet) {
220
- return _bundleManager;
223
+ return _bundleSet;
224
+ }
225
+
226
+ function getRiskSet() external view returns (RiskSet) {
227
+ return _riskSet;
221
228
  }
222
229
 
223
230
  function getInstanceAdmin() external view returns (InstanceAdmin) {
@@ -1,19 +1,16 @@
1
1
  // SPDX-License-Identifier: UNLICENSED
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
5
4
 
6
5
  import {AccessAdmin} from "../authorization/AccessAdmin.sol";
7
6
  import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
8
- import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
9
7
  import {IAuthorization} from "../authorization/IAuthorization.sol";
10
8
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
11
9
  import {IAuthorization} from "../authorization/IAuthorization.sol";
12
10
  import {IRegistry} from "../registry/IRegistry.sol";
13
11
  import {IInstance} from "./IInstance.sol";
14
- import {IService} from "../shared/IService.sol";
15
- import {ObjectType, ObjectTypeLib, ALL, POOL, RELEASE} from "../type/ObjectType.sol";
16
- import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
12
+ import {ObjectType} from "../type/ObjectType.sol";
13
+ import {RoleId, RoleIdLib} from "../type/RoleId.sol";
17
14
  import {Str, StrLib} from "../type/String.sol";
18
15
  import {TokenHandler} from "../shared/TokenHandler.sol";
19
16
  import {VersionPart} from "../type/Version.sol";
@@ -26,6 +23,7 @@ contract InstanceAdmin is
26
23
  string public constant INSTANCE_STORE_TARGET_NAME = "InstanceStore";
27
24
  string public constant INSTANCE_ADMIN_TARGET_NAME = "InstanceAdmin";
28
25
  string public constant BUNDLE_SET_TARGET_NAME = "BundleSet";
26
+ string public constant RISK_SET_TAGET_NAME = "RiskSet";
29
27
 
30
28
  uint64 public constant CUSTOM_ROLE_ID_MIN = 10000; // MUST be even
31
29
 
@@ -34,20 +32,20 @@ contract InstanceAdmin is
34
32
  error ErrorInstanceAdminReleaseMismatch();
35
33
  error ErrorInstanceAdminExpectedTargetMissing(string targetName);
36
34
 
37
- IInstance _instance;
35
+ IInstance internal _instance;
38
36
  IRegistry internal _registry;
39
- uint64 _idNext;
37
+ uint64 internal _idNext;
40
38
 
41
- IAuthorization _instanceAuthorization;
39
+ IAuthorization internal _instanceAuthorization;
42
40
 
43
41
  /// @dev Only used for master instance admin.
44
42
  /// Contracts created via constructor come with disabled initializers.
45
43
  constructor(
46
- IAuthorization instanceAuthorization
44
+ address instanceAuthorization
47
45
  )
48
46
  AccessAdmin()
49
47
  {
50
- _instanceAuthorization = instanceAuthorization;
48
+ _instanceAuthorization = IAuthorization(instanceAuthorization);
51
49
  }
52
50
 
53
51
  /// @dev Initializes this instance admin with the provided instances authorization specification.
@@ -56,10 +54,10 @@ contract InstanceAdmin is
56
54
  /// Important: Initialization of this instance admin is only complete after calling function initializeInstance.
57
55
  function initialize(
58
56
  AccessManagerCloneable accessManager,
59
- IAuthorization instanceAuthorization
57
+ address instanceAuthorization
60
58
  )
61
59
  external
62
- initializer()
60
+ initializer()
63
61
  {
64
62
  // create new access manager for this instance admin
65
63
  _initializeAuthority(address(accessManager));
@@ -71,19 +69,6 @@ contract InstanceAdmin is
71
69
  _instanceAuthorization = IAuthorization(instanceAuthorization);
72
70
  }
73
71
 
74
- function _checkTargetIsReadyForAuthorization(address target)
75
- internal
76
- view
77
- {
78
- if (address(_registry) != address(0) && !_registry.isRegistered(target)) {
79
- revert ErrorInstanceAdminNotRegistered(target);
80
- }
81
-
82
- if (targetExists(target)) {
83
- revert ErrorInstanceAdminAlreadyAuthorized(target);
84
- }
85
- }
86
-
87
72
  /// @dev Completes the initialization of this instance admin using the provided instance.
88
73
  /// Important: The instance MUST be registered and all instance supporting contracts must be wired to this instance.
89
74
  function initializeInstanceAuthorization(address instanceAddress)
@@ -114,10 +99,12 @@ contract InstanceAdmin is
114
99
  )
115
100
  external
116
101
  {
117
- _checkTargetIsReadyForAuthorization(address(component));
118
-
102
+ // checks
119
103
  // get authorization specification
120
104
  IAuthorization authorization = component.getAuthorization();
105
+ string memory targetName = authorization.getTargetName();
106
+ _checkTargetIsReadyForAuthorization(address(component));
107
+
121
108
 
122
109
  // create roles
123
110
  _createRoles(authorization);
@@ -125,13 +112,13 @@ contract InstanceAdmin is
125
112
  // create component target
126
113
  _createTarget(
127
114
  address(component),
128
- authorization.getTargetName(),
115
+ targetName,
129
116
  true, // checkAuthority
130
117
  false); // custom
131
118
 
132
119
  _createTarget(
133
120
  address(component.getTokenHandler()),
134
- string(abi.encodePacked(authorization.getTargetName(), "TH")),
121
+ string(abi.encodePacked(targetName, "TH")),
135
122
  true,
136
123
  false);
137
124
 
@@ -173,6 +160,15 @@ contract InstanceAdmin is
173
160
  _grantRoleToAccount(roleId, account);
174
161
  }
175
162
 
163
+ function setTargetLocked(address target, bool locked)
164
+ external
165
+ restricted()
166
+ {
167
+ _setTargetClosed(target, locked);
168
+ }
169
+
170
+
171
+
176
172
  /// @dev Returns the instance authorization specification used to set up this instance admin.
177
173
  function getInstanceAuthorization()
178
174
  external
@@ -183,6 +179,20 @@ contract InstanceAdmin is
183
179
  }
184
180
 
185
181
 
182
+ function _checkTargetIsReadyForAuthorization(address target)
183
+ internal
184
+ view
185
+ {
186
+ if (address(_registry) != address(0) && !_registry.isRegistered(target)) {
187
+ revert ErrorInstanceAdminNotRegistered(target);
188
+ }
189
+
190
+ if (targetExists(target)) {
191
+ revert ErrorInstanceAdminAlreadyAuthorized(target);
192
+ }
193
+ }
194
+
195
+
186
196
  function _createRoles(IAuthorization authorization)
187
197
  internal
188
198
  {
@@ -242,7 +252,7 @@ contract InstanceAdmin is
242
252
  _createTarget(
243
253
  target,
244
254
  targetName,
245
- false, // check authority TODO check normal targets, don't check service targets (they share authority with registry admin)
255
+ false, // check authority TODO check normal targets, don't check service targets (they share authority with release admin)
246
256
  false);
247
257
 
248
258
  // assign target role if defined
@@ -260,6 +270,7 @@ contract InstanceAdmin is
260
270
  _checkAndCreateTargetWithRole(address(_instance.getInstanceStore()), INSTANCE_STORE_TARGET_NAME);
261
271
  _checkAndCreateTargetWithRole(address(_instance.getInstanceAdmin()), INSTANCE_ADMIN_TARGET_NAME);
262
272
  _checkAndCreateTargetWithRole(address(_instance.getBundleSet()), BUNDLE_SET_TARGET_NAME);
273
+ _checkAndCreateTargetWithRole(address(_instance.getRiskSet()), RISK_SET_TAGET_NAME);
263
274
 
264
275
  // create targets for services that need to access the module targets
265
276
  ObjectType[] memory serviceDomains = _instanceAuthorization.getServiceDomains();