@etherisc/gif-next 0.0.2-8b116c2-371 → 0.0.2-8c1d8cd-727

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 (526) hide show
  1. package/README.md +49 -4
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
  14. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  16. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  17. package/artifacts/contracts/{shared/AccessManagerCustom.sol/AccessManagerCustom.json → authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json} +28 -25
  18. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  20. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  21. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1402 -0
  22. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
  24. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +133 -501
  26. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +319 -229
  28. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +115 -103
  30. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +164 -210
  32. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +194 -47
  34. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  36. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1538 -0
  38. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
  40. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2077 -0
  42. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  44. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
  54. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  55. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  56. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +105 -103
  58. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +163 -111
  60. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  61. package/artifacts/contracts/instance/Instance.sol/Instance.json +108 -243
  62. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1210 -265
  64. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +561 -0
  66. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +511 -154
  68. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +210 -268
  70. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +83 -95
  72. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +324 -288
  74. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  76. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  77. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  78. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  79. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  80. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  81. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  82. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  83. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  84. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  86. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  87. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  88. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  89. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  90. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  91. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  92. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  93. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1039 -0
  94. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  95. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
  96. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  98. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +109 -80
  100. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +56 -9
  102. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +119 -358
  104. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +110 -141
  106. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +82 -78
  108. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  109. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1299 -0
  110. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  111. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +470 -0
  112. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  113. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +517 -157
  114. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +176 -88
  116. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  117. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +271 -1
  118. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  119. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +125 -319
  120. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  121. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +410 -192
  122. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  123. package/artifacts/contracts/pool/Pool.sol/Pool.json +165 -632
  124. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  125. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +524 -331
  126. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +111 -83
  128. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  129. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +95 -158
  130. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  131. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +79 -91
  132. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  133. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1173 -0
  134. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  135. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
  136. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  137. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +322 -169
  138. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  139. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +126 -98
  140. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  141. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +47 -0
  142. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  143. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +189 -6
  144. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  145. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +336 -118
  146. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  147. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +127 -85
  148. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  149. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +154 -137
  150. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  151. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +44 -2
  152. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  153. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +451 -295
  154. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  155. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +123 -95
  156. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  157. package/artifacts/contracts/product/PricingService.sol/PricingService.json +207 -283
  158. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  159. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -112
  160. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  161. package/artifacts/contracts/product/Product.sol/Product.json +168 -434
  162. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  163. package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
  164. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  165. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
  166. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  167. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  168. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  169. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +311 -55
  170. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  171. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +55 -146
  172. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  173. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  174. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  175. package/artifacts/contracts/registry/Registry.sol/Registry.json +533 -113
  176. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  177. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1635 -162
  178. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  179. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +96 -265
  180. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  181. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +74 -70
  182. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  183. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  184. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  185. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
  186. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  187. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  188. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  189. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  190. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  191. package/artifacts/contracts/shared/Component.sol/Component.json +65 -236
  192. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  193. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +541 -263
  194. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  195. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +136 -114
  196. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  197. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +51 -103
  198. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  199. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  200. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -54
  202. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +487 -19
  204. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  205. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +98 -80
  206. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  207. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +45 -3
  208. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  209. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
  210. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  211. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  212. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  213. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  214. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  216. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  217. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IService.sol/IService.json +42 -0
  219. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  220. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  221. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  222. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +111 -318
  223. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  224. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +55 -88
  225. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  226. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
  227. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  228. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  229. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  230. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  231. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  232. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  233. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  234. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
  235. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  236. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  237. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  238. package/artifacts/contracts/shared/Service.sol/Service.json +51 -103
  239. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  240. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  241. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  242. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  243. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  244. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +82 -55
  245. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  246. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +78 -28
  247. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  248. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +97 -101
  249. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  250. package/artifacts/contracts/staking/Staking.sol/Staking.json +168 -325
  251. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  252. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  253. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  254. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +103 -104
  255. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  256. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -17
  257. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  258. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +123 -198
  259. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  260. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +76 -92
  261. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  262. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +241 -147
  263. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  264. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  265. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  266. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  267. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
  269. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  271. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  273. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  275. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  277. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  278. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  279. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  281. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  282. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  283. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +136 -2
  285. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  287. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  289. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  291. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  293. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
  295. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  297. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  298. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  299. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  300. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  301. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  303. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  304. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  305. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  307. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  309. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +71 -2
  311. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  313. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  315. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  316. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  317. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  318. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +602 -0
  319. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  320. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  321. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  322. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  323. package/contracts/authorization/AccessAdmin.sol +596 -0
  324. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  325. package/contracts/authorization/Authorization.sol +289 -0
  326. package/contracts/authorization/IAccess.sol +49 -0
  327. package/contracts/authorization/IAccessAdmin.sol +137 -0
  328. package/contracts/authorization/IAuthorization.sol +60 -0
  329. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  330. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  331. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  332. package/contracts/distribution/BasicDistribution.sol +139 -0
  333. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  334. package/contracts/distribution/Distribution.sol +140 -116
  335. package/contracts/distribution/DistributionService.sol +140 -83
  336. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  337. package/contracts/distribution/IDistributionComponent.sol +26 -40
  338. package/contracts/distribution/IDistributionService.sol +23 -3
  339. package/contracts/examples/fire/DamageLevel.sol +59 -0
  340. package/contracts/examples/fire/FirePool.sol +75 -0
  341. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  342. package/contracts/examples/fire/FireProduct.sol +418 -0
  343. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  344. package/contracts/examples/fire/FireUSD.sol +26 -0
  345. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  346. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  347. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  348. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  349. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  350. package/contracts/instance/IInstance.sol +24 -40
  351. package/contracts/instance/IInstanceService.sol +27 -36
  352. package/contracts/instance/Instance.sol +123 -127
  353. package/contracts/instance/InstanceAdmin.sol +216 -270
  354. package/contracts/instance/InstanceAuthorizationV3.sol +194 -0
  355. package/contracts/instance/InstanceReader.sol +139 -34
  356. package/contracts/instance/InstanceService.sol +177 -128
  357. package/contracts/instance/InstanceServiceManager.sol +8 -13
  358. package/contracts/instance/InstanceStore.sol +26 -20
  359. package/contracts/instance/base/BalanceStore.sol +11 -6
  360. package/contracts/instance/base/Cloneable.sol +2 -25
  361. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  362. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
  363. package/contracts/instance/module/IBundle.sol +1 -1
  364. package/contracts/instance/module/IComponents.sol +10 -11
  365. package/contracts/instance/module/IDistribution.sol +0 -1
  366. package/contracts/instance/module/IPolicy.sol +24 -24
  367. package/contracts/mock/Dip.sol +1 -1
  368. package/contracts/oracle/BasicOracle.sol +47 -0
  369. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  370. package/contracts/oracle/IOracle.sol +16 -0
  371. package/contracts/oracle/IOracleComponent.sol +2 -1
  372. package/contracts/oracle/IOracleService.sol +2 -1
  373. package/contracts/oracle/Oracle.sol +64 -53
  374. package/contracts/oracle/OracleService.sol +51 -37
  375. package/contracts/oracle/OracleServiceManager.sol +8 -11
  376. package/contracts/pool/BasicPool.sol +154 -0
  377. package/contracts/pool/BasicPoolAuthorization.sol +57 -0
  378. package/contracts/pool/BundleService.sol +284 -87
  379. package/contracts/pool/BundleServiceManager.sol +8 -11
  380. package/contracts/pool/IBundleService.sol +42 -5
  381. package/contracts/pool/IPoolComponent.sol +24 -68
  382. package/contracts/pool/IPoolService.sol +56 -39
  383. package/contracts/pool/Pool.sol +184 -148
  384. package/contracts/pool/PoolService.sol +262 -171
  385. package/contracts/pool/PoolServiceManager.sol +6 -9
  386. package/contracts/product/ApplicationService.sol +75 -70
  387. package/contracts/product/ApplicationServiceManager.sol +6 -6
  388. package/contracts/product/BasicProduct.sol +53 -0
  389. package/contracts/product/BasicProductAuthorization.sol +42 -0
  390. package/contracts/product/ClaimService.sol +321 -151
  391. package/contracts/product/ClaimServiceManager.sol +6 -6
  392. package/contracts/product/IApplicationService.sol +1 -0
  393. package/contracts/product/IClaimService.sol +31 -7
  394. package/contracts/product/IPolicyService.sol +34 -32
  395. package/contracts/product/IPricingService.sol +10 -10
  396. package/contracts/product/IProductComponent.sol +26 -9
  397. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  398. package/contracts/product/PolicyService.sol +424 -202
  399. package/contracts/product/PolicyServiceManager.sol +6 -9
  400. package/contracts/product/PricingService.sol +58 -59
  401. package/contracts/product/PricingServiceManager.sol +5 -8
  402. package/contracts/product/Product.sol +211 -133
  403. package/contracts/product/{ProductService.sol → RiskService.sol} +18 -46
  404. package/contracts/product/RiskServiceManager.sol +39 -0
  405. package/contracts/registry/ChainNft.sol +68 -38
  406. package/contracts/registry/IRegistry.sol +69 -22
  407. package/contracts/registry/IRegistryService.sol +3 -10
  408. package/contracts/registry/ITransferInterceptor.sol +1 -2
  409. package/contracts/registry/Registry.sol +354 -213
  410. package/contracts/registry/RegistryAdmin.sol +360 -149
  411. package/contracts/registry/RegistryService.sol +44 -69
  412. package/contracts/registry/RegistryServiceManager.sol +4 -9
  413. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  414. package/contracts/registry/ReleaseRegistry.sol +501 -0
  415. package/contracts/registry/ServiceAuthorizationV3.sol +194 -0
  416. package/contracts/registry/TokenRegistry.sol +2 -2
  417. package/contracts/shared/Component.sol +47 -63
  418. package/contracts/shared/ComponentService.sol +316 -189
  419. package/contracts/shared/ComponentServiceManager.sol +10 -7
  420. package/contracts/shared/ComponentVerifyingService.sol +24 -15
  421. package/contracts/shared/ContractLib.sol +38 -0
  422. package/contracts/shared/IComponent.sol +10 -6
  423. package/contracts/shared/IComponentService.sol +38 -20
  424. package/contracts/shared/IInstanceLinkedComponent.sol +11 -16
  425. package/contracts/shared/IKeyValueStore.sol +1 -0
  426. package/contracts/shared/ILifecycle.sol +3 -2
  427. package/contracts/shared/INftOwnable.sol +2 -0
  428. package/contracts/shared/IPolicyHolder.sol +12 -22
  429. package/contracts/shared/IRegisterable.sol +11 -0
  430. package/contracts/shared/IService.sol +8 -1
  431. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  432. package/contracts/shared/InstanceLinkedComponent.sol +106 -37
  433. package/contracts/shared/KeyValueStore.sol +7 -3
  434. package/contracts/shared/Lifecycle.sol +30 -72
  435. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  436. package/contracts/shared/NftOwnable.sol +29 -9
  437. package/contracts/shared/PolicyHolder.sol +17 -57
  438. package/contracts/shared/Registerable.sol +19 -9
  439. package/contracts/shared/RegistryLinked.sol +3 -2
  440. package/contracts/shared/Service.sol +43 -36
  441. package/contracts/shared/TokenHandler.sol +100 -19
  442. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  443. package/contracts/staking/IStaking.sol +3 -3
  444. package/contracts/staking/IStakingService.sol +22 -14
  445. package/contracts/staking/StakeManagerLib.sol +70 -25
  446. package/contracts/staking/Staking.sol +86 -140
  447. package/contracts/staking/StakingLifecycle.sol +23 -0
  448. package/contracts/staking/StakingManager.sol +10 -12
  449. package/contracts/staking/StakingReader.sol +23 -20
  450. package/contracts/staking/StakingService.sol +69 -82
  451. package/contracts/staking/StakingServiceManager.sol +4 -5
  452. package/contracts/staking/StakingStore.sol +93 -60
  453. package/contracts/staking/TargetManagerLib.sol +7 -3
  454. package/contracts/type/Amount.sol +27 -5
  455. package/contracts/type/Blocknumber.sol +7 -1
  456. package/contracts/type/ClaimId.sol +6 -1
  457. package/contracts/type/NftId.sol +1 -0
  458. package/contracts/type/ObjectType.sol +172 -64
  459. package/contracts/type/PayoutId.sol +10 -10
  460. package/contracts/type/Referral.sol +1 -0
  461. package/contracts/type/RiskId.sol +15 -1
  462. package/contracts/type/RoleId.sol +97 -81
  463. package/contracts/type/Seconds.sol +21 -1
  464. package/contracts/type/Selector.sol +102 -0
  465. package/contracts/type/StateId.sol +15 -1
  466. package/contracts/type/String.sol +53 -0
  467. package/contracts/type/Timestamp.sol +11 -1
  468. package/contracts/type/UFixed.sol +38 -9
  469. package/contracts/type/Version.sol +3 -1
  470. package/contracts/{shared → upgradeability}/ProxyManager.sol +71 -38
  471. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  472. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  473. package/package.json +7 -4
  474. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  475. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  476. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  477. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  478. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  479. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  480. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  481. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  482. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -679
  483. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  484. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -694
  485. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  486. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1292
  487. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  488. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  489. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  490. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  491. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1715
  492. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  493. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
  494. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  495. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1806
  496. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  497. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1824
  498. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  499. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  500. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  501. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  502. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  503. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  504. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  505. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  506. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  507. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  508. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  509. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  510. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  511. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  512. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  513. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  514. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  515. package/contracts/product/ProductServiceManager.sol +0 -42
  516. package/contracts/registry/ReleaseManager.sol +0 -600
  517. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  518. package/contracts/shared/AccessManagerCustom.sol +0 -736
  519. package/contracts/shared/AccessManagerExtended.sol +0 -470
  520. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  521. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  522. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  523. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  524. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  525. package/contracts/shared/InitializableCustom.sol +0 -177
  526. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -4,19 +4,20 @@ pragma solidity ^0.8.20;
