@etherisc/gif-next 0.0.2-e769e2e-077 → 0.0.2-e79d227-681

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 (535) hide show
  1. package/README.md +77 -10
  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/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 +4 -0
  7. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  8. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
  10. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  12. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
  14. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  18. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1324 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +154 -546
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +380 -229
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +198 -96
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +186 -238
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +223 -47
  36. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  38. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1429 -0
  40. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  42. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1979 -0
  44. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  46. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1430 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1177 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1606 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2281 -0
  56. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  57. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +808 -0
  58. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +153 -86
  60. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  61. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +181 -119
  62. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  63. package/artifacts/contracts/instance/Instance.sol/Instance.json +174 -215
  64. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1666 -0
  66. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  67. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +574 -0
  68. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +876 -160
  70. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +260 -268
  72. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +163 -81
  74. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  75. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +506 -338
  76. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  77. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
  78. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  79. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  80. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  81. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  82. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  83. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  84. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  85. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  86. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  88. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  89. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  90. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  91. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  92. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  93. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  94. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  95. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  96. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  97. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  98. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +961 -0
  99. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  100. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
  101. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  102. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  103. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  104. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +776 -0
  105. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  106. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +709 -0
  107. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  108. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +877 -0
  109. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  110. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +990 -0
  111. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  112. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +766 -0
  113. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  114. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1254 -0
  115. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  116. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +502 -0
  117. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  118. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +456 -187
  119. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +218 -80
  121. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  122. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +264 -26
  123. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  124. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +115 -354
  125. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  126. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +464 -223
  127. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  128. package/artifacts/contracts/pool/Pool.sol/Pool.json +152 -682
  129. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  130. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +590 -382
  131. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  132. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +190 -76
  133. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  134. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +147 -161
  135. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  136. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +147 -77
  137. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  138. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1148 -0
  139. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  140. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
  141. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  142. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +343 -168
  143. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +200 -90
  145. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  146. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +88 -8
  147. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  148. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +196 -7
  149. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  150. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +364 -121
  151. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  152. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +134 -86
  153. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  154. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +176 -160
  155. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  156. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +51 -3
  157. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  158. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +475 -294
  159. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  160. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +199 -81
  161. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  162. package/artifacts/contracts/product/PricingService.sol/PricingService.json +229 -275
  163. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  164. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +172 -102
  165. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  166. package/artifacts/contracts/product/Product.sol/Product.json +201 -486
  167. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  168. package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
  169. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  170. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -0
  171. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  172. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  173. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  174. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +412 -35
  175. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  176. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +225 -196
  177. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  178. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  179. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  180. package/artifacts/contracts/registry/Registry.sol/Registry.json +761 -87
  181. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  182. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1899 -0
  183. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  184. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +278 -306
  185. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  186. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +154 -78
  187. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  188. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  189. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  190. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
  191. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  192. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  193. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  194. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +185 -135
  195. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  196. package/artifacts/contracts/shared/Component.sol/Component.json +79 -274
  197. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  198. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +626 -252
  199. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  200. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +209 -99
  201. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  202. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +55 -101
  203. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  204. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +488 -0
  205. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  206. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  207. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  208. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  209. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  210. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +74 -79
  211. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  212. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +561 -13
  213. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  214. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +120 -108
  215. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  216. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +45 -13
  217. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  218. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
  219. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  220. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +23 -1
  221. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
  223. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  224. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +36 -1
  225. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IService.sol/IService.json +49 -1
  228. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  229. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  230. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  231. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +129 -360
  232. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  233. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +55 -98
  234. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  235. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
  236. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  237. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  238. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  239. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +26 -55
  240. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  241. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
  242. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  243. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +62 -87
  244. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  245. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  246. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  247. package/artifacts/contracts/shared/Service.sol/Service.json +55 -101
  248. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  249. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +697 -25
  250. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  251. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  252. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  253. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  254. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  255. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +462 -634
  256. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  257. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +546 -48
  258. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  259. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  260. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  261. package/artifacts/contracts/staking/Staking.sol/Staking.json +613 -871
  262. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  263. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  264. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  265. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +185 -81
  266. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  267. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  268. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  269. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +633 -173
  270. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  271. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +166 -68
  272. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  273. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  274. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  275. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  276. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  277. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  278. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/Amount.sol/AmountLib.json +121 -4
  280. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +40 -2
  282. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  284. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  286. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  288. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  289. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  290. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  291. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  292. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +47 -4
  294. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  295. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  296. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +149 -2
  298. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  300. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  302. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  304. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +99 -5
  306. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
  308. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -2
  310. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  312. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  314. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  316. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  318. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
  320. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  322. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +71 -2
  324. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  326. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  328. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  329. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  330. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  331. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  332. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  333. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  334. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  335. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  336. package/contracts/authorization/AccessAdmin.sol +616 -0
  337. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  338. package/contracts/authorization/Authorization.sol +289 -0
  339. package/contracts/authorization/IAccess.sol +49 -0
  340. package/contracts/authorization/IAccessAdmin.sol +137 -0
  341. package/contracts/authorization/IAuthorization.sol +60 -0
  342. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  343. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  344. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  345. package/contracts/distribution/BasicDistribution.sol +139 -0
  346. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  347. package/contracts/distribution/Distribution.sol +145 -124
  348. package/contracts/distribution/DistributionService.sol +156 -99
  349. package/contracts/distribution/DistributionServiceManager.sol +13 -25
  350. package/contracts/distribution/IDistributionComponent.sol +27 -41
  351. package/contracts/distribution/IDistributionService.sol +29 -10
  352. package/contracts/examples/fire/DamageLevel.sol +59 -0
  353. package/contracts/examples/fire/FirePool.sol +86 -0
  354. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  355. package/contracts/examples/fire/FireProduct.sol +431 -0
  356. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  357. package/contracts/examples/fire/FireUSD.sol +26 -0
  358. package/contracts/examples/unpermissioned/SimpleDistribution.sol +58 -0
  359. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  360. package/contracts/examples/unpermissioned/SimplePool.sol +108 -0
  361. package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
  362. package/contracts/instance/BundleSet.sol +130 -0
  363. package/contracts/instance/IInstance.sol +39 -44
  364. package/contracts/instance/IInstanceService.sol +33 -42
  365. package/contracts/instance/Instance.sol +137 -124
  366. package/contracts/instance/InstanceAdmin.sol +278 -0
  367. package/contracts/instance/InstanceAuthorizationV3.sol +217 -0
  368. package/contracts/instance/InstanceReader.sol +249 -36
  369. package/contracts/instance/InstanceService.sol +227 -151
  370. package/contracts/instance/InstanceServiceManager.sol +14 -29
  371. package/contracts/instance/InstanceStore.sol +85 -57
  372. package/contracts/instance/RiskSet.sol +119 -0
  373. package/contracts/instance/base/BalanceStore.sol +12 -7
  374. package/contracts/instance/base/Cloneable.sol +2 -25
  375. package/contracts/instance/base/ObjectCounter.sol +21 -0
  376. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  377. package/contracts/instance/base/ObjectSet.sol +78 -0
  378. package/contracts/instance/module/IAccess.sol +2 -10
  379. package/contracts/instance/module/IBundle.sol +1 -1
  380. package/contracts/instance/module/IComponents.sol +11 -13
  381. package/contracts/instance/module/IDistribution.sol +0 -1
  382. package/contracts/instance/module/IPolicy.sol +26 -25
  383. package/contracts/instance/module/IRisk.sol +1 -0
  384. package/contracts/mock/Dip.sol +26 -0
  385. package/contracts/oracle/BasicOracle.sol +47 -0
  386. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  387. package/contracts/oracle/IOracle.sol +36 -0
  388. package/contracts/oracle/IOracleComponent.sol +33 -0
  389. package/contracts/oracle/IOracleService.sol +66 -0
  390. package/contracts/oracle/Oracle.sol +156 -0
  391. package/contracts/oracle/OracleService.sol +309 -0
  392. package/contracts/oracle/OracleServiceManager.sol +39 -0
  393. package/contracts/pool/BasicPool.sol +175 -0
  394. package/contracts/pool/BasicPoolAuthorization.sol +68 -0
  395. package/contracts/pool/BundleService.sol +232 -122
  396. package/contracts/pool/BundleServiceManager.sol +13 -25
  397. package/contracts/pool/IBundleService.sol +34 -18
  398. package/contracts/pool/IPoolComponent.sol +20 -70
  399. package/contracts/pool/IPoolService.sol +57 -51
  400. package/contracts/pool/Pool.sol +208 -162
  401. package/contracts/pool/PoolService.sol +372 -181
  402. package/contracts/pool/PoolServiceManager.sol +12 -24
  403. package/contracts/product/ApplicationService.sol +90 -84
  404. package/contracts/product/ApplicationServiceManager.sol +12 -9
  405. package/contracts/product/BasicProduct.sol +49 -0
  406. package/contracts/product/BasicProductAuthorization.sol +42 -0
  407. package/contracts/product/ClaimService.sol +331 -153
  408. package/contracts/product/ClaimServiceManager.sol +12 -9
  409. package/contracts/product/IApplicationService.sol +7 -3
  410. package/contracts/product/IClaimService.sol +35 -5
  411. package/contracts/product/IPolicyService.sol +47 -35
  412. package/contracts/product/IPricingService.sol +11 -11
  413. package/contracts/product/IProductComponent.sol +26 -9
  414. package/contracts/product/{IProductService.sol → IRiskService.sol} +2 -2
  415. package/contracts/product/PolicyService.sol +524 -262
  416. package/contracts/product/PolicyServiceManager.sol +12 -27
  417. package/contracts/product/PricingService.sol +64 -64
  418. package/contracts/product/PricingServiceManager.sol +12 -24
  419. package/contracts/product/Product.sol +189 -139
  420. package/contracts/product/{ProductService.sol → RiskService.sol} +35 -50
  421. package/contracts/product/RiskServiceManager.sol +39 -0
  422. package/contracts/registry/ChainNft.sol +68 -37
  423. package/contracts/registry/IRegistry.sol +90 -28
  424. package/contracts/registry/IRegistryService.sol +26 -43
  425. package/contracts/registry/ITransferInterceptor.sol +1 -2
  426. package/contracts/registry/Registry.sol +424 -228
  427. package/contracts/registry/RegistryAdmin.sol +451 -0
  428. package/contracts/registry/RegistryService.sol +63 -149
  429. package/contracts/registry/RegistryServiceManager.sol +23 -30
  430. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  431. package/contracts/registry/ReleaseRegistry.sol +485 -0
  432. package/contracts/registry/ServiceAuthorizationV3.sol +175 -0
  433. package/contracts/registry/TokenRegistry.sol +187 -59
  434. package/contracts/shared/Component.sol +56 -125
  435. package/contracts/shared/ComponentService.sol +411 -201
  436. package/contracts/shared/ComponentServiceManager.sol +10 -7
  437. package/contracts/shared/ComponentVerifyingService.sol +40 -23
  438. package/contracts/shared/ContractLib.sol +224 -0
  439. package/contracts/shared/IComponent.sol +11 -18
  440. package/contracts/shared/IComponentService.sol +52 -13
  441. package/contracts/shared/IInstanceLinkedComponent.sol +11 -16
  442. package/contracts/shared/IKeyValueStore.sol +2 -1
  443. package/contracts/shared/ILifecycle.sol +3 -2
  444. package/contracts/shared/INftOwnable.sol +3 -1
  445. package/contracts/shared/IPolicyHolder.sol +12 -17
  446. package/contracts/shared/IRegisterable.sol +11 -0
  447. package/contracts/shared/IService.sol +9 -2
  448. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -4
  449. package/contracts/shared/InstanceLinkedComponent.sol +103 -43
  450. package/contracts/shared/KeyValueStore.sol +30 -68
  451. package/contracts/shared/Lifecycle.sol +30 -63
  452. package/contracts/shared/NftIdSet.sol +65 -0
  453. package/contracts/shared/NftOwnable.sol +31 -22
  454. package/contracts/shared/PolicyHolder.sol +18 -50
  455. package/contracts/shared/Registerable.sol +19 -11
  456. package/contracts/shared/RegistryLinked.sol +9 -14
  457. package/contracts/shared/Service.sol +44 -37
  458. package/contracts/shared/TokenHandler.sol +358 -27
  459. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  460. package/contracts/staking/IStaking.sol +133 -37
  461. package/contracts/staking/IStakingService.sol +93 -41
  462. package/contracts/staking/StakeManagerLib.sol +224 -0
  463. package/contracts/staking/Staking.sol +394 -101
  464. package/contracts/staking/StakingLifecycle.sol +23 -0
  465. package/contracts/staking/StakingManager.sol +24 -18
  466. package/contracts/staking/StakingReader.sol +190 -0
  467. package/contracts/staking/StakingService.sol +282 -42
  468. package/contracts/staking/StakingServiceManager.sol +10 -7
  469. package/contracts/staking/StakingStore.sol +605 -0
  470. package/contracts/staking/TargetManagerLib.sol +211 -0
  471. package/contracts/type/AddressSet.sol +1 -1
  472. package/contracts/type/Amount.sol +39 -3
  473. package/contracts/type/Blocknumber.sol +20 -2
  474. package/contracts/type/ClaimId.sol +6 -1
  475. package/contracts/type/Fee.sol +1 -1
  476. package/contracts/type/Key32.sol +2 -2
  477. package/contracts/type/Key32Set.sol +62 -0
  478. package/contracts/type/NftId.sol +16 -4
  479. package/contracts/type/NftIdSet.sol +1 -1
  480. package/contracts/type/ObjectType.sol +178 -65
  481. package/contracts/type/PayoutId.sol +10 -10
  482. package/contracts/type/Referral.sol +2 -1
  483. package/contracts/type/RequestId.sol +75 -0
  484. package/contracts/type/RiskId.sol +31 -5
  485. package/contracts/type/RoleId.sol +98 -74
  486. package/contracts/type/Seconds.sol +48 -1
  487. package/contracts/type/Selector.sol +102 -0
  488. package/contracts/type/StateId.sol +41 -2
  489. package/contracts/type/String.sol +53 -0
  490. package/contracts/type/Timestamp.sol +17 -3
  491. package/contracts/type/UFixed.sol +38 -9
  492. package/contracts/type/Version.sol +4 -2
  493. package/contracts/{shared → upgradeability}/ProxyManager.sol +90 -27
  494. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  495. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  496. package/package.json +11 -7
  497. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  498. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  499. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  500. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  501. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  502. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -132
  503. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  504. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  505. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  506. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  507. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -673
  508. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  509. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -636
  510. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  511. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -308
  512. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  513. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -688
  514. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  515. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  516. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  517. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  518. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  519. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  520. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  521. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  522. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
  523. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  524. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  525. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  526. package/contracts/instance/BundleManager.sol +0 -126
  527. package/contracts/instance/InstanceAccessManager.sol +0 -543
  528. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -336
  529. package/contracts/instance/base/ObjectManager.sol +0 -82
  530. package/contracts/product/ProductServiceManager.sol +0 -54
  531. package/contracts/registry/RegistryAccessManager.sol +0 -213
  532. package/contracts/registry/ReleaseManager.sol +0 -375
  533. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  534. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
  535. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -4,15 +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, FEE, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT, DISTRIBUTOR, DISTRIBUTOR_TYPE} from "../type/ObjectType.sol";
