@etherisc/gif-next 0.0.2-bc11089-132 → 0.0.2-bc7a257-709

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 (784) hide show
  1. package/README.md +138 -23
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1023 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +752 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1494 -0
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +673 -0
  14. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  16. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +615 -0
  18. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  19. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  20. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1224 -0
  22. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +382 -0
  24. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  26. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  27. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  28. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1225 -0
  30. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +644 -0
  32. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +930 -0
  34. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1596 -0
  36. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +876 -0
  38. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +829 -0
  40. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  41. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1071 -0
  42. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  44. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1461 -0
  46. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +644 -0
  48. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2018 -0
  50. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +644 -0
  52. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  53. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1404 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +644 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1152 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1628 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +644 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2405 -0
  66. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  67. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +644 -0
  68. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  69. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  70. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +420 -1308
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  73. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +456 -189
  74. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  75. package/artifacts/contracts/instance/Instance.sol/Instance.json +481 -2479
  76. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2036 -0
  78. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +716 -0
  80. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1665 -629
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +507 -444
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +350 -124
  86. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  87. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3784 -0
  88. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  89. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  90. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  92. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  93. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  94. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  96. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  98. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  100. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  101. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  102. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  104. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  105. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  106. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  107. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  108. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  109. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  110. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +938 -0
  112. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +632 -0
  114. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  116. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +753 -0
  118. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +733 -0
  120. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +854 -0
  122. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1013 -0
  124. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  125. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +772 -0
  126. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  127. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1231 -0
  128. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +644 -0
  130. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1277 -0
  132. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  133. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +808 -0
  134. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  135. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +880 -0
  136. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  137. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +886 -0
  138. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  139. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1230 -0
  140. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  141. package/artifacts/contracts/pool/Pool.sol/Pool.json +1006 -0
  142. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  143. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +472 -0
  144. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  145. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1606 -0
  146. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  147. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +824 -0
  148. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  149. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +895 -0
  150. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  151. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +748 -0
  152. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  153. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1140 -0
  154. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  155. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +644 -0
  156. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  157. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1512 -0
  158. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  159. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +856 -0
  160. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  161. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → product/IApplicationService.sol/IApplicationService.json} +277 -302
  162. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  163. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1064 -0
  164. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  165. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +981 -0
  166. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  167. package/artifacts/contracts/{instance/service/IBundleService.sol/IBundleService.json → product/IPricingService.sol/IPricingService.json} +315 -361
  168. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  169. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +997 -0
  170. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  171. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IRiskService.sol/IRiskService.json} +199 -185
  172. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  173. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1341 -0
  174. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  175. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +727 -0
  176. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +812 -0
  178. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  179. package/artifacts/contracts/product/PricingService.sol/PricingService.json +927 -0
  180. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  181. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +772 -0
  182. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  183. package/artifacts/contracts/product/Product.sol/Product.json +1098 -0
  184. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  185. package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
  186. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  187. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -0
  188. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  189. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  190. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  191. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +679 -114
  192. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  193. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +325 -229
  194. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  195. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  196. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  197. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  198. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  199. package/artifacts/contracts/registry/Registry.sol/Registry.json +1017 -150
  200. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  201. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2018 -0
  202. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  203. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
  204. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  205. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +312 -336
  206. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  207. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +341 -123
  208. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  209. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1954 -0
  210. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  211. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  212. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  213. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1337 -0
  214. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  215. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  216. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  217. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +352 -101
  218. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  219. package/artifacts/contracts/shared/Component.sol/Component.json +686 -0
  220. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1487 -0
  222. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +816 -0
  224. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  225. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +158 -142
  226. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +661 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  230. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  231. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  232. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  233. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  234. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  235. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/IComponent.sol/IComponent.json} +273 -183
  236. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  237. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1127 -0
  238. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  239. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +688 -0
  240. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  241. package/artifacts/contracts/{instance/IInstanceBase.sol/IInstanceBase.json → shared/IKeyValueStore.sol/IKeyValueStore.json} +96 -34
  242. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  243. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  244. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  245. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +46 -26
  246. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  247. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  248. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +143 -15
  250. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  251. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  252. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  253. package/artifacts/contracts/shared/IService.sol/IService.json +137 -159
  254. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  255. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  256. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  257. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +776 -0
  258. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  259. package/artifacts/contracts/{instance/base/IKeyValueStore.sol/IKeyValueStore.json → shared/KeyValueStore.sol/KeyValueStore.json} +129 -20
  260. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  261. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  262. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  263. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  264. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  265. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +81 -30
  266. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  267. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  268. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  269. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +159 -55
  270. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  271. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  272. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  273. package/artifacts/contracts/shared/Service.sol/Service.json +156 -171
  274. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  275. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +635 -8
  276. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  277. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  278. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  279. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  280. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  281. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1491 -0
  282. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  283. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1167 -0
  284. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  285. package/artifacts/contracts/staking/Staking.sol/Staking.json +1904 -0
  286. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  288. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  290. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +800 -0
  292. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +560 -0
  294. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1396 -0
  296. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  297. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +744 -0
  298. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  299. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2297 -0
  300. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  301. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +617 -0
  302. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  303. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  304. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  306. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  308. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  310. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  312. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  314. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  316. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  317. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  318. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  320. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  321. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  322. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +241 -0
  324. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  326. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  328. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  330. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  332. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +433 -0
  334. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  336. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  338. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  340. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  342. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  344. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  346. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  348. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  350. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  352. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  353. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  354. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  356. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  357. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  358. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  359. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  360. package/contracts/accounting/AccountingService.sol +261 -0
  361. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  362. package/contracts/accounting/IAccountingService.sol +45 -0
  363. package/contracts/authorization/AccessAdmin.sol +704 -0
  364. package/contracts/authorization/AccessAdminLib.sol +183 -0
  365. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  366. package/contracts/authorization/Authorization.sol +365 -0
  367. package/contracts/authorization/IAccess.sol +57 -0
  368. package/contracts/authorization/IAccessAdmin.sol +170 -0
  369. package/contracts/authorization/IAuthorization.sol +80 -0
  370. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  371. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  372. package/contracts/distribution/BasicDistribution.sol +141 -0
  373. package/contracts/distribution/BasicDistributionAuthorization.sol +60 -0
  374. package/contracts/distribution/Distribution.sol +244 -0
  375. package/contracts/distribution/DistributionService.sol +389 -0
  376. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  377. package/contracts/distribution/IDistributionComponent.sol +43 -0
  378. package/contracts/distribution/IDistributionService.sol +103 -0
  379. package/contracts/examples/fire/DamageLevel.sol +59 -0
  380. package/contracts/examples/fire/FirePool.sol +86 -0
  381. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  382. package/contracts/examples/fire/FireProduct.sol +433 -0
  383. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  384. package/contracts/examples/fire/FireUSD.sol +26 -0
  385. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  386. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  387. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  388. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  389. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  390. package/contracts/examples/unpermissioned/SimpleProduct.sol +373 -0
  391. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  392. package/contracts/instance/BundleSet.sol +130 -0
  393. package/contracts/instance/IInstance.sol +99 -55
  394. package/contracts/instance/IInstanceService.sol +71 -21
  395. package/contracts/instance/Instance.sol +220 -192
  396. package/contracts/instance/InstanceAdmin.sol +450 -0
  397. package/contracts/instance/InstanceAuthorizationV3.sol +235 -0
  398. package/contracts/instance/InstanceReader.sol +415 -80
  399. package/contracts/instance/InstanceService.sol +387 -228
  400. package/contracts/instance/InstanceServiceManager.sol +14 -32
  401. package/contracts/instance/InstanceStore.sol +298 -0
  402. package/contracts/instance/RiskSet.sol +118 -0
  403. package/contracts/instance/base/BalanceStore.sol +121 -0
  404. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  405. package/contracts/instance/base/ObjectCounter.sol +20 -0
  406. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  407. package/contracts/instance/base/ObjectSet.sol +77 -0
  408. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  409. package/contracts/instance/module/IBundle.sol +10 -9
  410. package/contracts/instance/module/IComponents.sol +62 -0
  411. package/contracts/instance/module/IDistribution.sol +25 -10
  412. package/contracts/instance/module/IPolicy.sol +81 -21
  413. package/contracts/instance/module/IRisk.sol +6 -1
  414. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  415. package/contracts/oracle/BasicOracle.sol +45 -0
  416. package/contracts/oracle/BasicOracleAuthorization.sol +37 -0
  417. package/contracts/oracle/IOracle.sol +41 -0
  418. package/contracts/oracle/IOracleComponent.sol +33 -0
  419. package/contracts/oracle/IOracleService.sol +66 -0
  420. package/contracts/oracle/Oracle.sol +154 -0
  421. package/contracts/oracle/OracleService.sol +310 -0
  422. package/contracts/oracle/OracleServiceManager.sol +39 -0
  423. package/contracts/pool/BasicPool.sol +173 -0
  424. package/contracts/pool/BasicPoolAuthorization.sol +76 -0
  425. package/contracts/pool/BundleService.sol +395 -0
  426. package/contracts/pool/BundleServiceManager.sol +39 -0
  427. package/contracts/pool/IBundleService.sol +115 -0
  428. package/contracts/pool/IPoolComponent.sol +62 -0
  429. package/contracts/pool/IPoolService.sol +165 -0
  430. package/contracts/pool/Pool.sol +343 -0
  431. package/contracts/pool/PoolLib.sol +309 -0
  432. package/contracts/pool/PoolService.sol +587 -0
  433. package/contracts/pool/PoolServiceManager.sol +39 -0
  434. package/contracts/product/ApplicationService.sol +278 -0
  435. package/contracts/product/ApplicationServiceManager.sol +38 -0
  436. package/contracts/product/BasicProduct.sol +49 -0
  437. package/contracts/product/BasicProductAuthorization.sol +56 -0
  438. package/contracts/product/ClaimService.sol +640 -0
  439. package/contracts/product/ClaimServiceManager.sol +38 -0
  440. package/contracts/product/IApplicationService.sol +69 -0
  441. package/contracts/product/IClaimService.sol +135 -0
  442. package/contracts/product/IPolicyService.sol +95 -0
  443. package/contracts/product/IPricingService.sol +40 -0
  444. package/contracts/product/IProductComponent.sol +62 -0
  445. package/contracts/product/IRiskService.sol +33 -0
  446. package/contracts/product/PolicyService.sol +640 -0
  447. package/contracts/product/PolicyServiceLib.sol +119 -0
  448. package/contracts/product/PolicyServiceManager.sol +39 -0
  449. package/contracts/product/PricingService.sol +309 -0
  450. package/contracts/product/PricingServiceManager.sol +39 -0
  451. package/contracts/product/Product.sol +467 -0
  452. package/contracts/product/RiskService.sol +154 -0
  453. package/contracts/product/RiskServiceManager.sol +39 -0
  454. package/contracts/registry/ChainNft.sol +82 -35
  455. package/contracts/registry/IRegistry.sol +126 -37
  456. package/contracts/registry/IRegistryService.sol +40 -28
  457. package/contracts/registry/IRelease.sol +29 -0
  458. package/contracts/registry/ITransferInterceptor.sol +1 -1
  459. package/contracts/registry/Registry.sol +555 -273
  460. package/contracts/registry/RegistryAdmin.sol +258 -0
  461. package/contracts/registry/RegistryAuthorization.sol +267 -0
  462. package/contracts/registry/RegistryService.sol +116 -233
  463. package/contracts/registry/RegistryServiceManager.sol +26 -53
  464. package/contracts/registry/ReleaseAdmin.sol +253 -0
  465. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  466. package/contracts/registry/ReleaseRegistry.sol +517 -0
  467. package/contracts/registry/ServiceAuthorizationV3.sol +332 -0
  468. package/contracts/registry/TokenRegistry.sol +264 -59
  469. package/contracts/shared/Component.sol +210 -0
  470. package/contracts/shared/ComponentService.sol +661 -0
  471. package/contracts/shared/ComponentServiceManager.sol +38 -0
  472. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  473. package/contracts/shared/ContractLib.sol +347 -0
  474. package/contracts/shared/IComponent.sol +58 -0
  475. package/contracts/shared/IComponentService.sol +110 -0
  476. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  477. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  478. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  479. package/contracts/shared/INftOwnable.sol +15 -12
  480. package/contracts/shared/IPolicyHolder.sol +35 -0
  481. package/contracts/shared/IRegisterable.sol +25 -5
  482. package/contracts/shared/IRegistryLinked.sol +11 -0
  483. package/contracts/shared/IService.sol +13 -5
  484. package/contracts/shared/InitializableERC165.sol +35 -0
  485. package/contracts/shared/InstanceLinkedComponent.sol +194 -0
  486. package/contracts/shared/KeyValueStore.sol +131 -0
  487. package/contracts/shared/Lifecycle.sol +88 -0
  488. package/contracts/shared/NftIdSet.sol +65 -0
  489. package/contracts/shared/NftOwnable.sol +75 -82
  490. package/contracts/shared/PolicyHolder.sol +62 -0
  491. package/contracts/shared/Registerable.sol +54 -38
  492. package/contracts/shared/RegistryLinked.sol +38 -0
  493. package/contracts/shared/Service.sol +43 -33
  494. package/contracts/shared/TokenHandler.sol +327 -12
  495. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  496. package/contracts/staking/IStaking.sol +179 -0
  497. package/contracts/staking/IStakingService.sol +175 -0
  498. package/contracts/staking/Staking.sol +546 -0
  499. package/contracts/staking/StakingLib.sol +281 -0
  500. package/contracts/staking/StakingLifecycle.sol +23 -0
  501. package/contracts/staking/StakingManager.sol +52 -0
  502. package/contracts/staking/StakingReader.sol +180 -0
  503. package/contracts/staking/StakingService.sol +467 -0
  504. package/contracts/staking/StakingServiceManager.sol +45 -0
  505. package/contracts/staking/StakingStore.sol +606 -0
  506. package/contracts/staking/TargetManagerLib.sol +211 -0
  507. package/contracts/{types → type}/AddressSet.sol +1 -1
  508. package/contracts/type/Amount.sol +150 -0
  509. package/contracts/{types → type}/Blocknumber.sol +27 -3
  510. package/contracts/type/ClaimId.sol +80 -0
  511. package/contracts/{types → type}/DistributorType.sol +2 -2
  512. package/contracts/type/Fee.sol +66 -0
  513. package/contracts/{types → type}/Key32.sol +2 -2
  514. package/contracts/type/Key32Set.sol +62 -0
  515. package/contracts/{types → type}/NftId.sol +28 -15
  516. package/contracts/{types → type}/NftIdSet.sol +2 -2
  517. package/contracts/type/ObjectType.sol +294 -0
  518. package/contracts/type/PayoutId.sol +82 -0
  519. package/contracts/{types → type}/Referral.sol +6 -1
  520. package/contracts/type/RequestId.sol +75 -0
  521. package/contracts/type/RiskId.sol +75 -0
  522. package/contracts/type/RoleId.sol +182 -0
  523. package/contracts/type/Seconds.sol +101 -0
  524. package/contracts/type/Selector.sol +107 -0
  525. package/contracts/{types → type}/StateId.sol +48 -4
  526. package/contracts/type/String.sol +53 -0
  527. package/contracts/{types → type}/Timestamp.sol +33 -19
  528. package/contracts/type/UFixed.sol +262 -0
  529. package/contracts/{types → type}/Version.sol +59 -7
  530. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  531. package/contracts/upgradeability/ProxyManager.sol +234 -0
  532. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +8 -4
  533. package/contracts/upgradeability/Versionable.sol +59 -0
  534. package/package.json +12 -8
  535. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  536. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  537. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -772
  538. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  539. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -384
  540. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  541. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  542. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  543. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  544. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  545. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  546. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  547. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -967
  548. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  549. package/artifacts/contracts/components/Product.sol/Product.json +0 -883
  550. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  551. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  552. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  553. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  554. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  555. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  556. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  557. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  558. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  559. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  560. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  561. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  562. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  563. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  564. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  565. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  566. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  567. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  568. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  569. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  570. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  571. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  572. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  573. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  574. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  575. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  576. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  577. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  578. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  579. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  580. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  581. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  582. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  583. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  584. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  585. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  586. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  587. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  588. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  589. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  590. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  591. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  592. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -788
  593. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  594. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  595. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  596. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1057
  597. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  598. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  599. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  600. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
  601. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  602. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  603. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  604. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  605. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  606. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  607. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  608. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  609. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  610. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  611. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -243
  612. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  613. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  614. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  615. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -923
  616. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  617. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -440
  618. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  619. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  620. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  621. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -684
  622. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  623. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -428
  624. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  625. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  626. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  627. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  628. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  629. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  630. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -499
  631. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  632. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +0 -536
  633. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  634. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -984
  635. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  636. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -464
  637. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  638. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -718
  639. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  640. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -428
  641. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  642. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -768
  643. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  644. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -420
  645. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  646. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  647. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  648. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  649. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  650. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  651. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  652. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  653. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  654. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  655. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  656. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  657. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  658. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  659. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  660. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  661. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  662. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  663. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  664. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  665. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  666. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  667. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  668. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  669. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  670. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  671. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  672. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  673. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  674. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  675. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  676. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  677. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  678. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  679. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  680. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  681. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  682. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  683. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  684. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  685. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  686. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  687. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  688. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  689. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  690. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  691. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  692. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  693. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  694. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  695. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  696. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  697. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  698. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  699. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  700. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  701. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  702. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  703. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  704. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  705. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  706. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  707. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  708. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  709. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  710. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  711. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  712. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  713. package/contracts/components/BaseComponent.sol +0 -148
  714. package/contracts/components/Distribution.sol +0 -163
  715. package/contracts/components/IBaseComponent.sol +0 -32
  716. package/contracts/components/IDistributionComponent.sol +0 -44
  717. package/contracts/components/IPoolComponent.sol +0 -66
  718. package/contracts/components/IProductComponent.sol +0 -35
  719. package/contracts/components/Pool.sol +0 -271
  720. package/contracts/components/Product.sol +0 -292
  721. package/contracts/experiment/cloning/Cloner.sol +0 -47
  722. package/contracts/experiment/errors/Require.sol +0 -38
  723. package/contracts/experiment/errors/Revert.sol +0 -44
  724. package/contracts/experiment/inheritance/A.sol +0 -53
  725. package/contracts/experiment/inheritance/B.sol +0 -28
  726. package/contracts/experiment/inheritance/C.sol +0 -34
  727. package/contracts/experiment/inheritance/IA.sol +0 -13
  728. package/contracts/experiment/inheritance/IB.sol +0 -10
  729. package/contracts/experiment/inheritance/IC.sol +0 -12
  730. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  731. package/contracts/experiment/statemachine/ISM.sol +0 -25
  732. package/contracts/experiment/statemachine/SM.sol +0 -57
  733. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  734. package/contracts/experiment/types/TypeA.sol +0 -47
  735. package/contracts/experiment/types/TypeB.sol +0 -29
  736. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  737. package/contracts/instance/BundleManager.sol +0 -129
  738. package/contracts/instance/IInstanceBase.sol +0 -26
  739. package/contracts/instance/InstanceAccessManager.sol +0 -304
  740. package/contracts/instance/InstanceBase.sol +0 -41
  741. package/contracts/instance/ObjectManager.sol +0 -101
  742. package/contracts/instance/base/ComponentServiceBase.sol +0 -72
  743. package/contracts/instance/base/IInstanceBase.sol +0 -23
  744. package/contracts/instance/base/KeyValueStore.sol +0 -172
  745. package/contracts/instance/base/Lifecycle.sol +0 -100
  746. package/contracts/instance/module/IAccess.sol +0 -48
  747. package/contracts/instance/module/ISetup.sol +0 -46
  748. package/contracts/instance/module/ITreasury.sol +0 -23
  749. package/contracts/instance/service/BundleService.sol +0 -260
  750. package/contracts/instance/service/BundleServiceManager.sol +0 -54
  751. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  752. package/contracts/instance/service/DistributionService.sol +0 -118
  753. package/contracts/instance/service/DistributionServiceManager.sol +0 -54
  754. package/contracts/instance/service/IBundleService.sol +0 -45
  755. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  756. package/contracts/instance/service/IDistributionService.sol +0 -12
  757. package/contracts/instance/service/IPolicyService.sol +0 -87
  758. package/contracts/instance/service/IPoolService.sol +0 -20
  759. package/contracts/instance/service/IProductService.sol +0 -40
  760. package/contracts/instance/service/PolicyService.sol +0 -508
  761. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  762. package/contracts/instance/service/PoolService.sol +0 -124
  763. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  764. package/contracts/instance/service/ProductService.sol +0 -173
  765. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  766. package/contracts/shared/ContractDeployerLib.sol +0 -72
  767. package/contracts/shared/ERC165.sol +0 -25
  768. package/contracts/shared/ProxyManager.sol +0 -94
  769. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  770. package/contracts/shared/Versionable.sol +0 -147
  771. package/contracts/test/TestFee.sol +0 -25
  772. package/contracts/test/TestRegisterable.sol +0 -18
  773. package/contracts/test/TestRoleId.sol +0 -14
  774. package/contracts/test/TestService.sol +0 -24
  775. package/contracts/test/TestToken.sol +0 -26
  776. package/contracts/test/TestVersion.sol +0 -44
  777. package/contracts/test/TestVersionable.sol +0 -17
  778. package/contracts/types/ChainId.sol +0 -38
  779. package/contracts/types/Fee.sol +0 -56
  780. package/contracts/types/NumberId.sol +0 -52
  781. package/contracts/types/ObjectType.sol +0 -152
  782. package/contracts/types/RiskId.sol +0 -43
  783. package/contracts/types/RoleId.sol +0 -91
  784. package/contracts/types/UFixed.sol +0 -325