4
4
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
5
  import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
6
 
7
- import {BundleManager} from "./BundleManager.sol";
7
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
8
+ import {Amount} from "../type/Amount.sol";
9
+ import {BundleSet} from "./BundleSet.sol";
8
10
  import {ChainNft} from "../registry/ChainNft.sol";
9
11
  import {NftId} from "../type/NftId.sol";
10
12
  import {RoleId} from "../type/RoleId.sol";
11
13
  import {SecondsLib} from "../type/Seconds.sol";
12
- import {UFixedLib} from "../type/UFixed.sol";
13
- import {ADMIN_ROLE, INSTANCE_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, APPLICATION_SERVICE_ROLE, POLICY_SERVICE_ROLE, CLAIM_SERVICE_ROLE, BUNDLE_SERVICE_ROLE, INSTANCE_ROLE} from "../type/RoleId.sol";
14
- import {ObjectType, INSTANCE, BUNDLE, APPLICATION, CLAIM, DISTRIBUTION, POLICY, POOL, PRODUCT, REGISTRY, STAKING} from "../type/ObjectType.sol";
14
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
15
+ import {ADMIN_ROLE} from "../type/RoleId.sol";
16
+ import {ObjectType, INSTANCE, BUNDLE, APPLICATION, CLAIM, DISTRIBUTION, INSTANCE, POLICY, POOL, PRODUCT, REGISTRY, STAKING} from "../type/ObjectType.sol";
15
17
 