11
- import {RiskId, RiskIdLib} from "../type/RiskId.sol";
12
- import {RoleId, RoleIdLib, INSTANCE_ROLE, INSTANCE_OWNER_ROLE} from "../type/RoleId.sol";
13
- import {StateId, ACTIVE} from "../type/StateId.sol";
14
- import {TimestampLib} from "../type/Timestamp.sol";
15
- import {VersionPart, VersionPartLib} from "../type/Version.sol";
10
+ import {ObjectType, BUNDLE, POLICY, POOL, PREMIUM, PRODUCT, COMPONENT, DISTRIBUTOR} from "../type/ObjectType.sol";
11
+ import {RequestId} from "../type/RequestId.sol";
12
+ import {RiskId} from "../type/RiskId.sol";
13
+ import {StateId} from "../type/StateId.sol";
16
14
  import {ReferralId} from "../type/Referral.sol";
17
15
  import {DistributorType} from "../type/DistributorType.sol";
18
16
  import {PayoutId} from "../type/PayoutId.sol";
@@ -20,30 +18,41 @@ import {PayoutId} from "../type/PayoutId.sol";
20
18
  import {BalanceStore} from "./base/BalanceStore.sol";
21
19
  import {IInstance} from "./IInstance.sol";
22
20
  import {KeyValueStore} from "../shared/KeyValueStore.sol";