@@ -1,17 +1,26 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Blocknumber, blockBlocknumber, zeroBlocknumber} from "../../types/Blocknumber.sol";
5
- import {Key32, KeyId} from "../../types/Key32.sol";
6
- import {NftId} from "../../types/NftId.sol";
7
- import {ObjectType} from "../../types/ObjectType.sol";
8
- import {StateId} from "../../types/StateId.sol";
4
+ import {Blocknumber, blockBlocknumber, zeroBlocknumber} from "../type/Blocknumber.sol";
5
+ import {Key32, KeyId} from "../type/Key32.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {StateId} from "../type/StateId.sol";
9
9
 
10
10
  import {ILifecycle} from "./ILifecycle.sol";
11
11
 
12
- // TODO remove - internal only?
13
12
  interface IKeyValueStore is ILifecycle {
14
13
 
14
+ error ErrorKeyValueStoreTypeUndefined(ObjectType objectType);
15
+ error ErrorKeyValueStoreAlreadyCreated(Key32 key, ObjectType objectType);
16
+ error ErrorKeyValueStoreNoLifecycle(ObjectType objectType);
17
+ error ErrorKeyValueStoreStateZero(Key32 key);
18
+ error ErrorKeyValueStoreNotExisting(Key32 key);
19
+
20
+ event LogInfoCreated(ObjectType objectType, KeyId keyId, StateId state, address createdBy, address txOrigin);
21
+ event LogInfoUpdated(ObjectType objectType, KeyId keyId, StateId state, address updatedBy, address txOrigin, Blocknumber lastUpdatedIn);
22
+ event LogStateUpdated(ObjectType objectType, KeyId keyId, StateId stateOld, StateId stateNew, address updatedBy, address txOrigin, Blocknumber lastUpdatedIn);
23
+
15
24
  struct Value {
16
25
  Metadata metadata;
17
26
  bytes data;
@@ -24,15 +33,11 @@ interface IKeyValueStore is ILifecycle {
24
33
  // eg account outside gif objects that initiated the tx
25
34
  // implies the caller needs to be propagated through all calls up to key values store itself
26
35
  // to always have the instance address there doesn't seem to make sense
27
- address updatedBy;
36
+ // address updatedBy;
28
37
  Blocknumber updatedIn;
29
38
  Blocknumber createdIn;
30
39
  }
31
40
 
32
- event LogInfoCreated(ObjectType objectType, KeyId keyId, StateId state, address createdBy, address txOrigin);
33
- event LogInfoUpdated(ObjectType objectType, KeyId keyId, StateId state, address updatedBy, address txOrigin, Blocknumber lastUpdatedIn);
34
- event LogStateUpdated(ObjectType objectType, KeyId keyId, StateId stateOld, StateId stateNew, address updatedBy, address txOrigin, Blocknumber lastUpdatedIn);
35
-
36
41
  // generic state changing functions
37
42
  // function create(Key32 key, bytes memory data) external;
38
43
  // function update(Key32 key, bytes memory data, StateId state) external;
@@ -1,14 +1,15 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {NftId} from "../../types/NftId.sol";
5
- import {ObjectType} from "../../types/ObjectType.sol";
6
- import {StateId} from "../../types/StateId.sol";
4
+ import {ObjectType} from "../type/ObjectType.sol";
5
+ import {StateId} from "../type/StateId.sol";
7
6
 
8
7
  interface ILifecycle {
9
8
 
10
- error ErrorNoLifecycle(NftId nftId, ObjectType objectType);
9
+ error ErrorNoLifecycle(address contractAddress, ObjectType objectType);
10
+ error ErrorFromStateMissmatch(address contractAddress, ObjectType objectType, StateId actual, StateId required);
11
11
  error ErrorInvalidStateTransition(
12
+ address contractAddress,
12
13
  ObjectType objectType,
13
14
  StateId fromStateId,
14
15
  StateId toStateId
@@ -1,22 +1,25 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IRegistry} from "../registry/IRegistry.sol";
5
- import {NftId} from "../types/NftId.sol";
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
6
5
 
7
- interface INftOwnable {
8
- error ErrorNotOwner(address account);
6
+ import {IRegistryLinked} from "./IRegistryLinked.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
9
9
 
10
- error ErrorAlreadyLinked(address registry, NftId nftId);
11
- error ErrorRegistryAlreadyInitialized(address registry);
12
- error ErrorRegistryNotInitialized();
13
- error ErrorRegistryAddressZero();
14
- error ErrorNotRegistry(address registryAddress);
15
- error ErrorContractNotRegistered(address contractAddress);
10
+ interface INftOwnable is
11
+ IERC165,
12
+ IRegistryLinked
13
+ {
14
+ error ErrorNftOwnableInitialOwnerZero();
15
+ error ErrorNftOwnableNotOwner(address account);
16
+ error ErrorNftOwnableInvalidType(NftId nftId, ObjectType expectedObjectType);
16
17
 
17
- function linkToRegisteredNftId() external;
18
+ error ErrorNftOwnableAlreadyLinked(NftId nftId);
19
+ error ErrorNftOwnableContractNotRegistered(address contractAddress);
20
+
21
+ function linkToRegisteredNftId() external returns (NftId);
18
22
 
19
- function getRegistry() external view returns (IRegistry);
20
23
  function getNftId() external view returns (NftId);
21
24
  function getOwner() external view returns (address);
22
25
  }
@@ -0,0 +1,35 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+ import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
6
+
7
+ import {Amount} from "../type/Amount.sol";
8
+ import {ClaimId} from "../type/ClaimId.sol";
9
+ import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
10
+ import {NftId} from "../type/NftId.sol";
11
+ import {PayoutId} from "../type/PayoutId.sol";
12
+ import {Timestamp} from "../type/Timestamp.sol";
13
+
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
16
+ interface IPolicyHolder is
17
+ IERC165,
18
+ IERC721Receiver,
19
+ IRegistryLinked
20
+ {
21
+
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;
25
+
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
+
30
+ /// @dev Callback function to notify the confirmation of the specified claim.
31
+ function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external;
32
+
33
+ /// @dev Callback function to notify the successful payout.
34
+ function payoutExecuted(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary) external;
35
+ }
@@ -1,17 +1,37 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
 
6
6
  import {INftOwnable} from "./INftOwnable.sol";
7
+ import {IRelease} from "../registry/IRelease.sol";
7
8
  import {IRegistry} from "../registry/IRegistry.sol";
8
- import {NftId} from "../types/NftId.sol";
9
- import {ObjectType} from "../types/ObjectType.sol";
9
+ import {VersionPart} from "../type/Version.sol";
10
10
 
11
- interface IRegisterable is IERC165, INftOwnable {
11
+ /// @title IRegisterable
12
+ /// @dev Marks contracts that are intended to be registered in the registry.
13
+ ///
14
+ interface IRegisterable is
15
+ IAccessManaged,
16
+ INftOwnable,
17
+ IRelease
18
+ {
19
+ // __Registerable_init
20
+ error ErrorAuthorityInvalid(address authority);
12
21
 
22
+ // onlyActive()
23
+ error ErrorRegisterableNotActive();
24
+
25
+ /// @dev Returns true iff this contract managed by its authority is active.
26
+ /// Queries the IAccessManaged.authority().
27
+ function isActive() external view returns (bool active);
28
+
29
+ /// @dev retuns the object info relevant for registering for this contract
30
+ /// IMPORTANT information returned by this function may only be used
31
+ /// before the contract is registered in the registry.
32
+ /// Once registered this information MUST only be accessed via the registry.
13
33
  function getInitialInfo()
14
34
  external
15
35
  view
16
- returns (IRegistry.ObjectInfo memory, bytes memory data);
36
+ returns (IRegistry.ObjectInfo memory);
17
37
  }
@@ -0,0 +1,11 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IRegistry} from "../registry/IRegistry.sol";
5
+
6
+ interface IRegistryLinked {
7
+
8
+ error ErrorNotRegistry(address registryAddress);
9
+
10
+ function getRegistry() external view returns (IRegistry);
11
+ }
@@ -1,15 +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
- import {VersionPart} from "../types/Version.sol";
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
+ import {ObjectType} from "../type/ObjectType.sol";
9
+ import {RoleId} from "../type/RoleId.sol";
8
10
 
9
11
  interface IService is
12
+ IAccessManaged,
10
13
  IRegisterable,
11
14
  IVersionable
12
15
  {
13
- function getName() external pure returns(string memory name);
14
- function getMajorVersion() external view returns(VersionPart majorVersion);
16
+ /// @dev returns the domain for this service.
17
+ /// In any GIF release only one service for any given domain may be deployed.
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);
15
23
  }
@@ -0,0 +1,35 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
6
+
7
+ contract InitializableERC165 is
8
+ Initializable,
9
+ IERC165
10
+ {
11
+ mapping(bytes4 => bool) private _isSupported;
12
+
13
+ // @dev initializes with support for ERC165
14
+ function __ERC165_init() internal onlyInitializing() {
15
+ _initializeERC165();
16
+ }
17
+
18
+ function _initializeERC165() internal {
19
+ _isSupported[type(IERC165).interfaceId] = true;
20
+ }
21
+
22
+ // @dev register support for provided interfaceId
23
+ // includes initialization for ERC165_ID if not yet done
24
+ function _registerInterface(bytes4 interfaceId) internal onlyInitializing() {
25
+ _registerInterfaceNotInitializing(interfaceId);
26
+ }
27
+
28
+ function _registerInterfaceNotInitializing(bytes4 interfaceId) internal{
29
+ _isSupported[interfaceId] = true;
30
+ }
31
+
32
+ function supportsInterface(bytes4 interfaceId) external view override returns (bool) {
33
+ return _isSupported[interfaceId];
34
+ }
35
+ }
@@ -0,0 +1,194 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
7
+ import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
8
+
9
+ import {Amount} from "../type/Amount.sol";
10
+ import {Component} from "./Component.sol";
11
+ import {IComponentService} from "./IComponentService.sol";
12
+ import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
13
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
14
+ import {IComponents} from "../instance/module/IComponents.sol";
15
+ import {IInstanceService} from "../instance/IInstanceService.sol";
16
+ import {IInstance} from "../instance/IInstance.sol";
17
+ import {InstanceReader} from "../instance/InstanceReader.sol";
18
+ import {IRegistry} from "../registry/IRegistry.sol";
19
+ import {NftId} from "../type/NftId.sol";
20
+ import {ObjectType, COMPONENT, INSTANCE, PRODUCT} from "../type/ObjectType.sol";
21
+ import {VersionPart} from "../type/Version.sol";
22
+ import {RoleId, RoleIdLib} from "../type/RoleId.sol";
23
+ import {IAccess} from "../authorization/IAccess.sol";
24
+ import {TokenHandler} from "../shared/TokenHandler.sol";
25
+ import {VersionPart} from "../type/Version.sol";
26
+
27
+ // then add (Distribution|Pool|Product)Upradeable that also intherit from Versionable
28
+ // same pattern as for Service which is also upgradeable
29
+ abstract contract InstanceLinkedComponent is
30
+ Component,
31
+ IInstanceLinkedComponent
32
+ {
33
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Component.sol")) - 1)) & ~bytes32(uint256(0xff));
34
+ bytes32 public constant INSTANCE_LINKED_COMPONENT_LOCATION_V1 = 0xffe3d4462bded26a47154f4b8f6db494d2f772496965791d25bd456e342b7f00;
35
+
36
+ struct InstanceLinkedComponentStorage {
37
+ IInstance _instance; // instance for this component
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 override returns (IInstance instance) {
56
+ return _getInstanceLinkedComponentStorage()._instance;
57
+ }
58
+
59
+ /// @inheritdoc IInstanceLinkedComponent
60
+ function getAuthorization() external view returns (IAuthorization authorization) {
61
+ return _getInstanceLinkedComponentStorage()._initialAuthorization;
62
+ }
63
+
64
+ function _getInstanceLinkedComponentStorage() private pure returns (InstanceLinkedComponentStorage storage $) {
65
+ assembly {
66
+ $.slot := INSTANCE_LINKED_COMPONENT_LOCATION_V1
67
+ }
68
+ }
69
+
70
+ function _initializeInstanceLinkedComponent(
71
+ address registry,
72
+ NftId parentNftId,
73
+ string memory name,
74
+ ObjectType componentType,
75
+ IAuthorization authorization,
76
+ bool isInterceptor,
77
+ address initialOwner,
78
+ bytes memory componentData // data that will saved with the component info in the instance store
79
+ )
80
+ internal
81
+ virtual
82
+ onlyInitializing()
83
+ {
84
+ // validate registry, nft ids and get parent nft id
85
+ NftId instanceNftId = _checkAndGetInstanceNftId(
86
+ registry,
87
+ parentNftId,
88
+ componentType);
89
+
90
+ // set and check linked instance
91
+ InstanceLinkedComponentStorage storage $ = _getInstanceLinkedComponentStorage();
92
+ $._instance = IInstance(
93
+ IRegistry(registry).getObjectAddress(instanceNftId));
94
+
95
+ // set component specific parameters
96
+ _initializeComponent(
97
+ $._instance.authority(), // instance linked components need to point to instance admin
98
+ registry,
99
+ parentNftId,
100
+ name,
101
+ componentType,
102
+ isInterceptor,
103
+ initialOwner,
104
+ "", // registry data
105
+ componentData);
106
+
107
+ // set instance linked specific parameters
108
+ $._instanceReader = $._instance.getInstanceReader();
109
+ $._initialAuthorization = authorization;
110
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
111
+
112
+ // register interfaces
113
+ _registerInterface(type(IInstanceLinkedComponent).interfaceId);
114
+ }
115
+
116
+
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);
135
+ }
136
+
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
+ }
154
+ }
155
+
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);
161
+ }
162
+
163
+
164
+ function _getComponentInfo() internal virtual override view returns (IComponents.ComponentInfo memory info) {
165
+ NftId componentNftId = getRegistry().getNftIdForAddress(address(this));
166
+
167
+ // if registered, attempt to return component info via instance reader
168
+ if (componentNftId.gtz()) {
169
+ // component registerd with registry
170
+ info = _getInstanceReader().getComponentInfo(getNftId());
171
+
172
+ // check if also registered with instance
173
+ if (address(info.tokenHandler) != address(0)) {
174
+ return info;
175
+ }
176
+ }
177
+
178
+ // return data from component contract if not yet registered
179
+ return super._getComponentInfo();
180
+ }
181
+
182
+
183
+ /// @dev returns reader for linked instance
184
+ function _getInstanceReader() internal view returns (InstanceReader reader) {
185
+ return _getInstanceLinkedComponentStorage()._instanceReader;
186
+ }
187
+
188
+ function _withdrawFees(Amount amount)
189
+ internal
190
+ returns (Amount withdrawnAmount)
191
+ {
192
+ return _getInstanceLinkedComponentStorage()._componentService.withdrawFees(amount);
193
+ }
194
+ }
@@ -0,0 +1,131 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Blocknumber, blockBlocknumber, zeroBlocknumber} from "../type/Blocknumber.sol";
5
+ import {Key32, KeyId, Key32Lib} from "../type/Key32.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {StateId, ACTIVE, KEEP_STATE} from "../type/StateId.sol";
9
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
10
+
11
+ import {Lifecycle} from "./Lifecycle.sol";
12
+ import {IKeyValueStore} from "./IKeyValueStore.sol";
13
+
14
+ abstract contract KeyValueStore is
15
+ Lifecycle,
16
+ IKeyValueStore
17
+ {
18
+
19
+ mapping(Key32 key32 => Value value) private _value;
20
+
21
+ function _create(
22
+ Key32 key32,
23
+ bytes memory data
24
+ )
25
+ internal
26
+ {
27
+ ObjectType objectType = key32.toObjectType();
28
+ if (objectType.eqz()) {
29
+ revert ErrorKeyValueStoreTypeUndefined(objectType);
30
+ }
31
+
32
+ Metadata storage metadata = _value[key32].metadata;
33
+ if (metadata.state.gtz()) {
34
+ revert ErrorKeyValueStoreAlreadyCreated(key32, objectType);
35
+ }
36
+
37
+ if(!hasLifecycle(objectType)) {
38
+ revert ErrorKeyValueStoreNoLifecycle(objectType);
39
+ }
40
+
41
+ Blocknumber blocknumber = blockBlocknumber();
42
+ StateId initialState = getInitialState(objectType);
43
+
44
+ // set metadata
45
+ metadata.objectType = objectType;
46
+ metadata.state = initialState;
47
+ metadata.updatedIn = blocknumber;
48
+ metadata.createdIn = blocknumber;
49
+
50
+ // set data
51
+ _value[key32].data = data;
52
+
53
+ // solhint-disable-next-line avoid-tx-origin
54
+ emit LogInfoCreated(key32.toObjectType(), key32.toKeyId(), initialState, msg.sender, tx.origin);
55
+ }
56
+
57
+
58
+ function _update(
59
+ Key32 key32,
60
+ bytes memory data,
61
+ StateId state
62
+ )
63
+ internal
64
+ {
65
+ // update state
66
+ Blocknumber lastUpdatedIn = _updateState(key32, state);
67
+
68
+ // update data
69
+ _value[key32].data = data;
70
+
71
+ // solhint-disable-next-line avoid-tx-origin
72
+ emit LogInfoUpdated(key32.toObjectType(), key32.toKeyId(), state, msg.sender, tx.origin, lastUpdatedIn);
73
+ }
74
+
75
+
76
+ function _updateState(
77
+ Key32 key32,
78
+ StateId state
79
+ )
80
+ internal
81
+ returns (Blocknumber lastUpdatedIn)
82
+ {
83
+ if (state.eqz()) {
84
+ revert ErrorKeyValueStoreStateZero(key32);
85
+ }
86
+
87
+ Metadata storage metadata = _value[key32].metadata;
88
+ StateId stateOld = metadata.state;
89
+ lastUpdatedIn = metadata.updatedIn;
90
+
91
+ if (stateOld.eqz()) {
92
+ revert ErrorKeyValueStoreNotExisting(key32);
93
+ }
94
+
95
+ // update state
96
+ if(state != KEEP_STATE()) {
97
+ checkTransition(stateOld, metadata.objectType, stateOld, state);
98
+ metadata.state = state;
99
+
100
+ // solhint-disable-next-line avoid-tx-origin
101
+ emit LogStateUpdated(key32.toObjectType(), key32.toKeyId(), stateOld, state, msg.sender, tx.origin, lastUpdatedIn);
102
+ }
103
+
104
+ // update metadata
105
+ metadata.updatedIn = blockBlocknumber();
106
+ }
107
+
108
+ function exists(Key32 key32) public view returns (bool) {
109
+ return _value[key32].metadata.state.gtz();
110
+ }
111
+
112
+ function get(Key32 key32) public view returns (Value memory value) {
113
+ return _value[key32];
114
+ }
115
+
116
+ function getMetadata(Key32 key32) public view returns (Metadata memory metadata) {
117
+ return _value[key32].metadata;
118
+ }
119
+
120
+ function getData(Key32 key32) public view returns (bytes memory data) {
121
+ return _value[key32].data;
122
+ }
123
+
124
+ function getState(Key32 key32) public view returns (StateId state) {
125
+ return _value[key32].metadata.state;
126
+ }
127
+
128
+ function toKey32(ObjectType objectType, KeyId id) external pure override returns(Key32) {
129
+ return Key32Lib.toKey32(objectType, id);
130
+ }
131
+ }
@@ -0,0 +1,88 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ObjectType} from "../type/ObjectType.sol";
5
+ import {StateId, zeroStateId} from "../type/StateId.sol";
6
+ import {ILifecycle} from "./ILifecycle.sol";
7
+
8
+ abstract contract Lifecycle is
9
+ ILifecycle
10
+ {
11
+ mapping(ObjectType objectType => StateId initialState)
12
+ private _initialState;
13
+
14
+ mapping(ObjectType objectType => mapping(StateId stateFrom => mapping(StateId stateTo => bool isValid)))
15
+ private _isValidTransition;
16
+
17
+ /// @dev child class must implement and CALL setup func at deployment/initializaton time
18
+ function _setupLifecycle() internal virtual;
19
+
20
+ function setInitialState(ObjectType ttype, StateId state) internal virtual {
21
+ assert(_initialState[ttype] == zeroStateId());
22
+ _initialState[ttype] = state;
23
+ }
24
+
25
+ function setStateTransition(ObjectType ttype, StateId oldState, StateId newState) internal virtual {
26
+ assert(_isValidTransition[ttype][oldState][newState] == false);
27
+ _isValidTransition[ttype][oldState][newState] = true;
28
+ }
29
+
30
+ function hasLifecycle(
31
+ ObjectType objectType
32
+ )
33
+ public
34
+ view
35
+ override
36
+ returns (bool)
37
+ {
38
+ return _initialState[objectType].gtz();
39
+ }
40
+
41
+ function getInitialState(
42
+ ObjectType objectType
43
+ )
44
+ public
45
+ view
46
+ returns (StateId)
47
+ {
48
+ return _initialState[objectType];
49
+ }
50
+
51
+ function checkTransition(
52
+ StateId stateId,
53
+ ObjectType objectType,
54
+ StateId expectedFromId,
55
+ StateId toId
56
+ )
57
+ public
58
+ view
59
+ {
60
+ // revert if no life cycle support
61
+ if (_initialState[objectType].eqz()) {
62
+ revert ErrorNoLifecycle(address(this), objectType);
63
+ }
64
+
65
+ // revert if current state is not expected `from` state
66
+ if(stateId != expectedFromId) {
67
+ revert ErrorFromStateMissmatch(address(this), objectType, stateId, expectedFromId);
68
+ }
69
+
70
+ // enforce valid state transition
71
+ if (!_isValidTransition[objectType][stateId][toId]) {
72
+ revert ErrorInvalidStateTransition(
73
+ address(this),
74
+ objectType,
75
+ stateId,
76
+ toId
77
+ );
78
+ }
79
+ }
80
+
81
+ function isValidTransition(
82
+ ObjectType objectType,
83
+ StateId fromId,
84
+ StateId toId
85
+ ) public view returns (bool) {
86
+ return _isValidTransition[objectType][fromId][toId];
87
+ }
88
+ }