@etherisc/gif-next 0.0.2-b8da656-306 → 0.0.2-b926d1d-788

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 (503) hide show
  1. package/README.md +27 -6
  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 +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +505 -245
  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 +1 -1
  15. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  16. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +273 -16
  18. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +396 -185
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +139 -15
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  26. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +172 -305
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +261 -27
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +103 -185
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +338 -163
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +115 -65
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +90 -167
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  40. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +209 -70
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +184 -230
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +261 -27
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +407 -351
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +258 -28
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +247 -270
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +644 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +156 -175
  57. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +298 -231
  59. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +644 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +744 -335
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +644 -0
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  67. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +236 -39
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +144 -93
  71. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  72. package/artifacts/contracts/instance/Instance.sol/Instance.json +284 -62
  73. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +734 -321
  75. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +205 -90
  77. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +654 -239
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +170 -169
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +69 -49
  83. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +527 -406
  85. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  87. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  89. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  92. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  94. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  96. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  98. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  103. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +142 -183
  106. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +243 -29
  108. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +104 -116
  111. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
  113. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +118 -135
  115. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +151 -81
  117. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +95 -41
  119. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +131 -176
  121. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +261 -27
  123. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +162 -332
  125. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +79 -101
  127. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +90 -141
  129. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +106 -157
  131. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +192 -229
  133. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  134. package/artifacts/contracts/pool/Pool.sol/Pool.json +119 -175
  135. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  136. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  137. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +330 -368
  139. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  140. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +119 -69
  141. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +190 -48
  143. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +80 -38
  145. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  146. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +265 -223
  147. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  148. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +261 -27
  149. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +272 -173
  151. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  152. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +100 -78
  153. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +131 -9
  155. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +170 -19
  157. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +139 -54
  159. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +117 -43
  161. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  162. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +242 -195
  163. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +86 -6
  165. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  166. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +235 -170
  167. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  168. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  169. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +102 -64
  171. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  172. package/artifacts/contracts/product/PricingService.sol/PricingService.json +179 -133
  173. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +75 -57
  175. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  176. package/artifacts/contracts/product/Product.sol/Product.json +255 -213
  177. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  178. package/artifacts/contracts/product/RiskService.sol/RiskService.json +167 -67
  179. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  180. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +92 -38
  181. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  182. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  183. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  184. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +98 -17
  185. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  186. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
  187. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  188. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  189. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  190. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  191. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  192. package/artifacts/contracts/registry/Registry.sol/Registry.json +142 -53
  193. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +600 -440
  195. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  196. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
  197. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  198. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +181 -74
  199. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  200. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +68 -34
  201. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  202. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1954 -0
  203. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  204. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  205. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  206. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +417 -249
  207. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  208. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  209. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  210. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  211. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  212. package/artifacts/contracts/shared/Component.sol/Component.json +94 -93
  213. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  214. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +507 -524
  215. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  216. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +96 -74
  217. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  218. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +55 -2
  219. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  220. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +509 -4
  221. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  227. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +81 -75
  229. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +463 -300
  231. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +104 -116
  233. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  235. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  236. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  237. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  238. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  239. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  240. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  241. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  242. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  243. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  244. package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
  245. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  246. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  247. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  248. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +117 -134
  249. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  250. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  251. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  252. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  253. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  254. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  255. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  256. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +18 -2
  257. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  258. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  259. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  260. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +152 -38
  261. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  262. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  263. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  264. package/artifacts/contracts/shared/Service.sol/Service.json +55 -2
  265. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  266. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
  267. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  268. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  269. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  270. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  271. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  272. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +170 -117
  273. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  274. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +152 -20
  275. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  276. package/artifacts/contracts/staking/Staking.sol/Staking.json +258 -198
  277. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  278. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  279. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  280. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  281. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  282. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +92 -50
  283. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  284. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +34 -61
  285. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  286. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +203 -59
  287. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  288. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +77 -39
  289. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  290. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +191 -136
  291. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  292. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +48 -38
  293. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  294. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/Amount.sol/AmountLib.json +11 -11
  296. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  299. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  301. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
  303. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  304. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  305. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  306. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  307. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  309. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  310. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  311. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  313. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  315. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  317. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  319. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +69 -7
  321. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  323. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  326. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  328. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  330. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  332. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  333. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  334. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +61 -37
  335. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  336. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  337. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  338. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  339. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  340. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  341. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +44 -12
  342. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  343. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  344. package/contracts/accounting/AccountingService.sol +262 -0
  345. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  346. package/contracts/accounting/IAccountingService.sol +45 -0
  347. package/contracts/authorization/AccessAdmin.sol +342 -230
  348. package/contracts/authorization/AccessAdminLib.sol +183 -0
  349. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  350. package/contracts/authorization/Authorization.sol +350 -206
  351. package/contracts/authorization/IAccess.sol +1 -0
  352. package/contracts/authorization/IAccessAdmin.sol +69 -34
  353. package/contracts/authorization/IAuthorization.sol +33 -7
  354. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  355. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  356. package/contracts/distribution/BasicDistribution.sol +20 -17
  357. package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
  358. package/contracts/distribution/Distribution.sol +36 -87
  359. package/contracts/distribution/DistributionService.sol +128 -79
  360. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  361. package/contracts/distribution/IDistributionComponent.sol +1 -10
  362. package/contracts/distribution/IDistributionService.sol +22 -20
  363. package/contracts/examples/fire/FirePool.sol +24 -13
  364. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  365. package/contracts/examples/fire/FireProduct.sol +74 -51
  366. package/contracts/examples/fire/FireProductAuthorization.sol +3 -3
  367. package/contracts/examples/unpermissioned/SimpleDistribution.sol +43 -12
  368. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  369. package/contracts/examples/unpermissioned/SimpleOracle.sol +8 -12
  370. package/contracts/examples/unpermissioned/SimplePool.sol +36 -10
  371. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  372. package/contracts/examples/unpermissioned/SimpleProduct.sol +51 -29
  373. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  374. package/contracts/instance/BundleSet.sol +42 -38
  375. package/contracts/instance/IInstance.sol +60 -17
  376. package/contracts/instance/IInstanceService.sol +27 -31
  377. package/contracts/instance/Instance.sol +115 -40
  378. package/contracts/instance/InstanceAdmin.sol +282 -120
  379. package/contracts/instance/InstanceAuthorizationV3.sol +90 -59
  380. package/contracts/instance/InstanceReader.sol +187 -32
  381. package/contracts/instance/InstanceService.sol +185 -191
  382. package/contracts/instance/InstanceServiceManager.sol +1 -1
  383. package/contracts/instance/InstanceStore.sol +13 -2
  384. package/contracts/instance/RiskSet.sol +118 -0
  385. package/contracts/instance/base/ObjectCounter.sol +1 -2
  386. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  387. package/contracts/instance/base/ObjectSet.sol +31 -33
  388. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  389. package/contracts/instance/module/IBundle.sol +3 -3
  390. package/contracts/instance/module/IComponents.sol +10 -8
  391. package/contracts/instance/module/IDistribution.sol +5 -2
  392. package/contracts/instance/module/IPolicy.sol +3 -2
  393. package/contracts/instance/module/IRisk.sol +3 -0
  394. package/contracts/oracle/BasicOracle.sol +1 -4
  395. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  396. package/contracts/oracle/IOracleService.sol +2 -1
  397. package/contracts/oracle/Oracle.sol +5 -18
  398. package/contracts/oracle/OracleService.sol +107 -78
  399. package/contracts/oracle/OracleServiceManager.sol +1 -1
  400. package/contracts/pool/BasicPool.sol +32 -25
  401. package/contracts/pool/BasicPoolAuthorization.sol +27 -9
  402. package/contracts/pool/BundleService.sol +88 -154
  403. package/contracts/pool/BundleServiceManager.sol +1 -1
  404. package/contracts/pool/IBundleService.sol +15 -43
  405. package/contracts/pool/IPoolComponent.sol +1 -7
  406. package/contracts/pool/IPoolService.sol +58 -64
  407. package/contracts/pool/Pool.sol +112 -122
  408. package/contracts/pool/PoolLib.sol +216 -0
  409. package/contracts/pool/PoolService.sol +434 -242
  410. package/contracts/pool/PoolServiceManager.sol +1 -1
  411. package/contracts/product/ApplicationService.sol +39 -16
  412. package/contracts/product/ApplicationServiceManager.sol +1 -1
  413. package/contracts/product/BasicProduct.sol +9 -13
  414. package/contracts/product/BasicProductAuthorization.sol +24 -11
  415. package/contracts/product/ClaimService.sol +202 -151
  416. package/contracts/product/ClaimServiceManager.sol +1 -1
  417. package/contracts/product/IApplicationService.sol +8 -2
  418. package/contracts/product/IClaimService.sol +14 -2
  419. package/contracts/product/IPolicyService.sol +26 -11
  420. package/contracts/product/IPricingService.sol +10 -9
  421. package/contracts/product/IProductComponent.sol +10 -1
  422. package/contracts/product/IRiskService.sol +7 -7
  423. package/contracts/product/PolicyService.sol +244 -266
  424. package/contracts/product/PolicyServiceLib.sol +65 -0
  425. package/contracts/product/PolicyServiceManager.sol +1 -1
  426. package/contracts/product/PricingService.sol +37 -28
  427. package/contracts/product/PricingServiceManager.sol +3 -3
  428. package/contracts/product/Product.sol +99 -64
  429. package/contracts/product/RiskService.sol +89 -31
  430. package/contracts/product/RiskServiceManager.sol +1 -1
  431. package/contracts/registry/ChainNft.sol +10 -11
  432. package/contracts/registry/IRegistry.sol +14 -18
  433. package/contracts/registry/IRegistryService.sol +6 -4
  434. package/contracts/registry/IRelease.sol +26 -0
  435. package/contracts/registry/ITransferInterceptor.sol +1 -2
  436. package/contracts/registry/Registry.sol +29 -6
  437. package/contracts/registry/RegistryAdmin.sol +145 -351
  438. package/contracts/registry/RegistryAuthorization.sol +267 -0
  439. package/contracts/registry/RegistryService.sol +40 -58
  440. package/contracts/registry/RegistryServiceManager.sol +1 -1
  441. package/contracts/registry/ReleaseAdmin.sol +253 -0
  442. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  443. package/contracts/registry/ReleaseRegistry.sol +271 -245
  444. package/contracts/registry/ServiceAuthorizationV3.sol +181 -48
  445. package/contracts/registry/TokenRegistry.sol +6 -8
  446. package/contracts/shared/Component.sol +61 -119
  447. package/contracts/shared/ComponentService.sol +434 -367
  448. package/contracts/shared/ComponentServiceManager.sol +1 -1
  449. package/contracts/shared/ComponentVerifyingService.sol +27 -15
  450. package/contracts/shared/ContractLib.sol +246 -3
  451. package/contracts/shared/IComponent.sol +5 -17
  452. package/contracts/shared/IComponentService.sol +44 -40
  453. package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
  454. package/contracts/shared/ILifecycle.sol +3 -1
  455. package/contracts/shared/INftOwnable.sol +2 -0
  456. package/contracts/shared/IRegisterable.sol +23 -1
  457. package/contracts/shared/IService.sol +3 -5
  458. package/contracts/shared/InitializableERC165.sol +9 -1
  459. package/contracts/shared/InstanceLinkedComponent.sol +68 -44
  460. package/contracts/shared/KeyValueStore.sol +1 -1
  461. package/contracts/shared/Lifecycle.sol +15 -4
  462. package/contracts/shared/NftOwnable.sol +27 -7
  463. package/contracts/shared/PolicyHolder.sol +1 -1
  464. package/contracts/shared/Registerable.sol +50 -19
  465. package/contracts/shared/RegistryLinked.sol +7 -13
  466. package/contracts/shared/Service.sol +9 -31
  467. package/contracts/shared/TokenHandler.sol +275 -72
  468. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  469. package/contracts/staking/IStaking.sol +17 -10
  470. package/contracts/staking/IStakingService.sol +16 -4
  471. package/contracts/staking/Staking.sol +96 -48
  472. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +80 -23
  473. package/contracts/staking/StakingReader.sol +6 -16
  474. package/contracts/staking/StakingService.sol +81 -24
  475. package/contracts/staking/StakingServiceManager.sol +5 -4
  476. package/contracts/staking/StakingStore.sol +2 -1
  477. package/contracts/type/Fee.sol +7 -8
  478. package/contracts/type/Key32.sol +2 -2
  479. package/contracts/type/Key32Set.sol +62 -0
  480. package/contracts/type/NftId.sol +6 -0
  481. package/contracts/type/ObjectType.sol +54 -35
  482. package/contracts/type/RiskId.sol +26 -8
  483. package/contracts/type/RoleId.sol +23 -15
  484. package/contracts/type/Selector.sol +5 -0
  485. package/contracts/type/StateId.sol +14 -1
  486. package/contracts/type/Timestamp.sol +0 -5
  487. package/contracts/type/UFixed.sol +34 -127
  488. package/contracts/type/Version.sol +54 -5
  489. package/contracts/upgradeability/ProxyManager.sol +2 -1
  490. package/package.json +5 -4
  491. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  492. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  493. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  494. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  495. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  496. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  497. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  498. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
  499. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  500. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  501. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  502. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  503. package/contracts/instance/module/IAccess.sol +0 -46