23
- import {IKeyValueStore} from "../shared/KeyValueStore.sol";
21
+ import {ObjectCounter} from "./base/ObjectCounter.sol";
24
22
 
25
23
  import {IBundle} from "./module/IBundle.sol";
26
24
  import {IComponents} from "./module/IComponents.sol";
27
25
  import {IDistribution} from "./module/IDistribution.sol";
28
26
  import {IPolicy} from "./module/IPolicy.sol";
27
+ import {IOracle} from "../oracle/IOracle.sol";
29
28
  import {IRisk} from "./module/IRisk.sol";
30
29
 
30
+ import {ObjectLifecycle} from "./base/ObjectLifecycle.sol";
31
+
31
32
 
32
33
  contract InstanceStore is
33
34
  AccessManagedUpgradeable,
35
+ BalanceStore,
34
36
  KeyValueStore,
35
- BalanceStore
37
+ ObjectCounter,
38
+ ObjectLifecycle
36
39
  {
37
- function initialize(address instance)
40
+
41
+ /// @dev This initializer needs to be called from the instance itself.
42
+ function initialize()
38
43
  public
39
44
  initializer()
40
45
  {
46
+ address instance = msg.sender;
41
47
  address authority = IInstance(instance).authority();
48
+
42
49
  __AccessManaged_init(authority);
43
- initializeLifecycle();
50
+ // double initialization, safe
51
+ _initializeLifecycle();
44
52
  }
45
53
 
46
54
  //--- Component ---------------------------------------------------------//
55
+
47
56
  function createComponent(
48
57
  NftId componentNftId,
49
58
  IComponents.ComponentInfo memory componentInfo
@@ -51,8 +60,8 @@ contract InstanceStore is
51
60
  external
52
61
  restricted()
53
62
  {
54
- _registerTarget(componentNftId);
55
- create(_toNftKey32(componentNftId, COMPONENT()), abi.encode(componentInfo));
63
+ _registerBalanceTarget(componentNftId);
64
+ _create(_toNftKey32(componentNftId, COMPONENT()), abi.encode(componentInfo));
56
65
  }
57
66
 
58
67
  function updateComponent(
@@ -63,24 +72,20 @@ contract InstanceStore is
63
72
  external
64
73
  restricted()
65
74
  {
66
- update(_toNftKey32(componentNftId, COMPONENT()), abi.encode(componentInfo), newState);
75
+ _update(_toNftKey32(componentNftId, COMPONENT()), abi.encode(componentInfo), newState);
67
76
  }
68
77
 
69
- //--- ProductSetup ------------------------------------------------------//
78
+ //--- Product -----------------------------------------------------------//
70
79
 
71
80
  function createProduct(NftId productNftId, IComponents.ProductInfo memory info) external restricted() {
72
- create(_toNftKey32(productNftId, PRODUCT()), abi.encode(info));
81
+ _create(_toNftKey32(productNftId, PRODUCT()), abi.encode(info));
73
82
  }
74
83
 
75
84
  function updateProduct(NftId productNftId, IComponents.ProductInfo memory info, StateId newState) external restricted() {
76
- update(_toNftKey32(productNftId, PRODUCT()), abi.encode(info), newState);
77
- }
78
-
79
- function updateProductSetupState(NftId productNftId, StateId newState) external restricted() {
80
- updateState(_toNftKey32(productNftId, PRODUCT()), newState);
85
+ _update(_toNftKey32(productNftId, PRODUCT()), abi.encode(info), newState);
81
86
  }
82
87
 
83
- //--- PoolSetup ------------------------------------------------------//
88
+ //--- Pool --------------------------------------------------------------//
84
89
 
85
90
  function createPool(
86
91
  NftId poolNftId,
@@ -89,133 +94,156 @@ contract InstanceStore is
89
94
  external
90
95
  restricted()
91
96
  {
92
- create(_toNftKey32(poolNftId, POOL()), abi.encode(info));
97
+ _create(_toNftKey32(poolNftId, POOL()), abi.encode(info));
93
98
  }
94
99
 
95
100
  function updatePool(NftId poolNftId, IComponents.PoolInfo memory info, StateId newState) external restricted() {
96
- update(_toNftKey32(poolNftId, POOL()), abi.encode(info), newState);
97
- }
98
-
99
- function updatePoolState(NftId poolNftId, StateId newState) external restricted() {
100
- updateState(_toNftKey32(poolNftId, POOL()), newState);
101
+ _update(_toNftKey32(poolNftId, POOL()), abi.encode(info), newState);
101
102
  }
102
103
 
103
- //--- DistributorType -------------------------------------------------------//
104
+ //--- DistributorType ---------------------------------------------------//
104
105
  function createDistributorType(DistributorType distributorType, IDistribution.DistributorTypeInfo memory info) external restricted() {
105
- create(distributorType.toKey32(), abi.encode(info));
106
+ _create(distributorType.toKey32(), abi.encode(info));
106
107
  }
107
108
 
108
109
  function updateDistributorType(DistributorType distributorType, IDistribution.DistributorTypeInfo memory info, StateId newState) external restricted() {
109
- update(distributorType.toKey32(), abi.encode(info), newState);
110
+ _update(distributorType.toKey32(), abi.encode(info), newState);
110
111
  }
111
112
 
112
113
  function updateDistributorTypeState(DistributorType distributorType, StateId newState) external restricted() {
113
- updateState(distributorType.toKey32(), newState);
114
+ _updateState(distributorType.toKey32(), newState);
114
115
  }
115
116
 
116
117
  //--- Distributor -------------------------------------------------------//
117
118
  function createDistributor(NftId distributorNftId, IDistribution.DistributorInfo memory info) external restricted() {
118
- create(_toNftKey32(distributorNftId, DISTRIBUTOR()), abi.encode(info));
119
+ _registerBalanceTarget(distributorNftId);
120
+ _create(_toNftKey32(distributorNftId, DISTRIBUTOR()), abi.encode(info));
119
121
  }
120
122
 
121
123
  function updateDistributor(NftId distributorNftId, IDistribution.DistributorInfo memory info, StateId newState) external restricted() {
122
- update(_toNftKey32(distributorNftId, DISTRIBUTOR()), abi.encode(info), newState);
124
+ _update(_toNftKey32(distributorNftId, DISTRIBUTOR()), abi.encode(info), newState);
123
125
  }
124
126
 
125
127
  function updateDistributorState(NftId distributorNftId, StateId newState) external restricted() {
126
- updateState(_toNftKey32(distributorNftId, DISTRIBUTOR()), newState);
128
+ _updateState(_toNftKey32(distributorNftId, DISTRIBUTOR()), newState);
127
129
  }
128
130
 
129
131
  //--- Referral ----------------------------------------------------------//
130
132
  function createReferral(ReferralId referralId, IDistribution.ReferralInfo memory referralInfo) external restricted() {
131
- create(referralId.toKey32(), abi.encode(referralInfo));
133
+ _create(referralId.toKey32(), abi.encode(referralInfo));
132
134
  }
133
135
 
134
136
  function updateReferral(ReferralId referralId, IDistribution.ReferralInfo memory referralInfo, StateId newState) external restricted() {
135
- update(referralId.toKey32(), abi.encode(referralInfo), newState);
137
+ _update(referralId.toKey32(), abi.encode(referralInfo), newState);
136
138
  }
137
139
 
138
140
  function updateReferralState(ReferralId referralId, StateId newState) external restricted() {
139
- updateState(referralId.toKey32(), newState);
141
+ _updateState(referralId.toKey32(), newState);
140
142
  }
141
143
 
142
144
  //--- Bundle ------------------------------------------------------------//
143
145
  function createBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle) external restricted() {
144
- _registerTarget(bundleNftId);
145
- create(_toNftKey32(bundleNftId, BUNDLE()), abi.encode(bundle));
146
+ _registerBalanceTarget(bundleNftId);
147
+ _create(_toNftKey32(bundleNftId, BUNDLE()), abi.encode(bundle));
146
148
  }
147
149
 
148
150
  function updateBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle, StateId newState) external restricted() {
149
- update(_toNftKey32(bundleNftId, BUNDLE()), abi.encode(bundle), newState);
151
+ _update(_toNftKey32(bundleNftId, BUNDLE()), abi.encode(bundle), newState);
150
152
  }
151
153
 
152
154
  function updateBundleState(NftId bundleNftId, StateId newState) external restricted() {
153
- updateState(_toNftKey32(bundleNftId, BUNDLE()), newState);
155
+ _updateState(_toNftKey32(bundleNftId, BUNDLE()), newState);
154
156
  }
155
157
 
156
158
  //--- Risk --------------------------------------------------------------//
157
159
  function createRisk(RiskId riskId, IRisk.RiskInfo memory risk) external restricted() {
158
- create(riskId.toKey32(), abi.encode(risk));
160
+ _create(riskId.toKey32(), abi.encode(risk));
159
161
  }
160
162
 
161
163
  function updateRisk(RiskId riskId, IRisk.RiskInfo memory risk, StateId newState) external restricted() {
162
- update(riskId.toKey32(), abi.encode(risk), newState);
164
+ _update(riskId.toKey32(), abi.encode(risk), newState);
163
165
  }
164
166
 
165
167
  function updateRiskState(RiskId riskId, StateId newState) external restricted() {
166
- updateState(riskId.toKey32(), newState);
168
+ _updateState(riskId.toKey32(), newState);
167
169
  }
168
170
 
169
171
  //--- Application (Policy) ----------------------------------------------//
170
172
  function createApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy) external restricted() {
171
- create(_toNftKey32(applicationNftId, POLICY()), abi.encode(policy));
173
+ _registerBalanceTarget(applicationNftId);
174
+ _create(_toNftKey32(applicationNftId, POLICY()), abi.encode(policy));
172
175
  }
173
176
 
174
177
  function updateApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
175
- update(_toNftKey32(applicationNftId, POLICY()), abi.encode(policy), newState);
178
+ _update(_toNftKey32(applicationNftId, POLICY()), abi.encode(policy), newState);
176
179
  }
