@etherisc/gif-next 0.0.2-e769e2e-077 → 0.0.2-e7a5428-226

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 (577) hide show
  1. package/README.md +133 -10
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1664 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1372 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1244 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +146 -607
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +767 -301
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +288 -118
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +152 -273
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +553 -77
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1484 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2053 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1439 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2585 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +595 -96
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +497 -75
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +617 -250
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2349 -0
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +902 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1789 -713
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +509 -220
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +204 -96
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1109 -817
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  98. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  100. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  105. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  106. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  107. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +957 -0
  109. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -0
  111. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  113. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  117. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +873 -0
  119. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  121. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +810 -0
  123. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1242 -0
  125. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  127. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +582 -235
  129. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +278 -96
  131. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +398 -49
  133. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +151 -394
  135. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +770 -365
  137. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  138. package/artifacts/contracts/pool/Pool.sol/Pool.json +148 -682
  139. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +940 -518
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +283 -97
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +382 -166
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +222 -92
  149. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1159 -0
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +502 -230
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +251 -113
  157. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +320 -9
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +369 -18
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +436 -101
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +202 -80
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +291 -264
  167. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  168. package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +295 -150
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +564 -292
  171. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +259 -97
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.json +262 -299
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +220 -122
  179. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  180. package/artifacts/contracts/product/Product.sol/Product.json +322 -596
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  185. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  186. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  187. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  188. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +454 -42
  189. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  190. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +275 -193
  191. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  192. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  193. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  194. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  195. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  196. package/artifacts/contracts/registry/Registry.sol/Registry.json +806 -97
  197. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  198. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2147 -0
  199. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  200. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1061 -0
  201. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  202. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +320 -312
  203. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  204. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +206 -94
  205. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  206. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  207. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  208. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  209. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  210. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  211. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  212. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  213. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  214. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +257 -147
  215. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  216. package/artifacts/contracts/shared/Component.sol/Component.json +92 -277
  217. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  218. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +632 -542
  219. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  220. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +241 -115
  221. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  229. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +99 -94
  231. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +549 -228
  233. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +138 -130
  235. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  236. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +51 -19
  237. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  238. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
  239. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  240. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +42 -1
  241. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  242. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
  243. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +173 -0
  245. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  246. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  247. package/artifacts/contracts/shared/IService.sol/IService.json +103 -2
  248. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  249. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  250. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  251. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +131 -366
  252. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  253. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +61 -104
  254. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  255. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
  256. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  257. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  258. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  259. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +45 -55
  260. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  261. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
  262. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  263. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +148 -98
  264. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  265. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  266. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  267. package/artifacts/contracts/shared/Service.sol/Service.json +96 -102
  268. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  269. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  272. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  273. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  274. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  275. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1388 -635
  276. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  277. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +705 -103
  278. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  279. package/artifacts/contracts/staking/Staking.sol/Staking.json +1703 -957
  280. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  281. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  282. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  283. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  284. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  285. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +274 -92
  286. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +544 -0
  288. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  289. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +751 -212
  290. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  291. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +215 -85
  292. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2637 -0
  294. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  295. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +657 -0
  296. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  297. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  298. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/Amount.sol/AmountLib.json +122 -5
  300. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +81 -17
  302. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  304. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  306. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  308. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Fee.sol/FeeLib.json +98 -37
  310. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  312. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  313. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  314. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +47 -4
  316. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  317. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  318. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +153 -4
  320. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  322. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  324. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  326. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  328. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +121 -23
  330. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +167 -2
  332. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  334. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  336. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  337. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  338. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
  340. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  341. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +37 -5
  342. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  343. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +126 -33
  344. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  346. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  347. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +120 -2
  348. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  349. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
  350. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  351. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  352. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  353. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  354. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  355. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
  356. package/contracts/accounting/AccountingService.sol +274 -0
  357. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  358. package/contracts/accounting/IAccountingService.sol +47 -0
  359. package/contracts/authorization/AccessAdmin.sol +780 -0
  360. package/contracts/authorization/AccessAdminLib.sol +396 -0
  361. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  362. package/contracts/authorization/Authorization.sol +169 -0
  363. package/contracts/authorization/IAccess.sol +67 -0
  364. package/contracts/authorization/IAccessAdmin.sol +144 -0
  365. package/contracts/authorization/IAuthorization.sol +26 -0
  366. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  367. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  368. package/contracts/distribution/BasicDistribution.sol +141 -0
  369. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  370. package/contracts/distribution/Distribution.sol +126 -142
  371. package/contracts/distribution/DistributionService.sol +288 -137
  372. package/contracts/distribution/DistributionServiceManager.sol +13 -25
  373. package/contracts/distribution/IDistributionComponent.sol +22 -43
  374. package/contracts/distribution/IDistributionService.sol +61 -27
  375. package/contracts/examples/fire/DamageLevel.sol +59 -0
  376. package/contracts/examples/fire/FirePool.sol +86 -0
  377. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  378. package/contracts/examples/fire/FireProduct.sol +433 -0
  379. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  380. package/contracts/examples/fire/FireUSD.sol +26 -0
  381. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  382. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  383. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  384. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  385. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  386. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  387. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  388. package/contracts/instance/BundleSet.sol +130 -0
  389. package/contracts/instance/IInstance.sol +117 -49
  390. package/contracts/instance/IInstanceService.sol +80 -46
  391. package/contracts/instance/Instance.sol +252 -133
  392. package/contracts/instance/InstanceAdmin.sol +383 -0
  393. package/contracts/instance/InstanceAuthorizationV3.sol +266 -0
  394. package/contracts/instance/InstanceReader.sol +499 -233
  395. package/contracts/instance/InstanceService.sol +370 -218
  396. package/contracts/instance/InstanceServiceManager.sol +14 -29
  397. package/contracts/instance/InstanceStore.sol +94 -55
  398. package/contracts/instance/RiskSet.sol +126 -0
  399. package/contracts/instance/base/BalanceStore.sol +16 -13
  400. package/contracts/instance/base/Cloneable.sol +2 -25
  401. package/contracts/instance/base/ObjectCounter.sol +20 -0
  402. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  403. package/contracts/instance/base/ObjectSet.sol +77 -0
  404. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  405. package/contracts/instance/module/IBundle.sol +6 -5
  406. package/contracts/instance/module/IComponents.sol +30 -20
  407. package/contracts/instance/module/IDistribution.sol +21 -9
  408. package/contracts/instance/module/IPolicy.sol +50 -29
  409. package/contracts/instance/module/IRisk.sol +5 -0
  410. package/contracts/mock/Dip.sol +26 -0
  411. package/contracts/oracle/BasicOracle.sol +45 -0
  412. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  413. package/contracts/oracle/IOracle.sol +41 -0
  414. package/contracts/oracle/IOracleComponent.sol +33 -0
  415. package/contracts/oracle/IOracleService.sol +66 -0
  416. package/contracts/oracle/Oracle.sol +154 -0
  417. package/contracts/oracle/OracleService.sol +310 -0
  418. package/contracts/oracle/OracleServiceManager.sol +39 -0
  419. package/contracts/pool/BasicPool.sol +162 -0
  420. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  421. package/contracts/pool/BundleService.sol +225 -152
  422. package/contracts/pool/BundleServiceManager.sol +13 -25
  423. package/contracts/pool/IBundleService.sol +44 -34
  424. package/contracts/pool/IPoolComponent.sol +20 -70
  425. package/contracts/pool/IPoolService.sol +99 -76
  426. package/contracts/pool/Pool.sol +198 -164
  427. package/contracts/pool/PoolLib.sol +341 -0
  428. package/contracts/pool/PoolService.sol +448 -255
  429. package/contracts/pool/PoolServiceManager.sol +12 -24
  430. package/contracts/product/ApplicationService.sol +160 -86
  431. package/contracts/product/ApplicationServiceManager.sol +12 -9
  432. package/contracts/product/BasicProduct.sol +49 -0
  433. package/contracts/product/BasicProductAuthorization.sol +63 -0
  434. package/contracts/product/ClaimService.sol +389 -195
  435. package/contracts/product/ClaimServiceManager.sol +12 -9
  436. package/contracts/product/IApplicationService.sol +30 -4
  437. package/contracts/product/IClaimService.sol +52 -9
  438. package/contracts/product/IPolicyService.sol +62 -38
  439. package/contracts/product/IPricingService.sol +12 -11
  440. package/contracts/product/IProductComponent.sol +29 -9
  441. package/contracts/product/IRiskService.sol +48 -0
  442. package/contracts/product/PolicyService.sol +450 -276
  443. package/contracts/product/PolicyServiceLib.sol +139 -0
  444. package/contracts/product/PolicyServiceManager.sol +12 -27
  445. package/contracts/product/PricingService.sol +97 -91
  446. package/contracts/product/PricingServiceManager.sol +12 -24
  447. package/contracts/product/Product.sol +263 -147
  448. package/contracts/product/RiskService.sol +190 -0
  449. package/contracts/product/RiskServiceManager.sol +39 -0
  450. package/contracts/registry/ChainNft.sol +72 -39
  451. package/contracts/registry/IRegistry.sol +99 -38
  452. package/contracts/registry/IRegistryService.sol +26 -43
  453. package/contracts/registry/IRelease.sol +29 -0
  454. package/contracts/registry/ITransferInterceptor.sol +1 -2
  455. package/contracts/registry/Registry.sol +439 -232
  456. package/contracts/registry/RegistryAdmin.sol +188 -0
  457. package/contracts/registry/RegistryAuthorization.sol +309 -0
  458. package/contracts/registry/RegistryService.sol +66 -152
  459. package/contracts/registry/RegistryServiceManager.sol +23 -30
  460. package/contracts/registry/ReleaseAdmin.sol +195 -0
  461. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  462. package/contracts/registry/ReleaseRegistry.sol +525 -0
  463. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  464. package/contracts/registry/TokenRegistry.sol +211 -81
  465. package/contracts/shared/Component.sol +71 -143
  466. package/contracts/shared/ComponentService.sol +460 -369
  467. package/contracts/shared/ComponentServiceManager.sol +10 -7
  468. package/contracts/shared/ContractLib.sol +312 -0
  469. package/contracts/shared/IComponent.sol +7 -23
  470. package/contracts/shared/IComponentService.sol +51 -31
  471. package/contracts/shared/IInstanceLinkedComponent.sol +10 -26
  472. package/contracts/shared/IKeyValueStore.sol +3 -2
  473. package/contracts/shared/ILifecycle.sol +3 -2
  474. package/contracts/shared/INftOwnable.sol +5 -1
  475. package/contracts/shared/IPolicyHolder.sol +12 -17
  476. package/contracts/shared/IRegisterable.sol +22 -1
  477. package/contracts/shared/IService.sol +11 -6
  478. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +12 -4
  479. package/contracts/shared/InstanceLinkedComponent.sol +95 -46
  480. package/contracts/shared/KeyValueStore.sol +32 -70
  481. package/contracts/shared/Lifecycle.sol +30 -63
  482. package/contracts/shared/NftIdSet.sol +65 -0
  483. package/contracts/shared/NftOwnable.sol +35 -24
  484. package/contracts/shared/PolicyHolder.sol +19 -50
  485. package/contracts/shared/Registerable.sol +52 -21
  486. package/contracts/shared/RegistryLinked.sol +9 -14
  487. package/contracts/shared/Service.sol +32 -42
  488. package/contracts/shared/TokenHandler.sol +310 -26
  489. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  490. package/contracts/staking/IStaking.sol +229 -42
  491. package/contracts/staking/IStakingService.sol +98 -76
  492. package/contracts/staking/Staking.sol +633 -99
  493. package/contracts/staking/StakingLib.sol +195 -0
  494. package/contracts/staking/StakingLifecycle.sol +23 -0
  495. package/contracts/staking/StakingManager.sol +25 -20
  496. package/contracts/staking/StakingReader.sol +151 -0
  497. package/contracts/staking/StakingService.sol +174 -53
  498. package/contracts/staking/StakingServiceManager.sol +13 -8
  499. package/contracts/staking/StakingStore.sol +973 -0
  500. package/contracts/staking/TargetManagerLib.sol +211 -0
  501. package/contracts/type/AddressSet.sol +1 -1
  502. package/contracts/type/Amount.sol +43 -3
  503. package/contracts/type/Blocknumber.sol +34 -16
  504. package/contracts/type/ChainId.sol +101 -0
  505. package/contracts/type/ClaimId.sol +6 -1
  506. package/contracts/type/Fee.sol +9 -9
  507. package/contracts/type/Key32.sol +2 -2
  508. package/contracts/type/Key32Set.sol +62 -0
  509. package/contracts/type/NftId.sol +16 -4
  510. package/contracts/type/NftIdSet.sol +1 -1
  511. package/contracts/type/ObjectType.sol +204 -62
  512. package/contracts/type/PayoutId.sol +10 -10
  513. package/contracts/type/Referral.sol +2 -1
  514. package/contracts/type/RequestId.sol +75 -0
  515. package/contracts/type/RiskId.sol +39 -7
  516. package/contracts/type/RoleId.sol +122 -80
  517. package/contracts/type/Seconds.sol +62 -1
  518. package/contracts/type/Selector.sol +107 -0
  519. package/contracts/type/StateId.sol +41 -2
  520. package/contracts/type/String.sol +65 -0
  521. package/contracts/type/Timestamp.sol +20 -9
  522. package/contracts/type/UFixed.sol +62 -125
  523. package/contracts/type/Version.sol +58 -7
  524. package/contracts/{shared → upgradeability}/IVersionable.sol +3 -0
  525. package/contracts/{shared → upgradeability}/ProxyManager.sol +115 -38
  526. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  527. package/contracts/{shared → upgradeability}/Versionable.sol +8 -5
  528. package/package.json +12 -8
  529. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  530. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  531. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  532. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  533. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  534. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -132
  535. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  536. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  537. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  538. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -237
  539. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  540. package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -381
  541. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  542. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -673
  543. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  544. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -636
  545. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  546. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -308
  547. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  548. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -688
  549. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  550. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  551. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  552. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  553. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  554. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  555. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  556. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  557. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  558. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
  559. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  560. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  561. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  562. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  563. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  564. package/contracts/instance/BundleManager.sol +0 -126
  565. package/contracts/instance/InstanceAccessManager.sol +0 -543
  566. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -336
  567. package/contracts/instance/base/ObjectManager.sol +0 -82
  568. package/contracts/instance/module/IAccess.sol +0 -54
  569. package/contracts/product/IProductService.sol +0 -33
  570. package/contracts/product/ProductService.sol +0 -122
  571. package/contracts/product/ProductServiceManager.sol +0 -54
  572. package/contracts/registry/RegistryAccessManager.sol +0 -213
  573. package/contracts/registry/ReleaseManager.sol +0 -375
  574. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  575. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
  576. package/contracts/shared/ComponentVerifyingService.sol +0 -111
  577. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