@@ -1,13 +1,35 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
+
4
6
  import {INftOwnable} from "./INftOwnable.sol";
7
+ import {IRelease} from "../registry/IRelease.sol";
5
8
  import {IRegistry} from "../registry/IRegistry.sol";
9
+ import {VersionPart} from "../type/Version.sol";
6
10
 
11
+ /// @title IRegisterable
12
+ /// @dev Marks contracts that are intended to be registered in the registry.
13
+ ///
7
14
  interface IRegisterable is
8
- INftOwnable
15
+ IAccessManaged,
16
+ INftOwnable,
17
+ IRelease
9
18
  {
19
+ // __Registerable_init
20
+ error ErrorAuthorityInvalid(address authority);
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);
10
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.
11
33
  function getInitialInfo()
12
34
  external
13
35
  view
@@ -9,17 +9,15 @@ import {ObjectType} from "../type/ObjectType.sol";
9
9
  import {RoleId} from "../type/RoleId.sol";
10
10
 
11
11
  interface IService is
12
+ IAccessManaged,
12
13
  IRegisterable,
13
- IVersionable,
14
- IAccessManaged
14
+ IVersionable
15
15
  {
16
- error ErrorServiceNotImplemented();
17
-
18
16
  /// @dev returns the domain for this service.
19
17
  /// In any GIF release only one service for any given domain may be deployed.
20
18
  function getDomain() external pure returns(ObjectType serviceDomain);
21
19
 
22
20
  /// @dev returns the GIF release specific role id.
23
21
  /// These role ids are used to authorize service to service communication.
24
- function getRoleId() external pure returns(RoleId serviceRoleId);
22
+ function getRoleId() external view returns(RoleId serviceRoleId);
25
23
  }