177
180
 
178
181
  function updateApplicationState(NftId applicationNftId, StateId newState) external restricted() {
179
- updateState(_toNftKey32(applicationNftId, POLICY()), newState);
182
+ _updateState(_toNftKey32(applicationNftId, POLICY()), newState);
180
183
  }
181
184
 
182
185
  //--- Policy ------------------------------------------------------------//
183
186
  function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
184
- update(_toNftKey32(policyNftId, POLICY()), abi.encode(policy), newState);
187
+ _update(_toNftKey32(policyNftId, POLICY()), abi.encode(policy), newState);
185
188
  }
186
189
 
187
190
  function updatePolicyClaims(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
188
- update(_toNftKey32(policyNftId, POLICY()), abi.encode(policy), newState);
191
+ _update(_toNftKey32(policyNftId, POLICY()), abi.encode(policy), newState);
189
192
  }
190
193
 
191
194
  function updatePolicyState(NftId policyNftId, StateId newState) external restricted() {
192
- updateState(_toNftKey32(policyNftId, POLICY()), newState);
195
+ _updateState(_toNftKey32(policyNftId, POLICY()), newState);
196
+ }
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);
193
206
  }
194
207
 
195
208
  //--- Claim -------------------------------------------------------------//
196
209
  function createClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim) external restricted() {
197
- create(_toClaimKey32(policyNftId, claimId), abi.encode(claim));
210
+ _create(_toClaimKey32(policyNftId, claimId), abi.encode(claim));
198
211
  }
