@etherisc/gif-next 0.0.2-e5a6af8-639 → 0.0.2-e5bdc7a-937

Sign up to get free protection for your applications and to get access to all the features.
Files changed (355) 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 +55 -133
  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 +8 -38
  22. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +133 -78
  24. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +78 -46
  26. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +11 -23
  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 +38 -147
  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 +92 -190
  37. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  38. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +2 -2
  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 +66 -107
  42. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  43. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +33 -87
  44. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  45. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +155 -141
  46. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  47. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +391 -205
  48. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  49. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +147 -42
  50. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +46 -0
  52. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  53. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +24 -4
  54. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/Instance.sol/Instance.json +78 -11
  56. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  57. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +85 -72
  58. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  59. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +40 -27
  60. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +302 -74
  62. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +61 -25
  64. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  65. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +46 -22
  66. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +36 -46
  68. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  69. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
  70. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  71. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  72. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  73. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  75. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  76. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  77. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  78. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  79. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  80. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  85. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  86. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +22 -100
  88. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  90. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  92. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +11 -23
  93. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  94. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +8 -38
  96. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +84 -60
  98. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +66 -22
  100. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  101. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +8 -53
  102. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +49 -17
  104. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +101 -206
  106. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +58 -70
  108. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  109. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +19 -57
  110. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  111. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +11 -62
  112. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  113. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +77 -75
  114. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  115. package/artifacts/contracts/pool/Pool.sol/Pool.json +8 -77
  116. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  117. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +153 -159
  118. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +61 -33
  120. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  121. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +66 -31
  122. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +42 -22
  124. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  125. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +13 -38
  126. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  127. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  128. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  129. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +84 -76
  130. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  131. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +67 -47
  132. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  133. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -7
  134. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  135. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  136. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +38 -19
  137. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  138. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  139. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +16 -23
  140. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  141. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  142. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +132 -121
  143. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +70 -42
  145. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  146. package/artifacts/contracts/product/PricingService.sol/PricingService.json +54 -38
  147. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +56 -32
  149. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  150. package/artifacts/contracts/product/Product.sol/Product.json +13 -38
  151. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  152. package/artifacts/contracts/product/RiskService.sol/RiskService.json +34 -18
  153. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +40 -16
  155. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  156. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +24 -0
  158. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  159. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  160. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  161. package/artifacts/contracts/registry/Registry.sol/Registry.json +62 -38
  162. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +107 -94
  164. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +32 -16
  166. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  167. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +39 -15
  168. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  169. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  170. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  171. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +12 -12
  172. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  173. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  174. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  175. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  176. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  177. package/artifacts/contracts/shared/Component.sol/Component.json +8 -38
  178. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  179. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +169 -102
  180. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  181. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +74 -42
  182. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  183. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  184. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +402 -6
  185. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  186. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  187. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  188. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  189. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  190. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +11 -23
  191. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  192. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +67 -0
  193. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  194. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +11 -23
  195. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  196. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  197. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  200. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  202. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  203. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  204. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +8 -38
  205. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  206. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  207. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  208. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  209. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  210. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  211. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  212. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  213. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  214. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  215. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  216. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  217. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  218. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  219. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
  220. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  221. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  222. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  223. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  224. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  225. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +29 -59
  226. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  227. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  228. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
  229. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  230. package/artifacts/contracts/staking/Staking.sol/Staking.json +80 -152
  231. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  232. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  233. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  234. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +50 -46
  235. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  236. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  237. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  238. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +36 -20
  239. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +43 -19
  241. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  242. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
  243. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  244. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
  245. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  246. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  247. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  250. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  252. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  255. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  256. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  257. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  259. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  260. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  261. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  263. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  265. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  267. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  269. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +43 -5
  271. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  273. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  283. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  284. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  285. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
  286. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  287. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  288. package/contracts/authorization/AccessAdmin.sol +21 -1
  289. package/contracts/distribution/BasicDistribution.sol +2 -2
  290. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  291. package/contracts/distribution/Distribution.sol +5 -6
  292. package/contracts/distribution/DistributionService.sol +19 -20
  293. package/contracts/distribution/IDistributionService.sol +5 -6
  294. package/contracts/examples/fire/FirePool.sol +19 -8
  295. package/contracts/examples/fire/FireProduct.sol +24 -11
  296. package/contracts/examples/unpermissioned/SimpleDistribution.sol +8 -0
  297. package/contracts/examples/unpermissioned/SimplePool.sol +34 -2
  298. package/contracts/examples/unpermissioned/SimpleProduct.sol +15 -21
  299. package/contracts/instance/BundleSet.sol +38 -34
  300. package/contracts/instance/IInstance.sol +6 -0
  301. package/contracts/instance/IInstanceService.sol +7 -5
  302. package/contracts/instance/Instance.sol +14 -5
  303. package/contracts/instance/InstanceAdmin.sol +6 -5
  304. package/contracts/instance/InstanceAuthorizationV3.sol +30 -7
  305. package/contracts/instance/InstanceReader.sol +85 -1
  306. package/contracts/instance/InstanceService.sol +32 -19
  307. package/contracts/instance/RiskSet.sol +119 -0
  308. package/contracts/instance/base/ObjectSet.sol +24 -25
  309. package/contracts/instance/module/IComponents.sol +1 -2
  310. package/contracts/instance/module/IPolicy.sol +2 -1
  311. package/contracts/instance/module/IRisk.sol +1 -0
  312. package/contracts/oracle/OracleService.sol +87 -69
  313. package/contracts/pool/BasicPool.sol +24 -3
  314. package/contracts/pool/BasicPoolAuthorization.sol +12 -1
  315. package/contracts/pool/BundleService.sol +37 -94
  316. package/contracts/pool/IBundleService.sol +2 -23
  317. package/contracts/pool/IPoolComponent.sol +1 -7
  318. package/contracts/pool/IPoolService.sol +12 -26
  319. package/contracts/pool/Pool.sol +112 -102
  320. package/contracts/pool/PoolService.sol +177 -99
  321. package/contracts/product/ApplicationService.sol +20 -18
  322. package/contracts/product/BasicProduct.sol +7 -11
  323. package/contracts/product/ClaimService.sol +19 -9
  324. package/contracts/product/IApplicationService.sol +5 -2
  325. package/contracts/product/IPolicyService.sol +17 -7
  326. package/contracts/product/PolicyService.sol +241 -191
  327. package/contracts/product/PricingService.sol +4 -1
  328. package/contracts/product/Product.sol +12 -40
  329. package/contracts/product/RiskService.sol +14 -3
  330. package/contracts/registry/IRegistry.sol +2 -0
  331. package/contracts/registry/Registry.sol +9 -1
  332. package/contracts/registry/RegistryAdmin.sol +14 -11
  333. package/contracts/registry/ReleaseRegistry.sol +2 -18
  334. package/contracts/registry/ServiceAuthorizationV3.sol +12 -31
  335. package/contracts/shared/Component.sol +35 -83
  336. package/contracts/shared/ComponentService.sol +105 -34
  337. package/contracts/shared/ComponentVerifyingService.sol +15 -13
  338. package/contracts/shared/ContractLib.sol +196 -10
  339. package/contracts/shared/IComponent.sol +5 -12
  340. package/contracts/shared/IComponentService.sol +13 -3
  341. package/contracts/shared/InstanceLinkedComponent.sol +1 -9
  342. package/contracts/shared/NftOwnable.sol +5 -1
  343. package/contracts/shared/Registerable.sol +0 -2
  344. package/contracts/shared/RegistryLinked.sol +6 -12
  345. package/contracts/shared/TokenHandler.sol +316 -66
  346. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  347. package/contracts/staking/IStaking.sol +9 -4
  348. package/contracts/staking/Staking.sol +29 -21
  349. package/contracts/staking/StakingService.sol +55 -8
  350. package/contracts/type/Key32.sol +2 -2
  351. package/contracts/type/Key32Set.sol +62 -0
  352. package/contracts/type/NftId.sol +6 -0
  353. package/contracts/type/ObjectType.sol +2 -0
  354. package/contracts/type/RiskId.sol +18 -6
  355. package/package.json +3 -3