16
18
  import {Service} from "../shared/Service.sol";
17
19
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
18
20
  import {IService} from "../shared/IService.sol";
19
- import {AccessManagerExtendedInitializeable} from "../shared/AccessManagerExtendedInitializeable.sol";
20
21
 
21
22
  import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
22
23
  import {IPoolComponent} from "../pool/IPoolComponent.sol";
@@ -33,7 +34,9 @@ import {InstanceAdmin} from "./InstanceAdmin.sol";
33
34
  import {IInstanceService} from "./IInstanceService.sol";
34
35
  import {InstanceReader} from "./InstanceReader.sol";
35
36
  import {InstanceStore} from "./InstanceStore.sol";
36
- import {InstanceAuthorizationsLib} from "./InstanceAuthorizationsLib.sol";
37
+ import {Seconds} from "../type/Seconds.sol";
38
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
39
+
37
40
 
38
41
  contract InstanceService is
39
42
  Service,
@@ -50,9 +53,31 @@ contract InstanceService is
50
53
  address internal _masterInstanceAdmin;
51
54
  address internal _masterInstance;
52
55
  address internal _masterInstanceReader;
53
- address internal _masterInstanceBundleManager;
56
+ address internal _masterInstanceBundleSet;
54
57
  address internal _masterInstanceStore;