@@ -5,18 +5,22 @@ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
 
6
6
  import {IRegistryLinked} from "./IRegistryLinked.sol";
7
7
  import {NftId} from "../type/NftId.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
8
9
 
9
10
  interface INftOwnable is
10
11
  IERC165,
11
12
  IRegistryLinked
12
13
  {
14
+ event LogNftOwnableNftLinkedToAddress(NftId nftId, address owner);
15
+
13
16
  error ErrorNftOwnableInitialOwnerZero();
14
17
  error ErrorNftOwnableNotOwner(address account);
18
+ error ErrorNftOwnableInvalidType(NftId nftId, ObjectType expectedObjectType);
15
19
 
16
20
  error ErrorNftOwnableAlreadyLinked(NftId nftId);
17
21
  error ErrorNftOwnableContractNotRegistered(address contractAddress);
18
22
 
19
- function linkToRegisteredNftId() external;
23
+ function linkToRegisteredNftId() external returns (NftId);
20
24
 
21
25
  function getNftId() external view returns (NftId);
22
26
  function getOwner() external view returns (address);
@@ -9,32 +9,27 @@ import {ClaimId} from "../type/ClaimId.sol";
9
9
  import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
10
10
  import {NftId} from "../type/NftId.sol";
11
11
  import {PayoutId} from "../type/PayoutId.sol";
12
+ import {Timestamp} from "../type/Timestamp.sol";
12
13
 
13
- /// @dev generic interface for contracts that need to hold policies and receive payouts
14
- /// GIF will notify policy holder contracts for policy creation and payout execution
14
+ /// @dev Generic interface for contracts that need to hold policies and receive payouts.
15
+ /// The framework notifies policy holder contracts for policy creation/expiry, claim confirmation and payout execution
15
16
  interface IPolicyHolder is
16
17
  IERC165,
17
18
  IERC721Receiver,
18
19
  IRegistryLinked
19
20
  {
20
21
 
21
- /// @dev callback function that will be called after successful policy activation
22
- /// active policies may open claims under the activated policy
23
- function policyActivated(NftId policyNftId) external;
22
+ /// @dev Callback function that will be called after successful policy activation.
23
+ /// Active policies may open claims under the activated policy.
24
+ function policyActivated(NftId policyNftId, Timestamp activatedAt) external;
24
25
 
25
- /// @dev callback function to indicate the specified policy has expired
26
- /// expired policies may no longer open claims
27
- /// it is optional for products to notifiy policy holder of expired claims
28
- function policyExpired(NftId policyNftId) external;
26
+ /// @dev Callback function to indicate the specified policy has expired.
27
+ /// expired policies no longer accept new claims.
28
+ function policyExpired(NftId policyNftId, Timestamp expiredAt) external;
29
29
 
30
- /// @dev callback function to notify the confirmation of the specified claim
31
- /// active policies may open claims under the activated policy
30
+ /// @dev Callback function to notify the confirmation of the specified claim.
32
31
  function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external;
33
32
 
34
- /// @dev callback function that will be called after a successful payout
35
- function payoutExecuted(NftId policyNftId, PayoutId payoutId, address beneficiary, Amount amount) external;
36
-
37
- /// @dev determines policy and claim specific beneficiary address
38
- /// returned address will override GIF default where the policy nft holder is treated as beneficiary
39
- function getBeneficiary(NftId policyNftId, ClaimId claimId) external view returns (address beneficiary);
33
+ /// @dev Callback function to notify the successful payout.
34
+ function payoutExecuted(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary) external;
40
35
  }
@@ -1,13 +1,34 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
+
4
6
  import {INftOwnable} from "./INftOwnable.sol";
7
+ import {IRelease} from "../registry/IRelease.sol";
5
8
  import {IRegistry} from "../registry/IRegistry.sol";
6
9
 
10
+ /// @title IRegisterable
11
+ /// @dev Marks contracts that are intended to be registered in the registry.
12
+ ///
7
13
  interface IRegisterable is
8
- INftOwnable
14
+ IAccessManaged,
15
+ INftOwnable,
16
+ IRelease
9
17
  {
18
+ // __Registerable_init
19
+ error ErrorAuthorityInvalid(address authority);
20
+
21
+ // onlyActive()
22
+ error ErrorRegisterableNotActive();
23
+
24
+ /// @dev Returns true iff this contract managed by its authority is active.
25
+ /// Queries the IAccessManaged.authority().
26
+ function isActive() external view returns (bool active);
10
27
 
28
+ /// @dev retuns the object info relevant for registering for this contract
29
+ /// IMPORTANT information returned by this function may only be used
30
+ /// before the contract is registered in the registry.
31
+ /// Once registered this information MUST only be accessed via the registry.
11
32
  function getInitialInfo()
12
33
  external
13
34
  view
@@ -1,18 +1,23 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
 
6
6
  import {IRegisterable} from "./IRegisterable.sol";
7
- import {IVersionable} from "./IVersionable.sol";
7
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
8
8
  import {ObjectType} from "../type/ObjectType.sol";
9
+ import {RoleId} from "../type/RoleId.sol";
9
10
 
10
11
  interface IService is
12
+ IAccessManaged,
11
13
  IRegisterable,
12
- IVersionable,
13
- IAccessManaged
14
+ IVersionable
14
15
  {
15
- error ErrorServiceNotImplemented();
16
-
16
+ /// @dev returns the domain for this service.
17
+ /// In any GIF release only one service for any given domain may be deployed.
17
18
  function getDomain() external pure returns(ObjectType serviceDomain);
19
+
20
+ /// @dev returns the GIF release specific role id.
21
+ /// These role ids are used to authorize service to service communication.
22
+ function getRoleId() external view returns(RoleId serviceRoleId);
18
23
  }
@@ -1,23 +1,31 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
  import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
6
6
 
7
- contract ERC165 is
7
+ contract InitializableERC165 is
8
8
  Initializable,
9
9
  IERC165
10
10
  {
11
11
  mapping(bytes4 => bool) private _isSupported;
12
12
 
13
13
  // @dev initializes with support for ERC165
14
- function initializeERC165() public onlyInitializing() {
14
+ function __ERC165_init() internal onlyInitializing() {
15
+ _initializeERC165();
16
+ }
17
+
18
+ function _initializeERC165() internal {
15
19
  _isSupported[type(IERC165).interfaceId] = true;
16
20
  }
17
21
 
18
22
  // @dev register support for provided interfaceId
19
23
  // includes initialization for ERC165_ID if not yet done
20
- function registerInterface(bytes4 interfaceId) public onlyInitializing() {
24
+ function _registerInterface(bytes4 interfaceId) internal onlyInitializing() {
25
+ _registerInterfaceNotInitializing(interfaceId);
26
+ }
27
+
28
+ function _registerInterfaceNotInitializing(bytes4 interfaceId) internal{
21
29
  _isSupported[interfaceId] = true;
22
30
  }
23
31
 
@@ -6,21 +6,21 @@ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessMana
6
6
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
7
7
  import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
8
8
 
9
+ import {Amount} from "../type/Amount.sol";
9
10
  import {Component} from "./Component.sol";
10
11
  import {IComponentService} from "./IComponentService.sol";
11
12
  import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
13
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
12
14
  import {IComponents} from "../instance/module/IComponents.sol";
13
15
  import {IInstanceService} from "../instance/IInstanceService.sol";
14
16
  import {IInstance} from "../instance/IInstance.sol";
15
- import {InstanceAccessManager} from "../instance/InstanceAccessManager.sol";
16
17
  import {InstanceReader} from "../instance/InstanceReader.sol";
17
18
  import {IRegistry} from "../registry/IRegistry.sol";
18
19
  import {NftId} from "../type/NftId.sol";
19
- import {ObjectType, COMPONENT, INSTANCE} from "../type/ObjectType.sol";
20
+ import {ObjectType, COMPONENT, INSTANCE, PRODUCT} from "../type/ObjectType.sol";
20
21
  import {VersionPart} from "../type/Version.sol";
21
- import {Registerable} from "../shared/Registerable.sol";
22
22
  import {RoleId, RoleIdLib} from "../type/RoleId.sol";
23
- import {IAccess} from "../instance/module/IAccess.sol";
23
+ import {IAccess} from "../authorization/IAccess.sol";
24
24
  import {TokenHandler} from "../shared/TokenHandler.sol";
25
25
  import {VersionPart} from "../type/Version.sol";
26
26
 
@@ -36,6 +36,29 @@ abstract contract InstanceLinkedComponent is
36
36
  struct InstanceLinkedComponentStorage {
37
37
  IInstance _instance; // instance for this component
38
38
  InstanceReader _instanceReader; // instance reader for this component
39
+ IAuthorization _initialAuthorization;
40
+ IComponentService _componentService;
41
+ }
42
+
43
+ /// @inheritdoc IInstanceLinkedComponent
44
+ function withdrawFees(Amount amount)
45
+ external
46
+ virtual
47
+ restricted()
48
+ onlyOwner()
49
+ returns (Amount withdrawnAmount)
50
+ {
51
+ return _withdrawFees(amount);
52
+ }
53
+
54
+ /// @inheritdoc IInstanceLinkedComponent
55
+ function getInstance() public view virtual override returns (IInstance instance) {
56
+ return _getInstanceLinkedComponentStorage()._instance;
57
+ }
58
+
59
+ /// @inheritdoc IInstanceLinkedComponent
60
+ function getAuthorization() external view virtual returns (IAuthorization authorization) {
61
+ return _getInstanceLinkedComponentStorage()._initialAuthorization;
39
62
  }
40
63
 
41
64
  function _getInstanceLinkedComponentStorage() private pure returns (InstanceLinkedComponentStorage storage $) {
@@ -44,75 +67,102 @@ abstract contract InstanceLinkedComponent is
44
67
  }
45
68
  }
46
69
 
47
- function initializeInstanceLinkedComponent(
70
+ function __InstanceLinkedComponent_init(
48
71
  address registry,
49
- NftId instanceNftId,
72
+ NftId parentNftId,
50
73
  string memory name,
51
- address token,
52
74
  ObjectType componentType,
75
+ IAuthorization authorization,
53
76
  bool isInterceptor,
54
77
  address initialOwner,
55
- bytes memory registryData, // writeonly data that will saved in the object info record of the registry
56
78
  bytes memory componentData // data that will saved with the component info in the instance store
57
79
  )
58
- public
80
+ internal
59
81
  virtual
60
82
  onlyInitializing()
61
83
  {
84
+ // validate registry, nft ids and get parent nft id
85
+ NftId instanceNftId = _checkAndGetInstanceNftId(
86
+ registry,
87
+ parentNftId,
88
+ componentType);
89
+
62
90
  // set and check linked instance
63
91
  InstanceLinkedComponentStorage storage $ = _getInstanceLinkedComponentStorage();
64
92
  $._instance = IInstance(
65
- IRegistry(registry).getObjectInfo(
66
- instanceNftId).objectAddress);
93
+ IRegistry(registry).getObjectAddress(instanceNftId));
67
94
 
68
- if(!$._instance.supportsInterface(type(IInstance).interfaceId)) {
69
- revert ErrorComponentNotInstance(instanceNftId);
70
- }
71
-
72
- initializeComponent(
73
- $._instance.authority(),
95
+ // set component specific parameters
96
+ __Component_init(
97
+ $._instance.authority(), // instance linked components need to point to instance admin
74
98
  registry,
75
- instanceNftId,
99
+ parentNftId,
76
100
  name,
77
- token,
78
101
  componentType,
79
102
  isInterceptor,
80
103
  initialOwner,
81
- registryData,
104
+ "", // registry data
82
105
  componentData);
83
106
 
84
- // set component state
107
+ // set instance linked specific parameters
85
108
  $._instanceReader = $._instance.getInstanceReader();
109
+ $._initialAuthorization = authorization;
110
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
86
111
 
87
- registerInterface(type(IAccessManaged).interfaceId);
88
- registerInterface(type(IInstanceLinkedComponent).interfaceId);
112
+ // register interfaces
113
+ _registerInterface(type(IInstanceLinkedComponent).interfaceId);
89
114
  }
90
115
 
91
- /// @dev for instance linked components the wallet address stored in the instance store.
92
- /// updating needs to go throug component service
93
- function _setWallet(address newWallet) internal virtual override onlyOwner {
94
- IComponentService(_getServiceAddress(COMPONENT())).setWallet(newWallet);
95
- }
96
116
 
97
- function lock() external onlyOwner {
98
- IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(true);
99
- }
100
-
101
- function unlock() external onlyOwner {
102
- IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(false);
117
+ function _checkAndGetInstanceNftId(
118
+ address registryAddress,
119
+ NftId parentNftId,
120
+ ObjectType componentType
121
+ )
122
+ internal
123
+ view
124
+ returns (NftId instanceNftId)
125
+ {
126
+ // if product, then parent is already instance
127
+ if (componentType == PRODUCT()) {
128
+ _checkAndGetRegistry(registryAddress, parentNftId, INSTANCE());
129
+ return parentNftId;
130
+ }
131
+
132
+ // if not product parent is product, and parent of product is instance
133
+ IRegistry registry = _checkAndGetRegistry(registryAddress, parentNftId, PRODUCT());
134
+ return registry.getParentNftId(parentNftId);
103
135
  }
104
136
 
105
- function getInstance() public view override returns (IInstance instance) {
106
- return _getInstanceLinkedComponentStorage()._instance;
137
+ /// @dev checks the and gets registry.
138
+ /// validates registry using a provided nft id and expected object type.
139
+ function _checkAndGetRegistry(
140
+ address registryAddress,
141
+ NftId objectNftId,
142
+ ObjectType requiredType
143
+ )
144
+ internal
145
+ view
146
+ returns (IRegistry registry)
147
+ {
148
+ registry = IRegistry(registryAddress);
149
+ IRegistry.ObjectInfo memory info = registry.getObjectInfo(objectNftId);
150
+
151
+ if (info.objectType != requiredType) {
152
+ revert ErrorInstanceLinkedComponentTypeMismatch(requiredType, info.objectType);
153
+ }
107
154
  }
108
155
 
109
- function getProductNftId() public view override returns (NftId productNftId) {
110
- return getComponentInfo().productNftId;
156
+
157
+ /// @dev for instance linked components the wallet address stored in the instance store.
158
+ /// updating needs to go throug component service
159
+ function _setWallet(address newWallet) internal virtual override onlyOwner {
160
+ IComponentService(_getServiceAddress(COMPONENT())).setWallet(newWallet);
111
161
  }
112
162
 
113
163
 
114
164
  function _getComponentInfo() internal virtual override view returns (IComponents.ComponentInfo memory info) {
115
- NftId componentNftId = getRegistry().getNftId(address(this));
165
+ NftId componentNftId = getRegistry().getNftIdForAddress(address(this));
116
166
 
117
167
  // if registered, attempt to return component info via instance reader
118
168
  if (componentNftId.gtz()) {
@@ -120,7 +170,7 @@ abstract contract InstanceLinkedComponent is
120
170
  info = _getInstanceReader().getComponentInfo(getNftId());
121
171
 
122
172
  // check if also registered with instance
123
- if (info.wallet != address(0)) {
173
+ if (address(info.tokenHandler) != address(0)) {
124
174
  return info;
125
175
  }
126
176
  }
@@ -135,11 +185,10 @@ abstract contract InstanceLinkedComponent is
135
185
  return _getInstanceLinkedComponentStorage()._instanceReader;
136
186
  }
137
187
 
138
-
139
- /// @dev returns the service address for the specified domain
140
- /// gets address via lookup from registry using the major version form the linked instance
141
- function _getServiceAddress(ObjectType domain) internal view returns (address service) {
142
- VersionPart majorVersion = _getInstanceLinkedComponentStorage()._instance.getMajorVersion();
143
- return getRegistry().getServiceAddress(domain, majorVersion);
188
+ function _withdrawFees(Amount amount)
189
+ internal
190
+ returns (Amount withdrawnAmount)
191
+ {
192
+ return _getInstanceLinkedComponentStorage()._componentService.withdrawFees(amount);
144
193
  }
145
194
  }
@@ -1,7 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Blocknumber, blockBlocknumber, zeroBlocknumber} from "../type/Blocknumber.sol";
4
+ import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
5
5
  import {Key32, KeyId, Key32Lib} from "../type/Key32.sol";
6
6
  import {NftId} from "../type/NftId.sol";
7
7
  import {ObjectType} from "../type/ObjectType.sol";
@@ -11,14 +11,14 @@ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
11
11
  import {Lifecycle} from "./Lifecycle.sol";
12
12
  import {IKeyValueStore} from "./IKeyValueStore.sol";
13
13
 
14
- contract KeyValueStore is
14
+ abstract contract KeyValueStore is
15
15
  Lifecycle,
16
16
  IKeyValueStore
17
17
  {
18
18
 
19
19
  mapping(Key32 key32 => Value value) private _value;
20
20
 
21
- function create(
21
+ function _create(
22
22
  Key32 key32,
23
23
  bytes memory data
24
24
  )
@@ -34,14 +34,16 @@ contract KeyValueStore is
34
34
  revert ErrorKeyValueStoreAlreadyCreated(key32, objectType);
35
35
  }
36
36
 
37
- address createdBy = msg.sender;
38
- Blocknumber blocknumber = blockBlocknumber();
39
- StateId initialState = hasLifecycle(objectType) ? getInitialState(objectType) : ACTIVE();
37
+ if(!hasLifecycle(objectType)) {
38
+ revert ErrorKeyValueStoreNoLifecycle(objectType);
39
+ }
40
+
41
+ Blocknumber blocknumber = BlocknumberLib.current();
42
+ StateId initialState = getInitialState(objectType);
40
43
 
41
44
  // set metadata
42
45
  metadata.objectType = objectType;
43
46
  metadata.state = initialState;
44
- metadata.updatedBy = createdBy;
45
47
  metadata.updatedIn = blocknumber;
46
48
  metadata.createdIn = blocknumber;
47
49
 
@@ -49,74 +51,34 @@ contract KeyValueStore is
49
51
  _value[key32].data = data;
50
52
 
51
53
  // solhint-disable-next-line avoid-tx-origin
52
- emit LogInfoCreated(key32.toObjectType(), key32.toKeyId(), initialState, createdBy, tx.origin);
54
+ emit LogInfoCreated(key32.toObjectType(), key32.toKeyId(), initialState, msg.sender, tx.origin);
53
55
  }
54
56
 
55
- function update(
57
+
58
+ function _update(
56
59
  Key32 key32,
57
60
  bytes memory data,
58
61
  StateId state
59
62
  )
60
63
  internal
61
64
  {
62
- if (state.eqz()) {
63
- revert ErrorKeyValueStoreStateZero(key32);
64
- }
65
-
66
- Metadata storage metadata = _value[key32].metadata;
67
- StateId stateOld = metadata.state;
68
- if (stateOld.eqz()) {
69
- revert ErrorKeyValueStoreNotExisting(key32);
70
- }
71
-
72
- // update data
73
- _value[key32].data = data;
74
-
75
- // update state
76
- if(state != KEEP_STATE()) {
77
- checkTransition(metadata.objectType, stateOld, state);
78
- metadata.state = state;
79
- }
80
-
81
- // update reest of metadata
82
- address updatedBy = msg.sender;
83
- Blocknumber lastUpdatedIn = metadata.updatedIn;
84
-
85
- metadata.updatedBy = updatedBy;
86
- metadata.updatedIn = blockBlocknumber();
87
-
88
- // create log entries
89
- // solhint-disable avoid-tx-origin
90
- emit LogStateUpdated(key32.toObjectType(), key32.toKeyId(), stateOld, state, updatedBy, tx.origin, lastUpdatedIn);
91
- emit LogInfoUpdated(key32.toObjectType(), key32.toKeyId(), state, updatedBy, tx.origin, lastUpdatedIn);
92
- // solhing-enable
93
- }
94
-
95
- function updateData(Key32 key32, bytes memory data)
96
- internal
97
- {
98
- Metadata storage metadata = _value[key32].metadata;
99
- StateId state = metadata.state;
100
- if (state.eqz()) {
101
- revert ErrorKeyValueStoreNotExisting(key32);
102
- }
65
+ // update state
66
+ Blocknumber lastUpdatedIn = _updateState(key32, state);
103
67
 
104
68
  // update data
105
69
  _value[key32].data = data;
106
70
 
107
- // update metadata
108
- address updatedBy = msg.sender;
109
- Blocknumber lastUpdatedIn = metadata.updatedIn;
110
- metadata.updatedBy = updatedBy;
111
- metadata.updatedIn = blockBlocknumber();
112
-
113
- // create log entry
114
71
  // solhint-disable-next-line avoid-tx-origin
115
- emit LogInfoUpdated(key32.toObjectType(), key32.toKeyId(), state, updatedBy, tx.origin, lastUpdatedIn);
72
+ emit LogInfoUpdated(key32.toObjectType(), key32.toKeyId(), state, msg.sender, tx.origin, lastUpdatedIn);
116
73
  }
117
74
 
118
- function updateState(Key32 key32, StateId state)
75
+
76
+ function _updateState(
77
+ Key32 key32,
78
+ StateId state
79
+ )
119
80
  internal
81
+ returns (Blocknumber lastUpdatedIn)
120
82
  {
121
83
  if (state.eqz()) {
122
84
  revert ErrorKeyValueStoreStateZero(key32);
@@ -124,23 +86,23 @@ contract KeyValueStore is
124
86
 
125
87
  Metadata storage metadata = _value[key32].metadata;
126
88
  StateId stateOld = metadata.state;
89
+ lastUpdatedIn = metadata.updatedIn;
90
+
127
91
  if (stateOld.eqz()) {
128
92
  revert ErrorKeyValueStoreNotExisting(key32);
129
93
  }
130
94
 
131
- // ensure state transistion is valid
132
- checkTransition(metadata.objectType, stateOld, state);
95
+ // update state
96
+ if(state != KEEP_STATE()) {
97
+ checkTransition(stateOld, metadata.objectType, stateOld, state);
98
+ metadata.state = state;
133
99
 
134
- // update metadata (and state)
135
- address updatedBy = msg.sender;
136
- Blocknumber lastUpdatedIn = metadata.updatedIn;
137
- metadata.state = state;
138
- metadata.updatedBy = updatedBy;
139
- metadata.updatedIn = blockBlocknumber();
100
+ // solhint-disable-next-line avoid-tx-origin
101
+ emit LogStateUpdated(key32.toObjectType(), key32.toKeyId(), stateOld, state, msg.sender, tx.origin, lastUpdatedIn);
102
+ }
140
103
 
141
- // create log entry
142
- // solhint-disable-next-line avoid-tx-origin
143
- emit LogStateUpdated(key32.toObjectType(), key32.toKeyId(), stateOld, state, updatedBy, tx.origin, lastUpdatedIn);
104
+ // update metadata
105
+ metadata.updatedIn = BlocknumberLib.current();
144
106
  }
145
107
 
146
108
  function exists(Key32 key32) public view returns (bool) {