@@ -6,6 +6,7 @@ import {BasicPool} from "../../pool/BasicPool.sol";
6
6
  import {BasicPoolAuthorization} from "../../pool/BasicPoolAuthorization.sol";
7
7
  import {Fee} from "../../type/Fee.sol";
8
8
  import {IAuthorization} from "../../authorization/IAuthorization.sol";
9
+ import {IComponents} from "../../instance/module/IComponents.sol";
9
10
  import {NftId} from "../../type/NftId.sol";
10
11
  import {Seconds} from "../../type/Timestamp.sol";
11
12
  import {UFixed} from "../../type/UFixed.sol";
@@ -18,6 +19,7 @@ contract SimplePool is
18
19
  address registry,
19
20
  NftId productNftId,
20
21
  address token,
22
+ IComponents.PoolInfo memory poolInfo,
21
23
  IAuthorization authorization,
22
24
  address initialOwner
23
25
  )
@@ -26,15 +28,18 @@ contract SimplePool is
26
28
  registry,
27
29
  productNftId,
28
30
  token,
31
+ poolInfo,
29
32
  authorization,
30
33
  initialOwner
31
34
  );
32
35
  }
33
36
 
37
+
34
38
  function initialize(
35
39
  address registry,
36
40
  NftId productNftId,
37
41
  address token,
42
+ IComponents.PoolInfo memory poolInfo,
38
43
  IAuthorization authorization,
39
44
  address initialOwner
40
45
  )