55
58
 
59
+
60
+ modifier onlyInstance() {
61
+ address instanceAddress = msg.sender;
62
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
63
+ if (instanceNftId.eqz()) {
64
+ revert ErrorInstanceServiceNotRegistered(instanceAddress);
65
+ }
66
+
67
+ ObjectType objectType = getRegistry().getObjectInfo(instanceNftId).objectType;
68
+ if (objectType != INSTANCE()) {
69
+ revert ErrorInstanceServiceNotInstance(instanceAddress, objectType);
70
+ }
71
+
72
+ VersionPart instanceVersion = IInstance(instanceAddress).getRelease();
73
+ if (instanceVersion != getVersion().toMajorPart()) {
74
+ revert ErrorInstanceServiceInstanceVersionMismatch(instanceAddress, instanceVersion);
75
+ }
76
+
77
+ _;
78
+ }
79
+
80
+
56
81
  modifier onlyInstanceOwner(NftId instanceNftId) {
57
82
  if(msg.sender != getRegistry().ownerOf(instanceNftId)) {
58
83
  revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
@@ -68,80 +93,89 @@ contract InstanceService is
68
93
  _;
69
94
  }
70
95
 
71
- function createInstanceClone()
96
+ function createInstance()
72
97
  external
73
98
  returns (
74
99
  Instance clonedInstance,
75
100
  NftId clonedInstanceNftId
76
101
  )
77
102
  {
103
+ // tx sender will become instance owner
78
104
  address instanceOwner = msg.sender;
79
- AccessManagerExtendedInitializeable clonedAccessManager = AccessManagerExtendedInitializeable(
80
- Clones.clone(_masterAccessManager));
81
105
 
82
- // initially grants ADMIN_ROLE to this (being the instance service).
83
- // This will allow the instance service to bootstrap the authorizations of the instance.
84
- // Instance service will renounce ADMIN_ROLE when bootstraping is finished
85
- clonedAccessManager.initialize(address(this));
106
+ // create instance admin and instance
107
+ InstanceAdmin instanceAdmin = _createInstanceAdmin();
108
+ clonedInstance = _createInstance(instanceAdmin, instanceOwner);
86
109
 
87
- clonedInstance = Instance(Clones.clone(_masterInstance));
88
- clonedInstance.initialize(
89
- address(clonedAccessManager),
90
- address(getRegistry()),
91
- instanceOwner);
92
- // initialize and set before instance reader
93
- InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
94
- clonedInstanceStore.initialize(address(clonedInstance));
95
- clonedInstance.setInstanceStore(clonedInstanceStore);
96
-
97
- InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
98
- clonedInstanceReader.initialize(address(clonedInstance));
99
- clonedInstance.setInstanceReader(clonedInstanceReader);
100
-
101
- BundleManager clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
102
- clonedBundleManager.initialize(address(clonedInstance));
103
- clonedInstance.setBundleManager(clonedBundleManager);
104
-
105
- InstanceAdmin clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
106
- clonedAccessManager.grantRole(ADMIN_ROLE().toInt(), address(clonedInstanceAdmin), 0);
107
- clonedInstanceAdmin.initialize(address(clonedInstance));
108
- clonedInstance.setInstanceAdmin(clonedInstanceAdmin);
109
-
110
- // TODO amend setters with instance specific , policy manager ...
111
-
112
- // TODO library does external calls -> but it is registry and access manager -> find out is it best practice
113
- InstanceAuthorizationsLib.grantInitialAuthorizations(
114
- clonedAccessManager,
115
- clonedInstanceAdmin,
116
- clonedInstance,
117
- clonedBundleManager,
118
- clonedInstanceStore,
119
- instanceOwner,
120
- getRegistry(),
121
- getVersion().toMajorPart());
122
-
123
- clonedAccessManager.renounceRole(ADMIN_ROLE().toInt(), address(this));
110
+ // register cloned instance with registry
111
+ clonedInstanceNftId = _registryService.registerInstance(
112
+ clonedInstance, instanceOwner).nftId;
124
113
 
125
- // register new instance with registry
126
- IRegistry.ObjectInfo memory info = _registryService.registerInstance(clonedInstance, instanceOwner);
127
- clonedInstanceNftId = info.nftId;
128
-
129
- // create corresponding staking target
114
+ // register cloned instance as staking target
130
115
  _stakingService.createInstanceTarget(
131
116
  clonedInstanceNftId,
132
117
  TargetManagerLib.getDefaultLockingPeriod(),
133
118
  TargetManagerLib.getDefaultRewardRate());
134
119
 
120
+ // MUST be set after instance is set up and registered
121
+ instanceAdmin.initializeInstanceAuthorization(address(clonedInstance));
122
+
135
123
  emit LogInstanceCloned(
136
- address(clonedAccessManager),
137
- address(clonedInstanceAdmin),
138
- address(clonedInstance),
139
- address(clonedInstanceStore),
140
- address(clonedBundleManager),
141
- address(clonedInstanceReader),
142
- clonedInstanceNftId);
124
+ clonedInstanceNftId,
125
+ address(clonedInstance));
126
+ }
127
+
128
+
129
+ function setStakingLockingPeriod(Seconds stakeLockingPeriod)
130
+ external
131
+ virtual
132
+ onlyInstance()
133
+ {
134
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
135
+ _stakingService.setInstanceLockingPeriod(
136
+ instanceNftId,
137
+ stakeLockingPeriod);
138
+ }
139
+
140
+
141
+ function setStakingRewardRate(UFixed rewardRate)
142
+ external
143
+ virtual
144
+ onlyInstance()
145
+ {
146
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
147
+ _stakingService.setInstanceRewardRate(
148
+ instanceNftId,
149
+ rewardRate);
150
+ }
151
+
152
+
153
+ function refillStakingRewardReserves(address rewardProvider, Amount dipAmount)
154
+ external
155
+ virtual
156
+ onlyInstance()
157
+ {
158
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
159
+ _stakingService.refillInstanceRewardReserves(
160
+ instanceNftId,
161
+ rewardProvider,
162
+ dipAmount);
143
163
  }