@@ -11,13 +11,21 @@ contract InitializableERC165 is
11
11
  mapping(bytes4 => bool) private _isSupported;
12
12
 
13
13
  // @dev initializes with support for ERC165
14
- function _initializeERC165() internal onlyInitializing() {
14
+ function __ERC165_init() internal onlyInitializing() {
15
+ _initializeERC165();
16
+ }
17
+
18
+ function _initializeERC165() internal {
15
19
  _isSupported[type(IERC165).interfaceId] = true;
16
20
  }
17
21
 
18
22
  // @dev register support for provided interfaceId
19
23
  // includes initialization for ERC165_ID if not yet done
20
24
  function _registerInterface(bytes4 interfaceId) internal onlyInitializing() {
25
+ _registerInterfaceNotInitializing(interfaceId);
26
+ }
27
+
28
+ function _registerInterfaceNotInitializing(bytes4 interfaceId) internal{
21
29
  _isSupported[interfaceId] = true;
22
30
  }
23
31
 
@@ -17,10 +17,10 @@ import {IInstance} from "../instance/IInstance.sol";
17
17
  import {InstanceReader} from "../instance/InstanceReader.sol";
18
18
  import {IRegistry} from "../registry/IRegistry.sol";
19
19
  import {NftId} from "../type/NftId.sol";
20
- import {ObjectType, COMPONENT, INSTANCE} from "../type/ObjectType.sol";
20
+ import {ObjectType, COMPONENT, INSTANCE, PRODUCT} from "../type/ObjectType.sol";
21
21
  import {VersionPart} from "../type/Version.sol";
22
22
  import {RoleId, RoleIdLib} from "../type/RoleId.sol";
23
- import {IAccess} from "../instance/module/IAccess.sol";
23
+ import {IAccess} from "../authorization/IAccess.sol";
24
24
  import {TokenHandler} from "../shared/TokenHandler.sol";
25
25
  import {VersionPart} from "../type/Version.sol";
26
26
 
@@ -40,37 +40,27 @@ abstract contract InstanceLinkedComponent is
40
40
  IComponentService _componentService;
41
41
  }