@@ -45,12 +50,22 @@ contract SimplePool is
45
50
  _initializeBasicPool(
46
51
  registry,
47
52
  productNftId,
48
- authorization,
49
- token,
50
53
  "SimplePool",
54
+ token,
55
+ poolInfo,
56
+ authorization,
51
57
  initialOwner);
52
58
  }
53
59
 
60
+
61
+ function setWallet(address newWallet)
62
+ external
63
+ onlyOwner()
64
+ {
65
+ _setWallet(newWallet);
66
+ }
67
+
68
+
54
69
  function createBundle(
55
70
  Fee memory fee,
56
71
  uint256 initialAmount,
@@ -73,4 +88,21 @@ contract SimplePool is
73
88
  netStakedAmountInt = netStakedAmount.toInt();
74
89
  }
75
90
 
91
+
92
+ function fundPoolWallet(
93
+ Amount amount
94
+ )
95
+ external
96
+ {
97
+ _fundPoolWallet(amount);
98
+ }
99
+
100
+
101
+ function defundPoolWallet(
102
+ Amount amount
103
+ )
104
+ external
105
+ {
106
+ _defundPoolWallet(amount);
107
+ }
76
108
  }
@@ -5,6 +5,7 @@ import {Amount, AmountLib} from "../../type/Amount.sol";
5
5
  import {BasicProduct} from "../../product/BasicProduct.sol";
6
6
  import {ClaimId} from "../../type/ClaimId.sol";
7
7
  import {IAuthorization} from "../../authorization/IAuthorization.sol";
8
+ import {IComponents} from "../../instance/module/IComponents.sol";
8
9
  import {IOracleService} from "../../oracle/IOracleService.sol";
9
10
  import {ORACLE} from "../../type/ObjectType.sol";
10
11
  import {NftId} from "../../type/NftId.sol";
@@ -33,37 +34,32 @@ contract SimpleProduct is
33
34
  constructor(
34
35
  address registry,
35
36
  NftId instanceNftId,
36
- IAuthorization authorization,
37
- address initialOwner,
37
+ string memory name,
38
38
  address token,
39
- bool isInterceptor,
40
- bool hasDistribution,
41
- uint8 numberOfOracles
39
+ IComponents.ProductInfo memory productInfo,
40
+ IAuthorization authorization,
41
+ address initialOwner
42
42
  )
43
43
  {
44
44
  initialize(
45
45
  registry,
46
46
  instanceNftId,
47
- authorization,
48
- initialOwner,
49
- "SimpleProduct",
47
+ name,
50
48
  token,
51
- isInterceptor,
52
- hasDistribution,
53
- numberOfOracles);
49
+ productInfo,
50
+ authorization,
51
+ initialOwner);
54
52
  }
55
53
 
56
54
 
57
55
  function initialize(
58
56
  address registry,
59
57
  NftId instanceNftid,
60
- IAuthorization authorization,
61
- address initialOwner,
62
58
  string memory name,
63
59
  address token,
64
- bool isInterceptor,
65
- bool hasDistribution,
66
- uint8 numberOfOracles
60
+ IComponents.ProductInfo memory productInfo,
61
+ IAuthorization authorization,
62
+ address initialOwner
67
63
  )
68
64
  public
69
65
  virtual
@@ -72,13 +68,11 @@ contract SimpleProduct is
72
68
  _initializeBasicProduct(
73
69
  registry,
74
70
  instanceNftid,
75
- authorization,
76
- initialOwner,
77
71
  name,
78
72
  token,
79
- isInterceptor,
80
- hasDistribution,
81
- numberOfOracles);
73
+ productInfo,
74
+ authorization,
75
+ initialOwner);
82
76
 
83
77
  _oracleService = IOracleService(_getServiceAddress(ORACLE()));
84
78
  }
@@ -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";
@@ -30,6 +31,10 @@ interface IInstance is
30
31
  error ErrorInstanceBundleSetInstanceMismatch(address instance);