144
164
 
165
+
166
+ function withdrawStakingRewardReserves(Amount dipAmount)
167
+ external
168
+ virtual
169
+ onlyInstance()
170
+ returns (Amount newBalance)
171
+ {
172
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
173
+ _stakingService.withdrawInstanceRewardReserves(
174
+ instanceNftId,
175
+ dipAmount);
176
+ }
177
+
178
+
145
179
  function setComponentLocked(bool locked)
146
180
  external
147
181
  virtual
@@ -158,13 +192,13 @@ contract InstanceService is
158
192
  NftId instanceNftId = registry.getObjectInfo(componentAddress).parentNftId;
159
193
 
160
194
  IInstance instance = IInstance(
161
- registry.getObjectInfo(
162
- instanceNftId).objectAddress);
195
+ registry.getObjectAddress(instanceNftId));
163
196
 
164
197
  // no revert in case already locked
165
- instance.getInstanceAdmin().setTargetLockedByService(
166
- componentAddress,
167
- locked);
198
+ // TODO refactor/implement
199
+ // instance.getInstanceAdmin().setTargetLockedByService(
200
+ // componentAddress,
201
+ // locked);
168
202
  }
169
203
 
170
204
 
@@ -172,49 +206,45 @@ contract InstanceService is
172
206
  return _masterInstanceReader;
173
207
  }
174
208
 
175
- // From IService
176
- function getDomain() public pure override returns(ObjectType) {
177
- return INSTANCE();
178
- }
179
-
180
209
  function setAndRegisterMasterInstance(address instanceAddress)
181
210
  external
182
211
  onlyOwner
183
212
  returns(NftId masterInstanceNftId)