42
42
 
43
- function lock() external onlyOwner {
44
- IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(true);
45
- }
46
-
47
- function unlock() external onlyOwner {
48
- IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(false);
49
- }
50
-
51
- function getInstance() public view override returns (IInstance instance) {
52
- return _getInstanceLinkedComponentStorage()._instance;
53
- }
54
-
55
- function getProductNftId() public view override returns (NftId productNftId) {
56
- return getComponentInfo().productNftId;
57
- }
58
-
59
- function getAuthorization() external view returns (IAuthorization authorization) {
60
- return _getInstanceLinkedComponentStorage()._initialAuthorization;
61
- }
62
-
63
43
  /// @inheritdoc IInstanceLinkedComponent
64
44
  function withdrawFees(Amount amount)
65
45
  external
66
46
  virtual
67
- onlyOwner()
68
47
  restricted()
48
+ onlyOwner()
69
49
  returns (Amount withdrawnAmount)
70
50
  {
71
51
  return _withdrawFees(amount);
72
52
  }
73
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
+
74
64
  function _getInstanceLinkedComponentStorage() private pure returns (InstanceLinkedComponentStorage storage $) {
75
65
  assembly {
76
66
  $.slot := INSTANCE_LINKED_COMPONENT_LOCATION_V1
@@ -79,50 +69,92 @@ abstract contract InstanceLinkedComponent is
79
69
 
80
70
  function _initializeInstanceLinkedComponent(
81
71
  address registry,
82
- NftId instanceNftId,
72
+ NftId parentNftId,
83
73
  string memory name,
84
- address token,
85
74
  ObjectType componentType,
86
75
  IAuthorization authorization,
87
76
  bool isInterceptor,
88
77
  address initialOwner,
89
- bytes memory registryData, // writeonly data that will saved in the object info record of the registry
90
78
  bytes memory componentData // data that will saved with the component info in the instance store
91
79
  )
92
80
  internal
93
81
  virtual
94
82
  onlyInitializing()
95
83
  {
84
+ // validate registry, nft ids and get parent nft id
85
+ NftId instanceNftId = _checkAndGetInstanceNftId(
86
+ registry,
87
+ parentNftId,
88
+ componentType);
89
+
96
90
  // set and check linked instance
97
91
  InstanceLinkedComponentStorage storage $ = _getInstanceLinkedComponentStorage();
98
92
  $._instance = IInstance(
99
93
  IRegistry(registry).getObjectAddress(instanceNftId));
100
94
 
101
- if(!$._instance.supportsInterface(type(IInstance).interfaceId)) {
102
- revert ErrorComponentNotInstance(instanceNftId);
103
- }
104
-
95
+ // set component specific parameters
105
96
  _initializeComponent(
106
- $._instance.authority(),
97
+ $._instance.authority(), // instance linked components need to point to instance admin
107
98
  registry,
108
- instanceNftId,
99
+ parentNftId,
109
100
  name,
110
- token,
111
101
  componentType,
112
102
  isInterceptor,
113
103
  initialOwner,
114
- registryData,
104
+ "", // registry data
115
105
  componentData);
116
106
 
117
- // set component state
107
+ // set instance linked specific parameters
118
108
  $._instanceReader = $._instance.getInstanceReader();
119
109
  $._initialAuthorization = authorization;
120
110
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
121
111
 
112
+ // register interfaces
122
113
  _registerInterface(type(IAccessManaged).interfaceId);
123
114
  _registerInterface(type(IInstanceLinkedComponent).interfaceId);
124
115
  }
125
116
 
117
+
118
+ function _checkAndGetInstanceNftId(
119
+ address registryAddress,
120
+ NftId parentNftId,
121
+ ObjectType componentType
122
+ )
123
+ internal
124
+ view
125
+ returns (NftId instanceNftId)
126
+ {
127
+ // if product, then parent is already instance
128
+ if (componentType == PRODUCT()) {
129
+ _checkAndGetRegistry(registryAddress, parentNftId, INSTANCE());
130
+ return parentNftId;
131
+ }
132
+
133
+ // if not product parent is product, and parent of product is instance
134
+ IRegistry registry = _checkAndGetRegistry(registryAddress, parentNftId, PRODUCT());
135
+ return registry.getParentNftId(parentNftId);
136
+ }
137
+
138
+ /// @dev checks the and gets registry.
139
+ /// validates registry using a provided nft id and expected object type.
140
+ function _checkAndGetRegistry(
141
+ address registryAddress,
142
+ NftId objectNftId,
143
+ ObjectType requiredType
144
+ )
145
+ internal
146
+ view
147
+ returns (IRegistry registry)
148
+ {
149
+ registry = IRegistry(registryAddress);
150
+ IRegistry.ObjectInfo memory info = registry.getObjectInfo(objectNftId);
151
+
152
+ if (info.objectType != requiredType) {
153
+ revert ErrorInstanceLinkedComponentTypeMismatch(requiredType, info.objectType);
154
+ }
155
+ }
156
+
157
+
126
158
  /// @dev for instance linked components the wallet address stored in the instance store.
127
159
  /// updating needs to go throug component service
128
160
  function _setWallet(address newWallet) internal virtual override onlyOwner {
@@ -139,7 +171,7 @@ abstract contract InstanceLinkedComponent is
139
171
  info = _getInstanceReader().getComponentInfo(getNftId());
140
172
 
141
173
  // check if also registered with instance
142
- if (info.wallet != address(0)) {
174
+ if (address(info.tokenHandler) != address(0)) {
143
175
  return info;
144
176
  }
145
177
  }
@@ -160,12 +192,4 @@ abstract contract InstanceLinkedComponent is
160
192
  {
161
193
  return _getInstanceLinkedComponentStorage()._componentService.withdrawFees(amount);
162
194
  }
163
-
164
-
165
- /// @dev returns the service address for the specified domain
166
- /// gets address via lookup from registry using the major version form the linked instance
167
- function _getServiceAddress(ObjectType domain) internal view returns (address service) {
168
- VersionPart majorVersion = _getInstanceLinkedComponentStorage()._instance.getMajorVersion();
169
- return getRegistry().getServiceAddress(domain, majorVersion);
170
- }
171
195
  }
@@ -94,7 +94,7 @@ abstract contract KeyValueStore is
94
94
 
95
95
  // update state
96
96
  if(state != KEEP_STATE()) {
97
- checkTransition(metadata.objectType, stateOld, state);
97
+ checkTransition(stateOld, metadata.objectType, stateOld, state);
98
98
  metadata.state = state;
99
99
 
100
100
  // solhint-disable-next-line avoid-tx-origin
@@ -49,8 +49,9 @@ abstract contract Lifecycle is
49
49
  }
50
50
 
51
51
  function checkTransition(
52
+ StateId stateId,
52
53
  ObjectType objectType,
53
- StateId fromId,
54
+ StateId expectedFromId,
54
55
  StateId toId
55
56
  )
56
57
  public
@@ -58,12 +59,22 @@ abstract contract Lifecycle is
58
59
  {
59
60
  // revert if no life cycle support
60
61
  if (_initialState[objectType].eqz()) {
61
- revert ErrorNoLifecycle(objectType);
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);
62
68
  }
63
69
 
64
70
  // enforce valid state transition
65
- if (!_isValidTransition[objectType][fromId][toId]) {
66
- revert ErrorInvalidStateTransition(objectType, fromId, toId);
71
+ if (!_isValidTransition[objectType][stateId][toId]) {
72
+ revert ErrorInvalidStateTransition(
73
+ address(this),
74
+ objectType,
75
+ stateId,
76
+ toId
77
+ );
67
78
  }
68
79
  }
69
80
 
@@ -4,6 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {InitializableERC165} from "./InitializableERC165.sol";
5
5
  import {INftOwnable} from "./INftOwnable.sol";
6
6
  import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
7
8
  import {RegistryLinked} from "./RegistryLinked.sol";
8
9
 
9
10
  contract NftOwnable is
@@ -27,19 +28,37 @@ contract NftOwnable is
27
28
  _;
28
29
  }
29
30
 
31
+ modifier onlyNftOwner(NftId nftId) {
32
+ if(!getRegistry().isOwnerOf(nftId, msg.sender)) {
33
+ revert ErrorNftOwnableNotOwner(msg.sender);
34
+ }
35
+ _;
36
+ }
37
+
38
+ modifier onlyNftOfType(NftId nftId, ObjectType expectedObjectType) {
39
+ _checkNftType(nftId, expectedObjectType);
40
+ _;
41
+ }
42
+
43
+ function _checkNftType(NftId nftId, ObjectType expectedObjectType) internal view {
44
+ if(!getRegistry().isObjectType(nftId, expectedObjectType)) {
45
+ revert ErrorNftOwnableInvalidType(nftId, expectedObjectType);
46
+ }
47
+ }
48
+
30
49
 
31
- /// @dev initialization for upgradable contracts
32
- // used in _initializeRegisterable
33
- function _initializeNftOwnable(
34
- address initialOwner,
35
- address registryAddress
50
+ /// @dev Initialization for upgradable contracts.
51
+ // used in __Registerable_init, ProxyManager._preDeployChecksAndSetup
52
+ function __NftOwnable_init(
53
+ address registry,
54
+ address initialOwner
36
55
  )
37
56
  internal
38
57
  virtual
39
58
  onlyInitializing()
40
59
  {
41
- _initializeRegistryLinked(registryAddress);
42
- _initializeERC165();
60
+ __ERC165_init();
61
+ __RegistryLinked_init(registry);
43
62
 
44
63
  if(initialOwner == address(0)) {
45
64
  revert ErrorNftOwnableInitialOwnerZero();
@@ -100,6 +119,7 @@ contract NftOwnable is
100
119
 
101
120
 
102
121
  function _getNftOwnableStorage() private pure returns (NftOwnableStorage storage $) {
122
+ // solhint-disable-next-line no-inline-assembly
103
123
  assembly {
104
124
  $.slot := NFT_OWNABLE_STORAGE_LOCATION_V1
105
125
  }
@@ -29,7 +29,7 @@ contract PolicyHolder is
29
29
  virtual
30
30
  onlyInitializing()
31
31
  {
32
- _initializeRegistryLinked(registryAddress);
32
+ __RegistryLinked_init(registryAddress);
33
33
  _initializeERC165();
34
34
  _registerInterface(type(IPolicyHolder).interfaceId);
35
35
  }
@@ -1,16 +1,22 @@
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
 
7
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
8
+ import {ContractLib} from "../shared/ContractLib.sol";
6
9
  import {NftId, NftIdLib} from "../type/NftId.sol";
7
10
  import {NftOwnable} from "../shared/NftOwnable.sol";
8
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";
16
+ import {IRelease} from "../registry/IRelease.sol";
12
17
 
13
- contract Registerable is
18
+ abstract contract Registerable is
19
+ AccessManagedUpgradeable,
14
20
  NftOwnable,
15
21
  IRegisterable
16
22
  {
@@ -24,46 +30,64 @@ contract Registerable is
24
30
  bytes _data;
25
31
  }
26
32
 
27
- function _initializeRegisterable(
28
- address registryAddress,
33
+ modifier onlyActive() {
34
+ if (!isActive()) {
35
+ revert ErrorRegisterableNotActive();
36
+ }
37
+ _;
38
+ }
39
+
40
+ function __Registerable_init(
41
+ address authority,
42
+ address registry,
29
43
  NftId parentNftId,
30
44
  ObjectType objectType,
31
45
  bool isInterceptor,
32
46
  address initialOwner,
33
- bytes memory registryData // writeonly data that will saved in the object info record of the registry
47
+ bytes memory data // writeonly data that will saved in the object info record of the registry
34
48
  )
35
49
  internal
36
50
  virtual
37
51
  onlyInitializing()
38
52
  {
39
- _initializeNftOwnable(
40
- initialOwner,
41
- registryAddress);
42
-
43
- RegisterableStorage storage $;
44
- assembly {
45
- $.slot := REGISTERABLE_LOCATION_V1
53
+ if (!ContractLib.isAuthority(authority)) {
54
+ revert ErrorAuthorityInvalid(authority);
46
55
  }
47
56
 
57
+ __AccessManaged_init(authority);
58
+ __NftOwnable_init(registry, initialOwner);
59
+
60
+ RegisterableStorage storage $ = _getRegisterableStorage();
48
61
  $._parentNftId = parentNftId;
49
62
  $._objectType = objectType;
50
63
  $._isInterceptor = isInterceptor;
51
- $._data = registryData;
64
+ $._data = data;
65
+
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();
52
79
  }
53
80
 
54
81
 
82
+ /// @inheritdoc IRegisterable
55
83
  function getInitialInfo()
56
84
  public
57
85
  view
58
86
  virtual
59
87
  returns (IRegistry.ObjectInfo memory info)
60
88
  {
61
- RegisterableStorage storage $;
62
- assembly {
63
- $.slot := REGISTERABLE_LOCATION_V1
64
- }
65
-
66
- info = IRegistry.ObjectInfo(
89
+ RegisterableStorage storage $ = _getRegisterableStorage();
90
+ return IRegistry.ObjectInfo(
67
91
  NftIdLib.zero(),
68
92
  $._parentNftId,
69
93
  $._objectType,
@@ -72,4 +96,11 @@ contract Registerable is
72
96
  getOwner(),
73
97
  $._data);
74
98
  }
99
+
100
+
101
+ function _getRegisterableStorage() private pure returns (RegisterableStorage storage $) {
102
+ assembly {
103
+ $.slot := REGISTERABLE_LOCATION_V1
104
+ }
105
+ }
75
106
  }
@@ -2,6 +2,8 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
+
6
+ import {ContractLib} from "../shared/ContractLib.sol";
5
7
  import {IRegistry} from "../registry/IRegistry.sol";
6
8
  import {IRegistryLinked} from "./IRegistryLinked.sol";
7
9
 
@@ -15,26 +17,18 @@ contract RegistryLinked is
15
17
 
16
18
  /// @dev initialization for upgradable contracts
17
19
  // used in _initializeRegisterable
18
- function _initializeRegistryLinked(
19
- address registryAddress
20
+ function __RegistryLinked_init(
21
+ address registry
20
22
  )
21
23
  internal
22
24
  virtual
23
25
  onlyInitializing()
24
26
  {
25
- if (registryAddress.code.length == 0) {
26
- revert ErrorNotRegistry(registryAddress);
27
+ if (!ContractLib.isRegistry(registry)) {
28
+ revert ErrorNotRegistry(registry);
27
29
  }
28
30
 
29
- _registry = IRegistry(registryAddress);
30
-
31
- try _registry.supportsInterface(type(IRegistry).interfaceId) returns (bool isRegistry) {
32
- if (!isRegistry) {
33
- revert ErrorNotRegistry(registryAddress);
34
- }
35
- } catch {
36
- revert ErrorNotRegistry(registryAddress);
37
- }
31
+ _registry = IRegistry(registry);
38
32
  }
39
33
 
40
34
 
@@ -1,7 +1,6 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
4
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
5
  import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
7
6
 
@@ -19,17 +18,13 @@ import {Versionable} from "../upgradeability/Versionable.sol";
19
18
  abstract contract Service is
20
19
  Registerable,
21
20
  Versionable,
22
- AccessManagedUpgradeable,
23
21
  ReentrancyGuardUpgradeable,
24
22
  IService
25
23
  {
26
24
 
27
- uint8 private constant GIF_MAJOR_VERSION = 3;
28
-
29
-
30
- function _initializeService(
31
- address registry,
25
+ function __Service_init(
32
26
  address authority, // real authority for registry service adress(0) for other services
27
+ address registry,
33
28
  address initialOwner
34
29
  )
35
30
  internal
@@ -38,17 +33,8 @@ abstract contract Service is
38
33
  {
39
34
  __ReentrancyGuard_init();
40
35
 
41
- // externally provided authority
42
- if(authority != address(0)) {
43
- __AccessManaged_init(authority);
44
- } else {
45
- address registryServiceAddress = _getServiceAddress(REGISTRY());
46
-
47
- // copy authority from already registered registry services
48
- __AccessManaged_init(IAccessManaged(registryServiceAddress).authority());
49
- }
50
-
51
- _initializeRegisterable(
36
+ __Registerable_init(
37
+ authority,
52
38
  registry,
53
39
  IRegistry(registry).getNftId(),
54
40
  SERVICE(),
@@ -56,8 +42,6 @@ abstract contract Service is
56
42
  initialOwner,
57
43
  ""); // data
58
44
 
59
-
60
- _registerInterface(type(IAccessManaged).interfaceId);
61
45
  _registerInterface(type(IService).interfaceId);
62
46
  }
63
47
 
@@ -65,23 +49,17 @@ abstract contract Service is
65
49
  return _getDomain();
66
50
  }
67
51
 
68
- function getRoleId() external virtual pure returns(RoleId serviceRoleId) {
69
- return RoleIdLib.roleForTypeAndVersion(_getDomain(), VersionPartLib.toVersionPart(GIF_MAJOR_VERSION));
52
+ function getVersion() public pure virtual override (IVersionable, Versionable) returns(Version) {
53
+ return VersionLib.toVersion(3, 0, 0);
70
54
  }
71
55
 
72
- // from Versionable
73
- function getVersion()
74
- public
75
- pure
76
- virtual override (IVersionable, Versionable)
77
- returns(Version)
78
- {
79
- return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
56
+ function getRoleId() external virtual view returns(RoleId serviceRoleId) {
57
+ return RoleIdLib.roleForTypeAndVersion(_getDomain(), getRelease());
80
58
  }
81
59
 
82
60
  function _getDomain() internal virtual pure returns (ObjectType);
83
61
 
84
62
  function _getServiceAddress(ObjectType domain) internal view returns (address) {
85
- return getRegistry().getServiceAddress(domain, VersionPartLib.toVersionPart(GIF_MAJOR_VERSION));
63
+ return getRegistry().getServiceAddress(domain, getRelease());
86
64
  }
87
65
  }