199
212
 
200
213
  function updateClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim, StateId newState) external restricted() {
201
- update(_toClaimKey32(policyNftId, claimId), abi.encode(claim), newState);
214
+ _update(_toClaimKey32(policyNftId, claimId), abi.encode(claim), newState);
202
215
  }
203
216
 
204
217
  function updateClaimState(NftId policyNftId, ClaimId claimId, StateId newState) external restricted() {
205
- updateState(_toClaimKey32(policyNftId, claimId), newState);
218
+ _updateState(_toClaimKey32(policyNftId, claimId), newState);
206
219
  }
207
220
 
208
221
  //--- Payout ------------------------------------------------------------//
209
222
  function createPayout(NftId policyNftId, PayoutId payoutId, IPolicy.PayoutInfo memory payout) external restricted() {
210
- create(_toPayoutKey32(policyNftId, payoutId), abi.encode(payout));
223
+ _create(_toPayoutKey32(policyNftId, payoutId), abi.encode(payout));
211
224
  }
212
225
 
213
226
  function updatePayout(NftId policyNftId, PayoutId payoutId, IPolicy.PayoutInfo memory payout, StateId newState) external restricted() {
214
- update(_toPayoutKey32(policyNftId, payoutId), abi.encode(payout), newState);
227
+ _update(_toPayoutKey32(policyNftId, payoutId), abi.encode(payout), newState);
215
228
  }
216
229
 