184
213
  {
185
214
  if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
186
- if(_masterAccessManager != address(0)) { revert ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet(); }
187
215
  if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
188
- if(_masterInstanceBundleManager != address(0)) { revert ErrorInstanceServiceMasterBundleManagerAlreadySet(); }
216
+ if(_masterInstanceBundleSet != address(0)) { revert ErrorInstanceServiceMasterBundleSetAlreadySet(); }
189
217
 
190
218
  if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
191
219
 
192
220
  IInstance instance = IInstance(instanceAddress);
221
+ address accessManagerAddress = instance.authority();
193
222
  InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
194
223
  address instanceAdminAddress = address(instanceAdmin);
195
224
  InstanceReader instanceReader = instance.getInstanceReader();
196
225
  address instanceReaderAddress = address(instanceReader);
197
- BundleManager bundleManager = instance.getBundleManager();
226
+ BundleSet bundleManager = instance.getBundleSet();
198
227
  address bundleManagerAddress = address(bundleManager);
199
228
  InstanceStore instanceStore = instance.getInstanceStore();
200
229
  address instanceStoreAddress = address(instanceStore);
201
230
 
231
+ if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
202
232
  if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
203
233
  if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
204
- if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleManagerZero(); }
234
+ if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
205
235
  if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
206
236
 
207
237
  if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
208
- if(bundleManager.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleManagerAuthorityMismatch(); }
238
+ if(bundleManager.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
209
239
  if(instanceStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
210
240
  if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
211
241
  if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
212
242
 
213
- _masterAccessManager = instance.authority();
243
+ _masterAccessManager = accessManagerAddress;
214
244
  _masterInstanceAdmin = instanceAdminAddress;
215
245
  _masterInstance = instanceAddress;
216
246
  _masterInstanceReader = instanceReaderAddress;
217
- _masterInstanceBundleManager = bundleManagerAddress;
247
+ _masterInstanceBundleSet = bundleManagerAddress;
218
248
  _masterInstanceStore = instanceStoreAddress;
219
249
 
220
250
  IInstance masterInstance = IInstance(_masterInstance);
@@ -236,56 +266,62 @@ contract InstanceService is
236
266
  function upgradeInstanceReader(NftId instanceNftId)
237
267
  external
238
268
  onlyInstanceOwner(instanceNftId)
269
+ onlyNftOfType(instanceNftId, INSTANCE())
239
270
  {
240
271
  IRegistry registry = getRegistry();
241
272
  IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
242
273
  Instance instance = Instance(instanceInfo.objectAddress);
243
274
 
244
275
  InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
245
- upgradedInstanceReaderClone.initialize(address(instance));
276
+ upgradedInstanceReaderClone.initializeWithInstance(address(instance));
246
277
  instance.setInstanceReader(upgradedInstanceReaderClone);
247
278
  }
248
279
 
249
-
250
- function createGifTarget(
251
- NftId instanceNftId,
252
- address targetAddress,
253
- string memory targetName,
254
- bytes4[][] memory selectors,
255
- RoleId[] memory roles
256
- )
257
- external
280
+ /// @dev create new cloned instance admin
281
+ /// function used to setup a new instance
282
+ function _createInstanceAdmin()
283
+ internal
258
284
  virtual
259
- restricted()
285
+ returns (InstanceAdmin clonedInstanceAdmin)
260
286
  {
261
- _createGifTarget(
262
- instanceNftId,
263
- targetAddress,
264
- targetName,
265
- roles,
266
- selectors
267
- );
287
+ // start with setting up a new OZ access manager
288
+ AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
289
+ Clones.clone(_masterAccessManager));
290
+
291
+ // set up the instance admin
292
+ clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
293
+ clonedAccessManager.initialize(
294
+ address(clonedInstanceAdmin)); // grant ADMIN_ROLE to instance admin
295
+
296
+ clonedInstanceAdmin.initialize(
297
+ clonedAccessManager,
298
+ InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
268
299
  }
269
300
 
270
301
 
271
- function createComponentTarget(
272
- NftId instanceNftId,
273
- address targetAddress,
274
- string memory targetName,
275
- bytes4[][] memory selectors,
276
- RoleId[] memory roles
302
+ /// @dev create new cloned instance
303
+ /// function used to setup a new instance
304
+ function _createInstance(
305
+ InstanceAdmin instanceAdmin,
306
+ address instanceOwner
277
307
  )
278
- external
308
+ internal
279
309
  virtual
280
- restricted()
310
+ returns (Instance clonedInstance)
281
311
  {
282
- _createGifTarget(
283
- instanceNftId,
284
- targetAddress,
285
- targetName,
286
- roles,
287
- selectors
288
- );
312
+ InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
313
+ BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
314
+ InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
315
+
316
+ // clone instance
317
+ clonedInstance = Instance(Clones.clone(_masterInstance));
318
+ clonedInstance.initialize(
319
+ instanceAdmin,
320
+ clonedInstanceStore,
321
+ clonedBundleSet,
322
+ clonedInstanceReader,
323
+ getRegistry(),
324
+ instanceOwner);
289
325
  }
290
326
 
291
327
 
@@ -307,12 +343,14 @@ contract InstanceService is
307
343
  ) = _validateInstanceAndComponent(instanceNftId, targetAddress);
308
344
 
309
345
  InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
310
- instanceAdmin.createGifTarget(targetAddress, targetName);
346
+
347
+ // TODO refactor/implement
348
+ // instanceAdmin.createGifTarget(targetAddress, targetName);
349
+
311
350
  // set proposed target config
312
- // TODO restriction: gif targets are set only once and only here?
313
- // assume config is a mix of gif and custom roles and no further configuration by INSTANCE_OWNER_ROLE is ever needed?
314
351
  for(uint roleIdx = 0; roleIdx < roles.length; roleIdx++) {
315
- instanceAdmin.setTargetFunctionRoleByService(targetName, selectors[roleIdx], roles[roleIdx]);
352
+ // TODO refactor/implement
353
+ // instanceAdmin.setTargetFunctionRoleByService(targetName, selectors[roleIdx], roles[roleIdx]);
316
354
  }
317
355
  }
318
356
 
@@ -322,21 +360,20 @@ contract InstanceService is
322
360
  bytes memory data
323
361
  )