31
32
  error ErrorInstanceBundleSetAuthorityMismatch(address instanceAuthority);
32
33
 
34
+ error ErrorInstanceRiskSetAlreadySet(address instanceRiskSet);
35
+ error ErrorInstanceRiskSetInstanceMismatch(address instance);
36
+ error ErrorInstanceRiskSetAuthorityMismatch(address instanceAuthority);
37
+
33
38
  error ErrorInstanceInstanceReaderInstanceMismatch(address instanceAuthority);
34
39
 
35
40
  error ErrorInstanceInstanceStoreAlreadySet(address instanceStore);
@@ -61,6 +66,7 @@ interface IInstance is
61
66
  // get instance release and supporting contracts
62
67
  function getInstanceReader() external view returns (InstanceReader);
63
68
  function getBundleSet() external view returns (BundleSet);
69
+ function getRiskSet() external view returns (RiskSet);
64
70
  function getInstanceAdmin() external view returns (InstanceAdmin);
65
71
  function getInstanceStore() external view returns (InstanceStore);
66
72
  }
@@ -2,8 +2,7 @@
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";
5
+ import {IInstance} from "./IInstance.sol";
7
6
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
8
7
  import {IService} from "../shared/IService.sol";
9
8
  import {NftId} from "../type/NftId.sol";