217
230
  function updatePayoutState(NftId policyNftId, PayoutId payoutId, StateId newState) external restricted() {
218
- updateState(_toPayoutKey32(policyNftId, payoutId), newState);
231
+ _updateState(_toPayoutKey32(policyNftId, payoutId), newState);
232
+ }
233
+
234
+ //--- Request -----------------------------------------------------------//
235
+
236
+ function createRequest(IOracle.RequestInfo memory request) external restricted() returns (RequestId requestId) {
237
+ requestId = _createNextRequestId();
238
+ _create(requestId.toKey32(), abi.encode(request));
239
+ }
240
+
241
+ function updateRequest(RequestId requestId, IOracle.RequestInfo memory request, StateId newState) external restricted() {
242
+ _update(requestId.toKey32(), abi.encode(request), newState);
243
+ }
244
+
245
+ function updateRequestState(RequestId requestId, StateId newState) external restricted() {
246
+ _updateState(requestId.toKey32(), newState);
219
247
  }
220
248
 
221
249
  //--- balance and fee management functions ------------------------------//
@@ -0,0 +1,119 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IPolicy} from "../instance/module/IPolicy.sol";
5
+ import {Key32} from "../type/Key32.sol";
6
+ import {LibNftIdSet} from "../type/NftIdSet.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {RiskIdLib, RiskId} from "../type/RiskId.sol";
9
+
10
+ import {ObjectSet} from "./base/ObjectSet.sol";
11
+
12
+ contract RiskSet is
13
+ ObjectSet
14
+ {
15
+ using LibNftIdSet for LibNftIdSet.Set;
16
+
17
+ event LogRiskSetPolicyLinked(RiskId riskId, NftId policyNftId);
18
+ event LogRiskSetPolicyUnlinked(RiskId riskId, NftId policyNftId);
19
+
20
+ event LogRiskSetRiskAdded(NftId productNftId, RiskId riskId);
21
+ event LogRiskSetRiskActive(NftId poolNftId, RiskId riskId);
22
+ event LogRiskSetRiskPaused(NftId poolNftId, RiskId riskId);
23
+ event LogRiskSetRiskArchived(NftId poolNftId, RiskId riskId);
24
+
25
+ error ErrorRiskSetRiskLocked(RiskId riskId, NftId policyNftId);
26
+ error ErrorRiskSetRiskUnknown(RiskId riskId);
27
+ error ErrorRiskSetRiskNotRegistered(RiskId riskId);
28
+
29
+ mapping(RiskId riskId => LibNftIdSet.Set policies) internal _activePolicies;
30
+
31
+ /// @dev links a policy to its bundle
32
+ function linkPolicy(NftId productNftId, RiskId riskId, NftId policyNftId) external restricted() {
33
+
34
+ // ensure risk is active (in active set) and registered with this instance
35
+ if (!_isActive(productNftId, riskId.toKey32())) {
36
+ revert ErrorRiskSetRiskLocked(riskId, policyNftId);
37
+ }
38
+
39
+ _activePolicies[riskId].add(policyNftId);
40
+ emit LogRiskSetPolicyLinked(riskId, policyNftId);
41
+ }
42
+
43
+ /// @dev Unlinks a policy from its risk.
44
+ function unlinkPolicy(NftId productNftId, RiskId riskId, NftId policyNftId) external restricted() {
45
+
46
+ // ensure risk is registered with this instance
47
+ if (!_contains(productNftId, riskId.toKey32())) {
48
+ revert ErrorRiskSetRiskUnknown(riskId);
49
+ }
50
+
51
+ _activePolicies[riskId].remove(policyNftId);
52
+ emit LogRiskSetPolicyUnlinked(riskId, policyNftId);
53
+ }
54
+
55
+ /// @dev add a new risk to a product registered with this instance
56
+ // the corresponding product is fetched via instance reader
57
+ function add(RiskId riskId) external restricted() {
58
+ NftId productNftId = _instance.getInstanceReader().getRiskInfo(riskId).productNftId;
59
+
60
+ // ensure product is registered with instance
61
+ if(productNftId.eqz()) {
62
+ revert ErrorRiskSetRiskNotRegistered(riskId);
63
+ }
64
+
65
+ _add(productNftId, riskId.toKey32());
66
+ emit LogRiskSetRiskAdded(productNftId, riskId);
67
+ }
68
+
69
+ /// @dev Applications linked to active risks may be underwritten
70
+ function activate(RiskId riskId) external restricted() {
71
+ NftId productNftId = _instance.getInstanceReader().getRiskInfo(riskId).productNftId;
72
+ _activate(productNftId, riskId.toKey32());
73
+ emit LogRiskSetRiskActive(productNftId, riskId);
74
+ }
75
+
76
+ /// @dev Applications linked to paused/archived risks may not be underwritten
77
+ function pause(RiskId riskId) external restricted() {
78
+ NftId productNftId = _instance.getInstanceReader().getRiskInfo(riskId).productNftId;
79
+ _deactivate(productNftId, riskId.toKey32());
80
+ emit LogRiskSetRiskPaused(productNftId, riskId);
81
+ }
82
+
83
+ function checkRisk(NftId productNftId, RiskId riskId)
84
+ public
85
+ view
86
+ returns (bool exists, bool active)
87
+ {
88
+ Key32 riskKey32 = riskId.toKey32();
89
+ exists = _contains(productNftId, riskKey32);
90
+
91
+ if (exists) {
92
+ active = _isActive(productNftId, riskKey32);
93
+ }
94
+ }
95
+
96
+ function risks(NftId productNftId) external view returns(uint256) {
97
+ return _objects(productNftId);
98
+ }
99
+
100
+ function getRiskId(NftId productNftId, uint256 idx) external view returns(RiskId riskId) {
101
+ return RiskIdLib.toRiskId(_getObject(productNftId, idx).toKeyId());
102
+ }
103
+
104
+ function activeRisks(NftId productNftId) external view returns(uint256) {
105
+ return _activeObjs(productNftId);
106
+ }
107
+
108
+ function getActiveRiskId(NftId productNftId, uint256 idx) external view returns(RiskId riskId) {
109
+ return RiskIdLib.toRiskId(_getActiveObject(productNftId, idx).toKeyId());
110
+ }
111
+
112
+ function linkedPolicies(RiskId riskId) external view returns(uint256) {
113
+ return _activePolicies[riskId].size();
114
+ }
115
+
116
+ function getLinkedPolicyNftId(RiskId riskId, uint256 idx) external view returns(NftId policyNftId) {
117
+ return _activePolicies[riskId].getElementAt(idx);
118
+ }
119
+ }
@@ -54,13 +54,13 @@ contract BalanceStore {
54
54
  feeAmount = _feeAmount[targetNftId];
55
55
  }