324
362
  internal
325
- initializer
326
363
  virtual override
364
+ initializer()
327
365
  {
328
366
  (
329
- address registryAddress,,
330
- //address managerAddress
367
+ address registryAddress,
331
368
  address authority
332
- ) = abi.decode(data, (address, address, address));
369
+ ) = abi.decode(data, (address, address));
333
370
 
334
- initializeService(registryAddress, authority, owner);
371
+ _initializeService(registryAddress, authority, owner);
335
372
 
336
373
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
337
374
  _stakingService = IStakingService(_getServiceAddress(STAKING()));
338
375
 
339
- registerInterface(type(IInstanceService).interfaceId);
376
+ _registerInterface(type(IInstanceService).interfaceId);
340
377
  }
341
378
 
342
379
 
@@ -348,15 +385,27 @@ contract InstanceService is
348
385
  IRegistry registry = getRegistry();
349
386
  IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
350
387
  if(instanceInfo.objectType != INSTANCE()) {
351
- revert ErrorInstanceServiceNotInstance(instanceNftId);
388
+ revert ErrorInstanceServiceNotInstanceNftId(instanceNftId);
352
389
  }
353
390
 
354
- IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
355
- if(componentInfo.parentNftId != instanceNftId) {
356
- revert ErrorInstanceServiceInstanceComponentMismatch(instanceNftId, componentInfo.nftId);
391
+ if (registry.getNftIdForAddress(componentAddress).gtz()) {
392
+ IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
393
+
394
+ if(componentInfo.parentNftId != instanceNftId) {
395
+ revert ErrorInstanceServiceInstanceComponentMismatch(instanceNftId, componentInfo.nftId);
396
+ }
397
+
398
+ componentNftId = componentInfo.nftId;
399
+ } else {
400
+
357
401
  }
358
402
 
359
403
  instance = Instance(instanceInfo.objectAddress);
360
- componentNftId = componentInfo.nftId;
404
+
405
+ }
406
+
407
+ // From IService
408
+ function _getDomain() internal pure override returns(ObjectType) {
409
+ return INSTANCE();
361
410
  }
362
411
  }
@@ -1,13 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Instance} from "./Instance.sol";
5
- import {IVersionable} from "../shared/IVersionable.sol";
6
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
7
6
  import {InstanceService} from "./InstanceService.sol";
8
- import {Registry} from "../registry/Registry.sol";
9
- import {RegistryService} from "../registry/RegistryService.sol";
10
- import {REGISTRY} from "../type/ObjectType.sol";
11
7
 
