@etherisc/gif-next 0.0.2-6f943ea-736 → 0.0.2-70111f0-445

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 (763) hide show
  1. package/README.md +129 -23
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -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 +1209 -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 +1580 -0
  36. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +868 -0
  38. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  39. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → distribution/IDistributionComponent.sol/IDistributionComponent.json} +303 -323
  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 +1445 -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 +2002 -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 +1388 -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 +1612 -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 +2389 -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 +345 -1476
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  73. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +404 -182
  74. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  75. package/artifacts/contracts/instance/Instance.sol/Instance.json +472 -2494
  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 +1741 -664
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +460 -445
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +366 -105
  86. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  87. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3728 -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/{components/IPoolComponent.sol/IPoolComponent.json → oracle/IOracleComponent.sol/IOracleComponent.json} +330 -290
  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 +997 -0
  124. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  125. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +764 -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 +1261 -0
  132. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  133. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +800 -0
  134. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  135. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +446 -281
  136. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  137. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/IPoolComponent.sol/IPoolComponent.json} +329 -357
  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 +456 -0
  144. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  145. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1574 -0
  146. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  147. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +808 -0
  148. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  149. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +879 -0
  150. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  151. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +740 -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 +1496 -0
  158. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  159. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +848 -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} +202 -329
  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/product/IPricingService.sol/IPricingService.json +623 -0
  168. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  169. package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +457 -409
  170. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  171. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IRiskService.sol/IRiskService.json} +142 -193
  172. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  173. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1333 -0
  174. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  175. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  176. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +808 -0
  178. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  179. package/artifacts/contracts/product/PricingService.sol/PricingService.json +911 -0
  180. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  181. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +764 -0
  182. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  183. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → product/Product.sol/Product.json} +644 -294
  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 +513 -27
  192. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  193. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +284 -222
  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 +996 -119
  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 +347 -278
  206. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  207. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +361 -90
  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 +350 -83
  218. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  219. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +226 -196
  220. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1556 -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/IComponent.sol/IComponent.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +178 -148
  226. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +597 -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/ComponentService.sol/ComponentService.json → shared/IComponent.sol/IComponent.json} +241 -233
  236. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  237. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1196 -0
  238. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  239. package/artifacts/contracts/{components/IDistributionComponent.sol/IDistributionComponent.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +272 -232
  240. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  241. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +95 -14
  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 -10
  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 +124 -141
  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/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  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 +74 -36
  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 +156 -60
  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 +142 -165
  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 +1888 -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 +792 -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 +1380 -0
  296. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  297. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +736 -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 +129 -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 +262 -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 +385 -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 +85 -51
  394. package/contracts/instance/IInstanceService.sol +69 -22
  395. package/contracts/instance/Instance.sol +221 -186
  396. package/contracts/instance/InstanceAdmin.sol +450 -0
  397. package/contracts/instance/InstanceAuthorizationV3.sol +235 -0
  398. package/contracts/instance/InstanceReader.sol +421 -64
  399. package/contracts/instance/InstanceService.sol +354 -330
  400. package/contracts/instance/InstanceServiceManager.sol +14 -29
  401. package/contracts/instance/InstanceStore.sol +298 -0
  402. package/contracts/instance/RiskSet.sol +118 -0
  403. package/contracts/instance/base/BalanceStore.sol +123 -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/TestToken.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 +216 -0
  432. package/contracts/pool/PoolService.sol +755 -0
  433. package/contracts/pool/PoolServiceManager.sol +39 -0
  434. package/contracts/product/ApplicationService.sol +274 -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 +632 -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 +664 -0
  447. package/contracts/product/PolicyServiceLib.sol +65 -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 +83 -36
  455. package/contracts/registry/IRegistry.sol +102 -30
  456. package/contracts/registry/IRegistryService.sol +38 -41
  457. package/contracts/registry/IRelease.sol +29 -0
  458. package/contracts/registry/ITransferInterceptor.sol +1 -1
  459. package/contracts/registry/Registry.sol +485 -207
  460. package/contracts/registry/RegistryAdmin.sol +258 -0
  461. package/contracts/registry/RegistryAuthorization.sol +267 -0
  462. package/contracts/registry/RegistryService.sol +118 -139
  463. package/contracts/registry/RegistryServiceManager.sol +24 -33
  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 +331 -0
  468. package/contracts/registry/TokenRegistry.sol +266 -62
  469. package/contracts/shared/Component.sol +210 -0
  470. package/contracts/shared/ComponentService.sol +708 -0
  471. package/contracts/shared/ComponentServiceManager.sol +38 -0
  472. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  473. package/contracts/shared/ContractLib.sol +281 -0
  474. package/contracts/shared/IComponent.sol +58 -0
  475. package/contracts/shared/IComponentService.sol +112 -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 +24 -2
  482. package/contracts/shared/IRegistryLinked.sol +11 -0
  483. package/contracts/shared/IService.sol +12 -5
  484. package/contracts/shared/InitializableERC165.sol +35 -0
  485. package/contracts/shared/InstanceLinkedComponent.sol +195 -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 -87
  490. package/contracts/shared/PolicyHolder.sol +62 -0
  491. package/contracts/shared/Registerable.sol +49 -29
  492. package/contracts/shared/RegistryLinked.sol +38 -0
  493. package/contracts/shared/Service.sol +39 -34
  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 +172 -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 +464 -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 +232 -0
  532. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  533. package/contracts/upgradeability/Versionable.sol +59 -0
  534. package/package.json +12 -8
  535. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  536. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  537. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  538. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  539. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  540. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  541. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  542. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  543. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  544. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  545. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  546. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  547. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  548. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  549. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  550. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  551. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  552. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  553. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  554. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  555. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  556. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  557. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  558. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  559. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  560. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  561. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  562. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  563. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  564. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  565. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  566. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  567. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  568. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  569. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  570. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  571. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  572. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  573. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  574. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  575. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  576. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  577. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  578. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  579. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  580. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  581. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  582. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  583. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -764
  584. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  585. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  586. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1034
  587. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  588. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  589. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  590. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  591. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  592. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  593. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  594. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  595. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  596. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  597. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -254
  598. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  599. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  600. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  601. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1102
  602. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  603. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -449
  604. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  605. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -772
  606. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  607. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -437
  608. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  609. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  610. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -441
  611. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  612. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  613. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -494
  614. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  615. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  616. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1227
  617. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  618. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -505
  619. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  620. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -806
  621. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  622. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -437
  623. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  624. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -856
  625. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  626. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -437
  627. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  628. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  629. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  630. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
  631. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  632. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  633. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  634. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  635. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  636. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  637. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  638. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -362
  639. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  640. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  641. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  642. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  643. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  644. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  645. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  646. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -313
  647. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  648. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  649. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  650. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -608
  651. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  652. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  653. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  654. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  655. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  656. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  657. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  658. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  659. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  660. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  661. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  662. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  663. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  664. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  665. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  666. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  667. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  668. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  669. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  670. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  671. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  672. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  673. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  674. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  675. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  676. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  677. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  678. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  679. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  680. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  681. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  682. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  683. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  684. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  685. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  686. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  687. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  688. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  689. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  690. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  691. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  692. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  693. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  694. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  695. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  696. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  697. package/contracts/components/Component.sol +0 -216
  698. package/contracts/components/Distribution.sol +0 -153
  699. package/contracts/components/IComponent.sol +0 -43
  700. package/contracts/components/IDistributionComponent.sol +0 -47
  701. package/contracts/components/IPoolComponent.sol +0 -51
  702. package/contracts/components/IProductComponent.sol +0 -39
  703. package/contracts/components/Pool.sol +0 -208
  704. package/contracts/components/Product.sol +0 -266
  705. package/contracts/experiment/cloning/Cloner.sol +0 -47
  706. package/contracts/experiment/errors/Require.sol +0 -38
  707. package/contracts/experiment/errors/Revert.sol +0 -44
  708. package/contracts/experiment/inheritance/A.sol +0 -53
  709. package/contracts/experiment/inheritance/B.sol +0 -28
  710. package/contracts/experiment/inheritance/C.sol +0 -34
  711. package/contracts/experiment/inheritance/IA.sol +0 -13
  712. package/contracts/experiment/inheritance/IB.sol +0 -10
  713. package/contracts/experiment/inheritance/IC.sol +0 -12
  714. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  715. package/contracts/experiment/statemachine/ISM.sol +0 -25
  716. package/contracts/experiment/statemachine/SM.sol +0 -57
  717. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  718. package/contracts/experiment/types/TypeA.sol +0 -47
  719. package/contracts/experiment/types/TypeB.sol +0 -29
  720. package/contracts/instance/BundleManager.sol +0 -125
  721. package/contracts/instance/InstanceAccessManager.sol +0 -298
  722. package/contracts/instance/ObjectManager.sol +0 -84
  723. package/contracts/instance/base/ComponentService.sol +0 -134
  724. package/contracts/instance/base/KeyValueStore.sol +0 -172
  725. package/contracts/instance/base/Lifecycle.sol +0 -100
  726. package/contracts/instance/module/IAccess.sol +0 -48
  727. package/contracts/instance/module/ISetup.sol +0 -46
  728. package/contracts/instance/module/ITreasury.sol +0 -23
  729. package/contracts/instance/service/BundleService.sol +0 -293
  730. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  731. package/contracts/instance/service/DistributionService.sol +0 -106
  732. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  733. package/contracts/instance/service/IBundleService.sol +0 -44
  734. package/contracts/instance/service/IDistributionService.sol +0 -12
  735. package/contracts/instance/service/IPolicyService.sol +0 -94
  736. package/contracts/instance/service/IPoolService.sol +0 -20
  737. package/contracts/instance/service/IProductService.sol +0 -40
  738. package/contracts/instance/service/PolicyService.sol +0 -538
  739. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  740. package/contracts/instance/service/PoolService.sol +0 -110
  741. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  742. package/contracts/instance/service/ProductService.sol +0 -233
  743. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  744. package/contracts/registry/RegistryAccessManager.sol +0 -216
  745. package/contracts/registry/ReleaseManager.sol +0 -332
  746. package/contracts/shared/ContractDeployerLib.sol +0 -72
  747. package/contracts/shared/ERC165.sol +0 -25
  748. package/contracts/shared/ProxyManager.sol +0 -94
  749. package/contracts/shared/Versionable.sol +0 -147
  750. package/contracts/test/TestFee.sol +0 -25
  751. package/contracts/test/TestRegisterable.sol +0 -18
  752. package/contracts/test/TestRoleId.sol +0 -14
  753. package/contracts/test/TestService.sol +0 -25
  754. package/contracts/test/TestVersion.sol +0 -44
  755. package/contracts/test/TestVersionable.sol +0 -17
  756. package/contracts/test/Usdc.sol +0 -26
  757. package/contracts/types/ChainId.sol +0 -38
  758. package/contracts/types/Fee.sol +0 -56
  759. package/contracts/types/NumberId.sol +0 -52
  760. package/contracts/types/ObjectType.sol +0 -152
  761. package/contracts/types/RiskId.sol +0 -43
  762. package/contracts/types/RoleId.sol +0 -90
  763. package/contracts/types/UFixed.sol +0 -325
@@ -0,0 +1,65 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {LibNftIdSet} from "../type/NftIdSet.sol";
5
+ import {NftId} from "../type/NftId.sol";
6
+
7
+ contract NftIdSet {
8
+
9
+ error ErrorNftIdSetManagerNotOwner(address owner, address sender);
10
+ error ErrorNftIdSetManagerOwnerAlreadySet(address owner);
11
+ error ErrorNftIdSetManagerNftIdInvalid(NftId objectNftId);
12
+ error ErrorNftIdSetManagerAlreadyAdded(NftId objectNftId);
13
+
14
+ LibNftIdSet.Set private _allObjects;
15
+ LibNftIdSet.Set private _activeObjects;
16
+ address private _owner;
17
+
18
+ modifier onlyOwner() {
19
+ if(msg.sender != _owner) {
20
+ revert ErrorNftIdSetManagerNotOwner(_owner, msg.sender);
21
+ }
22
+ _;
23
+ }
24
+
25
+ constructor() {
26
+ _owner = msg.sender;
27
+ }
28
+
29
+ function add(NftId objectNftId) external onlyOwner {
30
+ LibNftIdSet.add(_allObjects, objectNftId);
31
+ LibNftIdSet.add(_activeObjects, objectNftId);
32
+ }
33
+
34
+ function activate(NftId componentNftId, NftId objectNftId) external onlyOwner {
35
+ LibNftIdSet.add(_activeObjects, objectNftId);
36
+ }
37
+
38
+ function deactivate(NftId componentNftId, NftId objectNftId) external onlyOwner {
39
+ LibNftIdSet.remove(_activeObjects, objectNftId);
40
+ }
41
+
42
+ function nftIds() external view returns (uint256 ids) {
43
+ return LibNftIdSet.size(_allObjects);
44
+ }
45
+
46
+ function getNftId(uint256 idx) external view returns (NftId) {
47
+ return LibNftIdSet.getElementAt(_allObjects, idx);
48
+ }
49
+
50
+ function exists(NftId objectNftId) external view returns (bool) {
51
+ return LibNftIdSet.contains(_allObjects, objectNftId);
52
+ }
53
+
54
+ function activeNftIds() external view returns (uint256 ids) {
55
+ return LibNftIdSet.size(_activeObjects);
56
+ }
57
+
58
+ function getActiveNftId(uint256 idx) external view returns (NftId) {
59
+ return LibNftIdSet.getElementAt(_activeObjects, idx);
60
+ }
61
+
62
+ function isActive(NftId objectNftId) external view returns (bool) {
63
+ return LibNftIdSet.contains(_activeObjects, objectNftId);
64
+ }
65
+ }
@@ -1,139 +1,127 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {InitializableERC165} from "./InitializableERC165.sol";
4
5
  import {INftOwnable} from "./INftOwnable.sol";
5
- import {IRegistry} from "../registry/IRegistry.sol";
6
- import {NftId, zeroNftId} from "../types/NftId.sol";
7
-
8
- // TODO make contract upgradeable
9
- contract NftOwnable is INftOwnable {
10
-
11
- // TODO move vars to struct and add _getNftOwnableStorage
12
- IRegistry internal _registry;
13
- NftId private _nftId;
14
- address private _initialOwner;
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {RegistryLinked} from "./RegistryLinked.sol";
9
+
10
+ contract NftOwnable is
11
+ InitializableERC165,
12
+ RegistryLinked,
13
+ INftOwnable
14
+ {
15
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.NftOwnable")) - 1)) & ~bytes32(uint256(0xff));
16
+ bytes32 public constant NFT_OWNABLE_STORAGE_LOCATION_V1 = 0x07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00;
17
+
18
+ struct NftOwnableStorage {
19
+ NftId _nftId;
20
+ address _initialOwner;
21
+ }
15
22
 
16
23
  /// @dev enforces msg.sender is owner of nft (or initial owner of nft ownable)
17
24
  modifier onlyOwner() {
18
25
  if (msg.sender != getOwner()) {
19
- revert ErrorNotOwner(msg.sender);
26
+ revert ErrorNftOwnableNotOwner(msg.sender);
20
27
  }
21
28
  _;
22
29
  }
23
30
 
24
- constructor() {
25
- _initialOwner = msg.sender;
31
+ modifier onlyNftOwner(NftId nftId) {
32
+ if(!getRegistry().isOwnerOf(nftId, msg.sender)) {
33
+ revert ErrorNftOwnableNotOwner(msg.sender);
34
+ }
35
+ _;
26
36
  }
27
37
 
28
- /// @dev links this contract to nft after registration
29
- // needs to be done once per registered contract and
30
- // reduces registry calls to check ownership
31
- // does not need any protection as function can only do the "right thing"
32
- function linkToRegisteredNftId() public {
33
- if (_nftId.gtz()) {
34
- revert ErrorAlreadyLinked(address(_registry), _nftId);
35
- }
38
+ modifier onlyNftOfType(NftId nftId, ObjectType expectedObjectType) {
39
+ _checkNftType(nftId, expectedObjectType);
40
+ _;
41
+ }
36
42
 
37
- if (address(_registry) == address(0)) {
38
- revert ErrorRegistryNotInitialized();
43
+ function _checkNftType(NftId nftId, ObjectType expectedObjectType) internal view {
44
+ if(!getRegistry().isObjectType(nftId, expectedObjectType)) {
45
+ revert ErrorNftOwnableInvalidType(nftId, expectedObjectType);
39
46
  }
47
+ }
48
+
40
49
 
41
- address contractAddress = address(this);
50
+ /// @dev Initialization for upgradable contracts.
51
+ // used in __Registerable_init, ProxyManager._preDeployChecksAndSetup
52
+ function __NftOwnable_init(
53
+ address registry,
54
+ address initialOwner
55
+ )
56
+ internal
57
+ virtual
58
+ onlyInitializing()
59
+ {
60
+ __ERC165_init();
61
+ __RegistryLinked_init(registry);
42
62
 
43
- if (!_registry.isRegistered(contractAddress)) {
44
- revert ErrorContractNotRegistered(contractAddress);
63
+ if(initialOwner == address(0)) {
64
+ revert ErrorNftOwnableInitialOwnerZero();
45
65
  }
46
66
 
47
- _nftId = _registry.getNftId(contractAddress);
67
+ _getNftOwnableStorage()._initialOwner = initialOwner;
48
68
  }
49
69
 
50
70
 
51
- function getRegistry() public view virtual override returns (IRegistry) {
52
- return _registry;
71
+ /// @dev links this contract to nft after registration
72
+ // needs to be done once per registered contract and
73
+ // reduces registry calls to check ownership
74
+ // does not need any protection as function can only do the "right thing"
75
+ function linkToRegisteredNftId()
76
+ public
77
+ virtual
78
+ returns (NftId nftId)
79
+ {
80
+ return _linkToNftOwnable(address(this));
53
81
  }
54
82
 
55
-
56
83
  function getNftId() public view virtual override returns (NftId) {
57
- return _nftId;
58
- }
59
-
60
- function getInitialOwner() public view returns (address) {
61
- return _initialOwner;
84
+ return _getNftOwnableStorage()._nftId;
62
85
  }
63
86
 
64
87
  function getOwner() public view virtual override returns (address) {
65
- if (_nftId.gtz()) {
66
- return _registry.ownerOf(_nftId);
67
- }
68
-
69
- return _initialOwner;
70
- }
88
+ NftOwnableStorage storage $ = _getNftOwnableStorage();
71
89
 
90
+ if ($._nftId.gtz()) {
91
+ return getRegistry().ownerOf($._nftId);
92
+ }
72
93
 
73
- /// @dev initialization for upgradable contracts
74
- // used in _initializeRegisterable
75
- function _initializeNftOwnable(
76
- address initialOwner,
77
- address registryAddress
78
- )
79
- internal
80
- virtual
81
- {
82
- require(initialOwner > address(0), "NftOwnable: initial owner is 0");
83
- _initialOwner = initialOwner;
84
- _setRegistry(registryAddress);
94
+ return $._initialOwner;
85
95
  }
86
96
 
87
-
88
97
  /// @dev used in constructor of registry service manager
89
98
  // links ownership of registry service manager ot nft owner of registry service
90
99
  function _linkToNftOwnable(
91
- address registryAddress,
92
100
  address nftOwnableAddress
93
101
  )
94
102
  internal
95
- onlyOwner()
96
103
  returns (NftId)
97
104
  {
98
- if (_nftId.gtz()) {
99
- revert ErrorAlreadyLinked(address(_registry), _nftId);
100
- }
101
-
102
- _setRegistry(registryAddress);
105
+ NftOwnableStorage storage $ = _getNftOwnableStorage();
103
106
 
104
- if (!_registry.isRegistered(nftOwnableAddress)) {
105
- revert ErrorContractNotRegistered(nftOwnableAddress);
107
+ if ($._nftId.gtz()) {
108
+ revert ErrorNftOwnableAlreadyLinked($._nftId);
106
109
  }
107
110
 
108
- _nftId = _registry.getNftId(nftOwnableAddress);
109
-
110
- return _nftId;
111
- }
112
-
113
-
114
- function _setRegistry(address registryAddress)
115
- private
116
- {
117
- if (address(_registry) != address(0)) {
118
- revert ErrorRegistryAlreadyInitialized(address(_registry));
111
+ if (!getRegistry().isRegistered(nftOwnableAddress)) {
112
+ revert ErrorNftOwnableContractNotRegistered(nftOwnableAddress);
119
113
  }
120
114
 
121
- if (registryAddress == address(0)) {
122
- revert ErrorRegistryAddressZero();
123
- }
115
+ $._nftId = getRegistry().getNftIdForAddress(nftOwnableAddress);
124
116
 
125
- if (registryAddress.code.length == 0) {
126
- revert ErrorNotRegistry(registryAddress);
127
- }
117
+ return $._nftId;
118
+ }
128
119
 
129
- _registry = IRegistry(registryAddress);
130
120
 
131
- try _registry.supportsInterface(type(IRegistry).interfaceId) returns (bool isRegistry) {
132
- if (!isRegistry) {
133
- revert ErrorNotRegistry(registryAddress);
134
- }
135
- } catch {
136
- revert ErrorNotRegistry(registryAddress);
121
+ function _getNftOwnableStorage() private pure returns (NftOwnableStorage storage $) {
122
+ // solhint-disable-next-line no-inline-assembly
123
+ assembly {
124
+ $.slot := NFT_OWNABLE_STORAGE_LOCATION_V1
137
125
  }
138
126
  }
139
127
  }
@@ -0,0 +1,62 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
5
+
6
+ import {Amount} from "../type/Amount.sol";
7
+ import {ClaimId} from "../type/ClaimId.sol";
8
+ import {InitializableERC165} from "./InitializableERC165.sol";
9
+ import {IPolicyHolder} from "./IPolicyHolder.sol";
10
+ import {NftId} from "../type/NftId.sol";
11
+ import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
12
+ import {RegistryLinked} from "./RegistryLinked.sol";
13
+ import {Timestamp} from "../type/Timestamp.sol";
14
+
15
+ /// @dev template implementation for IPolicyHolder
16
+ contract PolicyHolder is
17
+ InitializableERC165,
18
+ RegistryLinked,
19
+ IPolicyHolder
20
+ {
21
+ // TODO add modifier to protect callback functions from unauthorized access
22
+ // callbacks must only be allowed from the policy and claim services
23
+ // will need a release parameter to fetch the right service addresses for the modifiers
24
+
25
+ function _initializePolicyHolder(
26
+ address registryAddress
27
+ )
28
+ internal
29
+ virtual
30
+ onlyInitializing()
31
+ {
32
+ __RegistryLinked_init(registryAddress);
33
+ _initializeERC165();
34
+ _registerInterface(type(IPolicyHolder).interfaceId);
35
+ }
36
+
37
+ /// @dev empty default implementation
38
+ function policyActivated(NftId policyNftId, Timestamp activatedAt) external virtual {}
39
+
40
+ /// @dev empty default implementation
41
+ function policyExpired(NftId policyNftId, Timestamp expiredAt) external virtual {}
42
+
43
+ /// @dev empty default implementation
44
+ function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external virtual {}
45
+
46
+ /// @dev empty default implementation
47
+ function payoutExecuted(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary) external virtual {}
48
+
49
+ //--- IERC165 functions ---------------//
50
+ function onERC721Received(
51
+ address, // operator
52
+ address, // from
53
+ uint256, // tokenId
54
+ bytes calldata // data
55
+ )
56
+ external
57
+ virtual
58
+ returns (bytes4)
59
+ {
60
+ return IERC721Receiver.onERC721Received.selector;
61
+ }
62
+ }
@@ -1,29 +1,28 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
6
 
6
- import {NftId, zeroNftId} from "../types/NftId.sol";
7
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
8
+ import {ContractLib} from "../shared/ContractLib.sol";
9
+ import {NftId, NftIdLib} from "../type/NftId.sol";
7
10
  import {NftOwnable} from "../shared/NftOwnable.sol";
8
- import {ObjectType} from "../types/ObjectType.sol";
11
+ import {ObjectType} from "../type/ObjectType.sol";
12
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
9
13
 
10
14
  import {IRegistry} from "../registry/IRegistry.sol";
11
15
  import {IRegisterable} from "./IRegisterable.sol";
12
- import {Versionable} from "./Versionable.sol";
16
+ import {IRelease} from "../registry/IRelease.sol";
13
17
 
14
- import {ERC165} from "./ERC165.sol";
15
-
16
- contract Registerable is
17
- ERC165,
18
- Initializable,
18
+ abstract contract Registerable is
19
+ AccessManagedUpgradeable,
19
20
  NftOwnable,
20
21
  IRegisterable
21
22
  {
22
23
  // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Registerable.sol")) - 1)) & ~bytes32(uint256(0xff));
23
24
  bytes32 public constant REGISTERABLE_LOCATION_V1 = 0x6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa300;
24
25
 
25
- error ErrorRegisterableNotRegistry(address registryAddress);
26
-
27
26
  struct RegisterableStorage {
28
27
  NftId _parentNftId;
29
28
  ObjectType _objectType;
@@ -31,31 +30,32 @@ contract Registerable is
31
30
  bytes _data;
32
31
  }
33
32
 
34
- function _getRegisterableStorage() private pure returns (RegisterableStorage storage $) {
35
- assembly {
36
- $.slot := REGISTERABLE_LOCATION_V1
33
+ modifier onlyActive() {
34
+ if (!isActive()) {
35
+ revert ErrorRegisterableNotActive();
37
36
  }
37
+ _;
38
38
  }
39
39
 
40
- function _initializeRegisterable(
41
- address registryAddress,
40
+ function __Registerable_init(
41
+ address authority,
42
+ address registry,
42
43
  NftId parentNftId,
43
44
  ObjectType objectType,
44
45
  bool isInterceptor,
45
46
  address initialOwner,
46
- bytes memory data
47
+ bytes memory data // writeonly data that will saved in the object info record of the registry
47
48
  )
48
49
  internal
49
- //onlyInitializing//TODO uncomment when "fully" upgradeable
50
50
  virtual
51
+ onlyInitializing()
51
52
  {
52
- _initializeERC165();
53
- _initializeNftOwnable(
54
- initialOwner,
55
- registryAddress);
53
+ if (!ContractLib.isAuthority(authority)) {
54
+ revert ErrorAuthorityInvalid(authority);
55
+ }
56
56
 
57
- // TODO check parentNftId -> registry.isRegistered(parentNftId)
58
- // TODO check object-parent type pair -> registry.isValidTypeCombo() or something...verify with registry that setup will be able to register...
57
+ __AccessManaged_init(authority);
58
+ __NftOwnable_init(registry, initialOwner);
59
59
 
60
60
  RegisterableStorage storage $ = _getRegisterableStorage();
61
61
  $._parentNftId = parentNftId;
@@ -63,24 +63,44 @@ contract Registerable is
63
63
  $._isInterceptor = isInterceptor;
64
64
  $._data = data;
65
65
 
66
- _registerInterface(type(IRegisterable).interfaceId);
66
+ _registerInterface(type(IAccessManaged).interfaceId);
67
+ }
68
+
69
+
70
+ /// @inheritdoc IRegisterable
71
+ function isActive() public virtual view returns (bool active) {
72
+ return !AccessManagerCloneable(authority()).isTargetClosed(address(this));
73
+ }
74
+
75
+
76
+ /// @inheritdoc IRelease
77
+ function getRelease() public virtual view returns (VersionPart release) {
78
+ return AccessManagerCloneable(authority()).getRelease();
67
79
  }
68
80
 
69
81
 
82
+ /// @inheritdoc IRegisterable
70
83
  function getInitialInfo()
71
84
  public
72
85
  view
73
86
  virtual
74
87
  returns (IRegistry.ObjectInfo memory info)
75
88
  {
76
- RegisterableStorage memory $ = _getRegisterableStorage();
77
- info = IRegistry.ObjectInfo(
78
- zeroNftId(),
89
+ RegisterableStorage storage $ = _getRegisterableStorage();
90
+ return IRegistry.ObjectInfo(
91
+ NftIdLib.zero(),
79
92
  $._parentNftId,
80
93
  $._objectType,
81
94
  $._isInterceptor,
82
95
  address(this),
83
- getInitialOwner(),
96
+ getOwner(),
84
97
  $._data);
85
98
  }
99
+
100
+
101
+ function _getRegisterableStorage() private pure returns (RegisterableStorage storage $) {
102
+ assembly {
103
+ $.slot := REGISTERABLE_LOCATION_V1
104
+ }
105
+ }
86
106
  }
@@ -0,0 +1,38 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
+
6
+ import {ContractLib} from "../shared/ContractLib.sol";
7
+ import {IRegistry} from "../registry/IRegistry.sol";
8
+ import {IRegistryLinked} from "./IRegistryLinked.sol";
9
+
10
+ contract RegistryLinked is
11
+ Initializable,
12
+ IRegistryLinked
13
+ {
14
+
15
+ // priorize simplicity and size over using standard upgradeability structs
16
+ IRegistry private _registry;
17
+
18
+ /// @dev initialization for upgradable contracts
19
+ // used in _initializeRegisterable
20
+ function __RegistryLinked_init(
21
+ address registry
22
+ )
23
+ internal
24
+ virtual
25
+ onlyInitializing()
26
+ {
27
+ if (!ContractLib.isRegistry(registry)) {
28
+ revert ErrorNotRegistry(registry);
29
+ }
30
+
31
+ _registry = IRegistry(registry);
32
+ }
33
+
34
+
35
+ function getRegistry() public view returns (IRegistry) {
36
+ return _registry;
37
+ }
38
+ }
@@ -1,60 +1,65 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {ObjectType, SERVICE} from "../types/ObjectType.sol";
5
- import {NftId, zeroNftId} from "../types/NftId.sol";
6
- import {Version, VersionPart, VersionLib} from "../types/Version.sol";
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
+ import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
7
6
 
8
- import {Versionable} from "./Versionable.sol";
7
+ import {IRegistry} from "../registry/IRegistry.sol";
9
8
  import {IService} from "./IService.sol";
10
- import {IVersionable} from "./IVersionable.sol";
11
- import {Versionable} from "./Versionable.sol";
9
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
10
+ import {ObjectType, REGISTRY, SERVICE} from "../type/ObjectType.sol";
12
11
  import {Registerable} from "./Registerable.sol";
13
-
14
- import {IRegistry} from "../registry/IRegistry.sol";
12
+ import {RoleId, RoleIdLib} from "../type/RoleId.sol";
13
+ import {Version, VersionLib, VersionPartLib} from "../type/Version.sol";
14
+ import {Versionable} from "../upgradeability/Versionable.sol";
15
15
 
16
16
 
17
17
  /// @dev service base contract
18
18
  abstract contract Service is
19
19
  Registerable,
20
20
  Versionable,
21
+ ReentrancyGuardUpgradeable,
21
22
  IService
22
23
  {
23
- function getDomain() public pure virtual override returns(ObjectType);
24
-
25
- function getMajorVersion() public view virtual override returns(VersionPart majorVersion) {
26
- return getVersion().toMajorPart();
27
- }
28
-
29
- // from Versionable
30
- function getVersion()
31
- public
32
- pure
33
- virtual override (IVersionable, Versionable)
34
- returns(Version)
35
- {
36
- return VersionLib.toVersion(3,0,0);
37
- }
38
24
 
39
- function _initializeService(
25
+ function __Service_init(
26
+ address authority, // real authority for registry service adress(0) for other services
40
27
  address registry,
41
28
  address initialOwner
42
29
  )
43
30
  internal
44
31
  virtual
45
- //onlyInitializing //TODO uncomment when "fully" upgradeable
32
+ onlyInitializing()
46
33
  {
47
- // service must provide its name and version upon registration
48
- bytes memory data = abi.encode(getDomain(), getMajorVersion());
49
- NftId registryNftId = _getRegistryNftId(registry);
50
- bool isInterceptor = false;
34
+ __ReentrancyGuard_init();
35
+
36
+ __Registerable_init(
37
+ authority,
38
+ registry,
39
+ IRegistry(registry).getNftId(),
40
+ SERVICE(),
41
+ false, // is interceptor
42
+ initialOwner,
43
+ ""); // data
51
44
 
52
- _initializeRegisterable(registry, registryNftId, SERVICE(), isInterceptor, initialOwner, data);
53
45
  _registerInterface(type(IService).interfaceId);
54
46
  }
55
47
 
56
- // this is just a conveniene function, actual validation will be done upon registration
57
- function _getRegistryNftId(address registryAddress) internal view returns (NftId) {
58
- return IRegistry(registryAddress).getNftId(registryAddress);
48
+ function getDomain() external virtual pure returns(ObjectType serviceDomain) {
49
+ return _getDomain();
50
+ }
51
+
52
+ function getVersion() public pure virtual override (IVersionable, Versionable) returns(Version) {
53
+ return VersionLib.toVersion(3, 0, 0);
54
+ }
55
+
56
+ function getRoleId() external virtual view returns(RoleId serviceRoleId) {
57
+ return RoleIdLib.roleForTypeAndVersion(_getDomain(), getRelease());
58
+ }
59
+
60
+ function _getDomain() internal virtual pure returns (ObjectType);
61
+
62
+ function _getServiceAddress(ObjectType domain) internal view returns (address) {
63
+ return getRegistry().getServiceAddress(domain, getRelease());
59
64
  }
60
65
  }