56
56
 
57
- function _registerTarget(NftId targetNftId) internal {
57
+ function _registerBalanceTarget(NftId targetNftId) internal {
58
58
  if (_isRegistered[targetNftId]) {
59
59
  revert ErrorBalanceStoreTargetAlreadyRegistered(targetNftId);
60
60
  }
61
61
 
62
62
  _isRegistered[targetNftId] = true;
63
- _lastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
63
+ _setLastUpdatedIn(targetNftId);
64
64
 
65
65
  emit LogBalanceStoreTargetRegistered(targetNftId);
66
66
  }
@@ -71,7 +71,7 @@ contract BalanceStore {
71
71
  _feeAmount[targetNftId] = newBalance;
72
72
 
73
73
  emit LogBalanceStoreFeesIncreased(targetNftId, amount, newBalance, _lastUpdatedIn[targetNftId]);
74
- _lastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
74
+ _setLastUpdatedIn(targetNftId);
75
75
  }
76
76
 
77
77
  function _decreaseFees(NftId targetNftId, Amount amount) internal onlyRegisteredTarget(targetNftId) returns (Amount newBalance) {
@@ -79,7 +79,7 @@ contract BalanceStore {
79
79
  _feeAmount[targetNftId] = newBalance;
80
80
 
81
81
  emit LogBalanceStoreFeesDecreased(targetNftId, amount, newBalance, _lastUpdatedIn[targetNftId]);
82
- _lastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
82
+ _setLastUpdatedIn(targetNftId);
83
83
  }
84
84
 
85
85
  //--- locked management -------------------------------------------------//
@@ -88,7 +88,7 @@ contract BalanceStore {
88
88
  _lockedAmount[targetNftId] = newBalance;
89
89
 
90
90
  emit LogBalanceStoreLockedIncreased(targetNftId, amount, newBalance, _lastUpdatedIn[targetNftId]);
91
- _lastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
91
+ _setLastUpdatedIn(targetNftId);
92
92
  }
93
93
 
94
94
  function _decreaseLocked(NftId targetNftId, Amount amount) internal onlyRegisteredTarget(targetNftId) returns (Amount newBalance) {
@@ -96,7 +96,7 @@ contract BalanceStore {
96
96
  _lockedAmount[targetNftId] = newBalance;
97
97
 
98
98
  emit LogBalanceStoreLockedDecreased(targetNftId, amount, newBalance, _lastUpdatedIn[targetNftId]);
99
- _lastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
99
+ _setLastUpdatedIn(targetNftId);
100
100
  }
101
101
 
102
102
  //--- balance management ------------------------------------------------//
@@ -105,7 +105,7 @@ contract BalanceStore {
105
105
  _balanceAmount[targetNftId] = newBalance;
106
106
 
107
107
  emit LogBalanceStoreBalanceIncreased(targetNftId, amount, newBalance, _lastUpdatedIn[targetNftId]);
108
- _lastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
108
+ _setLastUpdatedIn(targetNftId);
109
109
  }
110
110
 
111
111
  function _decreaseBalance(NftId targetNftId, Amount amount) internal onlyRegisteredTarget(targetNftId) returns (Amount newBalance) {
@@ -113,6 +113,11 @@ contract BalanceStore {
113
113
  _balanceAmount[targetNftId] = newBalance;
114
114
 
115
115
  emit LogBalanceStoreBalanceDecreased(targetNftId, amount, newBalance, _lastUpdatedIn[targetNftId]);
116
+ _setLastUpdatedIn(targetNftId);
117
+ }
118
+
119
+ //--- internal/private functions ----------------------------------------//
120
+ function _setLastUpdatedIn(NftId targetNftId) internal {
116
121
  _lastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
117
122
  }
118
123
  }
@@ -2,47 +2,24 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
- import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
6
5
 
7
6
  import {IRegistry} from "../../registry/IRegistry.sol";
8
7
 
9
8
  abstract contract Cloneable is
10
9
  AccessManagedUpgradeable
11
10
  {
12
- event CloneableInitialized(address authority, address registry);
13
-
14
- error CloneableAuthorityZero();
15
- error CloneableRegistryInvalid(address registry);
16
-
17
11
  IRegistry internal _registry;
18
12
 
19
- constructor() {
20
- _registry = IRegistry(address(0));
21
- }
22
-
23
13
  /// @dev call to initialize MUST be made in the same transaction as cloning of the contract
24
- function initialize(
14
+ function __Cloneable_init(
25
15
  address authority,
26
16
  address registry
27
17
  )
28
- public
18
+ internal
29
19
  onlyInitializing
30
20
  {
31
- // check/handle access managed
32
- if(authority == address(0)) {
33
- revert CloneableAuthorityZero();
34
- }
35
-
36
21
  __AccessManaged_init(authority);
37
-
38
- // check/handle registry
39
- if (registry.code.length == 0) {
40
- revert CloneableRegistryInvalid(registry);
41
- }
42
-
43
22
  _registry = IRegistry(registry);
44
-
45
- emit CloneableInitialized(authority, registry);
46
23
  }
47
24
 
48
25
  function getRegistry() external view returns (IRegistry) {
@@ -0,0 +1,21 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Blocknumber, BlocknumberLib} from "../../type/Blocknumber.sol";
5
+ import {NftId} from "../../type/NftId.sol";
6
+ import {Amount} from "../../type/Amount.sol";
7
+ import {RequestId, RequestIdLib} from "../../type/RequestId.sol";
8
+
9
+ contract ObjectCounter {
10
+
11
+ // TODO refactor risk id
12
+ // mapping(NftId productNftId => uint64 risks) private _riskCounter;
13
+
14
+ uint256 private _requestCounter;
15
+
16
+ // TODO introduce RequestId (uint64)
17
+ function _createNextRequestId() internal returns (RequestId requestId) {
18
+ _requestCounter++;
19
+ requestId = RequestIdLib.toRequestId(_requestCounter);
20
+ }
21
+ }
@@ -0,0 +1,111 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
+
6
+ import {COMPONENT, BUNDLE, POLICY, REQUEST, RISK, CLAIM, PAYOUT, POOL, PREMIUM, PRODUCT, DISTRIBUTION, DISTRIBUTOR, DISTRIBUTOR_TYPE, REFERRAL} from "../../type/ObjectType.sol";
7
+ import {ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, COLLATERALIZED, REVOKED, SUBMITTED, CONFIRMED, DECLINED, EXPECTED, PAID, FULFILLED, FAILED, CANCELLED} from "../../type/StateId.sol";
8
+ import {Lifecycle} from "../../shared/Lifecycle.sol";
9
+
10
+ contract ObjectLifecycle is
11
+ Lifecycle,
12
+ Initializable
13
+ {
14
+ function _initializeLifecycle() internal onlyInitializing
15
+ {
16
+ _setupLifecycle();
17
+ }
18
+
19
+ function _setupLifecycle()
20
+ internal
21
+ override
22
+ {
23
+ _setupBundleLifecycle();
24
+ _setupComponentLifecycle();
25
+ _setupPolicyLifecycle();
26
+ _setupPremiumLifecycle();
27
+ _setupClaimLifecycle();
28
+ _setupPayoutLifecycle();
29
+ _setupRiskLifecycle();
30
+ _setupRequestLifecycle();
31
+
32
+ // setup dummy lifecycles to manage with key value store
33
+ _setUpPoolLifecycle();
34
+ _setUpProductLifecycle();
35
+ _setUpDistributionLifecycle();
36
+ }
37
+
38
+ function _setupComponentLifecycle() private {
39
+ setInitialState(COMPONENT(), ACTIVE());
40
+ setStateTransition(COMPONENT(), ACTIVE(), PAUSED());
41
+ setStateTransition(COMPONENT(), PAUSED(), ACTIVE());
42
+ setStateTransition(COMPONENT(), PAUSED(), ARCHIVED());
43
+ }
44
+
45
+ function _setupBundleLifecycle() private {
46
+ setInitialState(BUNDLE(), ACTIVE());
47
+ setStateTransition(BUNDLE(), ACTIVE(), PAUSED());
48
+ setStateTransition(BUNDLE(), ACTIVE(), CLOSED());
49
+ setStateTransition(BUNDLE(), PAUSED(), ACTIVE());
50
+ setStateTransition(BUNDLE(), PAUSED(), CLOSED());
51
+ }
52
+
53
+ function _setupPolicyLifecycle() private {
54
+ setInitialState(POLICY(), APPLIED());
55
+ setStateTransition(POLICY(), APPLIED(), REVOKED());
56
+ setStateTransition(POLICY(), APPLIED(), DECLINED());
57
+ setStateTransition(POLICY(), APPLIED(), COLLATERALIZED());
58
+ setStateTransition(POLICY(), COLLATERALIZED(), CLOSED());
59
+ }
60
+
61
+ function _setupPremiumLifecycle() private {
62
+ setInitialState(PREMIUM(), EXPECTED());
63
+ setStateTransition(PREMIUM(), EXPECTED(), PAID());
64
+ }
65
+
66
+ function _setupClaimLifecycle() private {
67
+ setInitialState(CLAIM(), SUBMITTED());
68
+ setStateTransition(CLAIM(), SUBMITTED(), CONFIRMED());
69
+ setStateTransition(CLAIM(), SUBMITTED(), DECLINED());
70
+ setStateTransition(CLAIM(), CONFIRMED(), CLOSED());
71
+ }
72
+
73
+ function _setupPayoutLifecycle() private {
74
+ setInitialState(PAYOUT(), EXPECTED());
75
+ // TODO: add state cancelled
76
+ setStateTransition(PAYOUT(), EXPECTED(), PAID());
77
+ }
78
+
79
+ function _setupRiskLifecycle() private {
80
+ setInitialState(RISK(), ACTIVE());
81
+ setStateTransition(RISK(), ACTIVE(), PAUSED());
82
+ setStateTransition(RISK(), PAUSED(), ACTIVE());
83
+ setStateTransition(RISK(), PAUSED(), ARCHIVED());
84
+ }
85
+
86
+ function _setupRequestLifecycle() private {
87
+ setInitialState(REQUEST(), ACTIVE());
88
+ setStateTransition(REQUEST(), ACTIVE(), FULFILLED());
89
+ setStateTransition(REQUEST(), ACTIVE(), FAILED());
90
+ setStateTransition(REQUEST(), FAILED(), FULFILLED());
91
+ setStateTransition(REQUEST(), ACTIVE(), CANCELLED());
92
+ }
93
+
94
+ // dummy lifecycle only
95
+ function _setUpPoolLifecycle() private {
96
+ setInitialState(POOL(), ACTIVE());
97
+ }
98
+
99
+ // dummy lifecycle only
100
+ function _setUpProductLifecycle() private {
101
+ setInitialState(PRODUCT(), ACTIVE());
102
+ }
103
+
104
+ // dummy lifecycles only
105
+ function _setUpDistributionLifecycle() private {
106
+ setInitialState(DISTRIBUTION(), ACTIVE());
107
+ setInitialState(DISTRIBUTOR(), ACTIVE());
108
+ setInitialState(DISTRIBUTOR_TYPE(), ACTIVE());
109
+ setInitialState(REFERRAL(), ACTIVE());
110
+ }
111
+ }