12
8
  contract InstanceServiceManager is ProxyManager {
13
9
 
@@ -16,16 +12,15 @@ contract InstanceServiceManager is ProxyManager {
16
12
  /// @dev initializes proxy manager with instance service implementation
17
13
  constructor(
18
14
  address authority,
19
- address registryAddress,
15
+ address registry,
20
16
  bytes32 salt
21
17
  )
22
- ProxyManager(registryAddress)
23
18
  {
24
- InstanceService instSrv = new InstanceService{salt: salt}();
25
- // bytes memory initCode = type(InstanceService).creationCode;
26
- bytes memory data = abi.encode(registryAddress, address(this), authority);
27
- IVersionable versionable = deployDetermenistic(
28
- address(instSrv),
19
+ InstanceService svc = new InstanceService{salt: salt}();
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
29
24
  data,
30
25
  salt);
31
26
 
@@ -4,16 +4,13 @@ pragma solidity ^0.8.20;
4
4
  import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
5
 
6
6
  import {Amount} from "../type/Amount.sol";
7
- import {Key32, KeyId, Key32Lib} from "../type/Key32.sol";
7
+ import {Key32} from "../type/Key32.sol";
8
8
  import {NftId} from "../type/NftId.sol";
9
9
  import {ClaimId} from "../type/ClaimId.sol";
10
- import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT, DISTRIBUTOR, DISTRIBUTOR_TYPE} from "../type/ObjectType.sol";
10
+ import {ObjectType, BUNDLE, POLICY, POOL, PREMIUM, PRODUCT, COMPONENT, DISTRIBUTOR} from "../type/ObjectType.sol";
11
11
  import {RequestId} from "../type/RequestId.sol";
12
- import {RiskId, RiskIdLib} from "../type/RiskId.sol";
13
- import {RoleId, RoleIdLib, INSTANCE_ROLE, INSTANCE_OWNER_ROLE} from "../type/RoleId.sol";
14
- import {StateId, ACTIVE} from "../type/StateId.sol";
15
- import {TimestampLib} from "../type/Timestamp.sol";
16
- import {VersionPart, VersionPartLib} from "../type/Version.sol";
12
+ import {RiskId} from "../type/RiskId.sol";
13
+ import {StateId} from "../type/StateId.sol";
17
14
  import {ReferralId} from "../type/Referral.sol";
18
15
  import {DistributorType} from "../type/DistributorType.sol";
19
16
  import {PayoutId} from "../type/PayoutId.sol";
@@ -21,7 +18,6 @@ import {PayoutId} from "../type/PayoutId.sol";
21
18
  import {BalanceStore} from "./base/BalanceStore.sol";
22
19
  import {IInstance} from "./IInstance.sol";
23
20
  import {KeyValueStore} from "../shared/KeyValueStore.sol";
24
- import {IKeyValueStore} from "../shared/KeyValueStore.sol";
25
21
  import {ObjectCounter} from "./base/ObjectCounter.sol";
26
22
 
27
23
  import {IBundle} from "./module/IBundle.sol";
@@ -31,21 +27,28 @@ import {IPolicy} from "./module/IPolicy.sol";
31
27
  import {IOracle} from "../oracle/IOracle.sol";
32
28
  import {IRisk} from "./module/IRisk.sol";
33
29
 
30
+ import {ObjectLifecycle} from "./base/ObjectLifecycle.sol";
31
+
34
32
 
35
33
  contract InstanceStore is
36
34
  AccessManagedUpgradeable,
37
35
  BalanceStore,
38
36
  KeyValueStore,
39
- ObjectCounter
37
+ ObjectCounter,
38
+ ObjectLifecycle
40
39
  {
41
- function initialize(address instance)
40
+
41
+ /// @dev This initializer needs to be called from the instance itself.
42
+ function initialize()
42
43
  public
43
44
  initializer()
44
45
  {
46
+ address instance = msg.sender;
45
47
  address authority = IInstance(instance).authority();
46
- __AccessManaged_init(authority);
47
48
 
48
- initializeLifecycle();
49
+ __AccessManaged_init(authority);
50
+ // double initialization, safe
51
+ _initializeLifecycle();
49
52
  }
50
53
 
51
54
  //--- Component ---------------------------------------------------------//
@@ -82,10 +85,6 @@ contract InstanceStore is
82
85
  _update(_toNftKey32(productNftId, PRODUCT()), abi.encode(info), newState);
83
86
  }
84
87
 
85
- function updateProductSetupState(NftId productNftId, StateId newState) external restricted() {
86
- _updateState(_toNftKey32(productNftId, PRODUCT()), newState);
87
- }
88
-
89
88
  //--- Pool --------------------------------------------------------------//
90
89
 
91
90
  function createPool(
@@ -102,10 +101,6 @@ contract InstanceStore is
102
101
  _update(_toNftKey32(poolNftId, POOL()), abi.encode(info), newState);
103
102
  }
104
103
 
105
- function updatePoolState(NftId poolNftId, StateId newState) external restricted() {
106
- _updateState(_toNftKey32(poolNftId, POOL()), newState);
107
- }
108
-
109
104
  //--- DistributorType ---------------------------------------------------//
110
105
  function createDistributorType(DistributorType distributorType, IDistribution.DistributorTypeInfo memory info) external restricted() {
111
106
  _create(distributorType.toKey32(), abi.encode(info));
@@ -121,6 +116,7 @@ contract InstanceStore is
121
116
 
122
117
  //--- Distributor -------------------------------------------------------//
123
118
  function createDistributor(NftId distributorNftId, IDistribution.DistributorInfo memory info) external restricted() {
119
+ _registerBalanceTarget(distributorNftId);
124
120
  _create(_toNftKey32(distributorNftId, DISTRIBUTOR()), abi.encode(info));
125
121
  }
126
122
 
@@ -199,6 +195,16 @@ contract InstanceStore is
199
195
  _updateState(_toNftKey32(policyNftId, POLICY()), newState);
200
196
  }
201
197
 
198
+
199
+ //--- Premium (Policy) ----------------------------------------------//
200
+ function createPremium(NftId policyNftId, IPolicy.PremiumInfo memory premium) external restricted() {
201
+ _create(_toNftKey32(policyNftId, PREMIUM()), abi.encode(premium));
202
+ }
203
+
204
+ function updatePremiumState(NftId policyNftId, StateId newState) external restricted() {
205
+ _updateState(_toNftKey32(policyNftId, PREMIUM()), newState);
206
+ }
207
+
202
208
  //--- Claim -------------------------------------------------------------//
203
209
  function createClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim) external restricted() {
204
210
  _create(_toClaimKey32(policyNftId, claimId), abi.encode(claim));