@@ -25,6 +24,7 @@ interface IInstanceService is IService {
25
24
  error ErrorInstanceServiceMasterInstanceAlreadySet();
26
25
  error ErrorInstanceServiceMasterInstanceAdminAlreadySet();
27
26
  error ErrorInstanceServiceMasterBundleSetAlreadySet();
27
+ error ErrorInstanceServiceMasterRiskSetAlreadySet();
28
28
  error ErrorInstanceServiceInstanceAddressZero();
29
29
 
30
30
  error ErrorInstanceServiceMasterInstanceReaderNotSet();
@@ -36,12 +36,15 @@ interface IInstanceService is IService {
36
36
  error ErrorInstanceServiceInstanceAdminZero();
37
37
  error ErrorInstanceServiceInstanceReaderZero();
38
38
  error ErrorInstanceServiceBundleSetZero();
39
+ error ErrorInstanceServiceRiskSetZero();
39
40
  error ErrorInstanceServiceInstanceStoreZero();
40
41
 
41
42
  error ErrorInstanceServiceInstanceAuthorityMismatch();
42
43
  error ErrorInstanceServiceBundleSetAuthorityMismatch();
44
+ error ErrorInstanceServiceRiskSetAuthorityMismatch();
43
45
  error ErrorInstanceServiceInstanceReaderInstanceMismatch2();
44
- error ErrorInstanceServiceBundleMangerInstanceMismatch();
46
+ error ErrorInstanceServiceBundleSetInstanceMismatch();
47
+ error ErrorInstanceServiceRiskSetInstanceMismatch();
45
48
  error ErrorInstanceServiceInstanceStoreAuthorityMismatch();
46
49
 
47
50
  error ErrorInstanceServiceRequestUnauhorized(address caller);
@@ -55,8 +58,7 @@ interface IInstanceService is IService {
55
58
  function createInstance()
56
59
  external
57
60
  returns (
58
- // TODO check if Instance can be changed to IInstance
59
- Instance clonedInstance,
61
+ IInstance instance,
60
62
  NftId instanceNftId
61
63
  );
62
64
 
@@ -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";
@@ -31,7 +32,8 @@ contract Instance is
31
32
  IInstanceService internal _instanceService;
32
33
  InstanceAdmin internal _instanceAdmin;
33
34
  InstanceReader internal _instanceReader;
34
- BundleSet internal _bundleManager;
35
+ BundleSet internal _bundleSet;
36
+ RiskSet internal _riskSet;
35
37
  InstanceStore internal _instanceStore;
36
38
 
37
39
  modifier onlyChainNft() {
@@ -44,7 +46,8 @@ contract Instance is
44
46
  function initialize(
45
47
  InstanceAdmin instanceAdmin,
46
48
  InstanceStore instanceStore,
47
- BundleSet bundleManager,
49
+ BundleSet bundleSet,
50
+ RiskSet riskSet,
48
51
  InstanceReader instanceReader,
49
52
  IRegistry registry,
50
53
  address initialOwner
@@ -71,12 +74,14 @@ contract Instance is
71
74
 
72
75
  // store instance supporting contracts
73
76
  _instanceStore = instanceStore;
74
- _bundleManager = bundleManager;
77
+ _bundleSet = bundleSet;
78
+ _riskSet = riskSet;
75
79
  _instanceReader = instanceReader;
76
80
 
77
81
  // initialize instance supporting contracts
78
82
  _instanceStore.initialize();
79
- _bundleManager.initialize();
83
+ _bundleSet.initialize();
84
+ _riskSet.initialize();
80
85
  _instanceReader.initialize();
81
86
 
82
87
  _componentService = IComponentService(
@@ -217,7 +222,11 @@ contract Instance is
217
222
  }
218
223
 
219
224
  function getBundleSet() external view returns (BundleSet) {
220
- return _bundleManager;
225
+ return _bundleSet;
226
+ }
227
+
228
+ function getRiskSet() external view returns (RiskSet) {
229
+ return _riskSet;
221
230
  }
222
231
 
223
232
  function getInstanceAdmin() external view returns (InstanceAdmin) {
@@ -5,7 +5,6 @@ import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManage
5
5
 
6
6
  import {AccessAdmin} from "../authorization/AccessAdmin.sol";
7
7
  import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
8
- import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
9
8
  import {IAuthorization} from "../authorization/IAuthorization.sol";
10
9
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
11
10
  import {IAuthorization} from "../authorization/IAuthorization.sol";
@@ -26,6 +25,7 @@ contract InstanceAdmin is
26
25
  string public constant INSTANCE_STORE_TARGET_NAME = "InstanceStore";
27
26
  string public constant INSTANCE_ADMIN_TARGET_NAME = "InstanceAdmin";
28
27
  string public constant BUNDLE_SET_TARGET_NAME = "BundleSet";
28
+ string public constant RISK_SET_TAGET_NAME = "RiskSet";
29
29
 
30
30
  uint64 public constant CUSTOM_ROLE_ID_MIN = 10000; // MUST be even
31
31
 
@@ -43,11 +43,11 @@ contract InstanceAdmin is
43
43
  /// @dev Only used for master instance admin.
44
44
  /// Contracts created via constructor come with disabled initializers.
45
45
  constructor(
46
- IAuthorization instanceAuthorization
46
+ address instanceAuthorization
47
47
  )
48
48
  AccessAdmin()
49
49
  {
50
- _instanceAuthorization = instanceAuthorization;
50
+ _instanceAuthorization = IAuthorization(instanceAuthorization);
51
51
  }
52
52
 
53
53
  /// @dev Initializes this instance admin with the provided instances authorization specification.
@@ -56,7 +56,7 @@ contract InstanceAdmin is
56
56
  /// Important: Initialization of this instance admin is only complete after calling function initializeInstance.
57
57
  function initialize(
58
58
  AccessManagerCloneable accessManager,
59
- IAuthorization instanceAuthorization
59
+ address instanceAuthorization
60
60
  )
61
61
  external
62
62
  initializer()
@@ -242,7 +242,7 @@ contract InstanceAdmin is
242
242
  _createTarget(
243
243
  target,
244
244
  targetName,
245
- false, // check authority TODO check normal targets, don't check service targets (they share authority with registry admin)
245
+ false, // check authority TODO check normal targets, don't check service targets (they share authority with release admin)
246
246
  false);
247
247
 
248
248
  // assign target role if defined
@@ -260,6 +260,7 @@ contract InstanceAdmin is
260
260
  _checkAndCreateTargetWithRole(address(_instance.getInstanceStore()), INSTANCE_STORE_TARGET_NAME);
261
261
  _checkAndCreateTargetWithRole(address(_instance.getInstanceAdmin()), INSTANCE_ADMIN_TARGET_NAME);
262
262
  _checkAndCreateTargetWithRole(address(_instance.getBundleSet()), BUNDLE_SET_TARGET_NAME);
263
+ _checkAndCreateTargetWithRole(address(_instance.getRiskSet()), RISK_SET_TAGET_NAME);
263
264
 
264
265
  // create targets for services that need to access the module targets
265
266
  ObjectType[] memory serviceDomains = _instanceAuthorization.getServiceDomains();
@@ -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
 
@@ -164,7 +187,7 @@ contract InstanceAuthorizationV3
164
187
  _authorize(functions, InstanceStore.decreaseLocked.selector, "decreaseLocked");
165
188
 
166
189
  // authorize product service role
167
- functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(PRODUCT()));
190
+ functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(RISK()));
168
191
  _authorize(functions, InstanceStore.createRisk.selector, "createRisk");
169
192
  _authorize(functions, InstanceStore.updateRisk.selector, "updateRisk");
170
193
  _authorize(functions, InstanceStore.updateRiskState.selector, "updateRiskState");