@etherisc/gif-next 0.0.2-ef935e0-790 → 0.0.2-efc2128-633

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 (670) hide show
  1. package/README.md +121 -18
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → authorization/IAccessAdmin.sol/IAccessAdmin.json} +499 -549
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1489 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1159 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1512 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +838 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +906 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +932 -0
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +454 -555
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +447 -170
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +403 -3038
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +855 -407
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +603 -334
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +352 -106
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3722 -0
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +38 -2
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -112
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  70. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  71. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  74. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  75. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  77. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1126 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  79. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  82. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  83. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → oracle/IOracleComponent.sol/IOracleComponent.json} +384 -370
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1018 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  92. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  93. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1395 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  95. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1474 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +822 -0
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  101. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +907 -0
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +909 -0
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1208 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  107. package/artifacts/contracts/pool/Pool.sol/Pool.json +1181 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1591 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +746 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  113. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +852 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  117. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1243 -0
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  121. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1437 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +826 -0
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  125. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +241 -190
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  127. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +886 -0
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  129. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +795 -0
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  131. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IPricingService.sol/IPricingService.json} +290 -187
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  133. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +948 -0
  134. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  135. package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → product/IRiskService.sol/IRiskService.json} +124 -166
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  137. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1226 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PricingService.sol/PricingService.json +972 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +766 -0
  144. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  145. package/artifacts/contracts/product/Product.sol/Product.json +1201 -0
  146. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  147. package/artifacts/contracts/product/RiskService.sol/RiskService.json +695 -0
  148. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +702 -0
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  151. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +397 -113
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +290 -297
  156. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  157. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  158. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  159. package/artifacts/contracts/registry/Registry.sol/Registry.json +764 -315
  160. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  161. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  162. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +477 -318
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +337 -129
  166. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  168. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  170. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  171. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  172. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  173. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +351 -100
  174. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  175. package/artifacts/contracts/shared/Component.sol/Component.json +832 -0
  176. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1680 -0
  178. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +804 -0
  180. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  181. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +208 -209
  182. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  183. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → shared/IComponent.sol/IComponent.json} +300 -256
  184. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  186. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  187. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +700 -0
  188. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  190. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  191. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  192. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  194. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  195. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  196. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
  198. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  199. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  200. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IService.sol/IService.json +97 -172
  202. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  203. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  204. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  206. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  207. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +940 -0
  208. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  209. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  210. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  211. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  212. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  213. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  214. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
  216. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
  220. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  222. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Service.sol/Service.json +201 -162
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +382 -9
  226. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  227. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  228. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  229. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1422 -0
  230. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  231. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  232. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +387 -0
  234. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  235. package/artifacts/contracts/staking/Staking.sol/Staking.json +1951 -0
  236. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  238. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  240. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  242. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  244. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  246. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  248. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  249. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  250. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  251. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  252. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  254. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  256. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  258. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  260. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  262. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  264. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  266. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  267. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  268. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  270. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  272. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  274. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  276. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  278. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  280. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  282. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  284. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  286. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  287. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  288. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  290. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  292. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  294. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  296. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  298. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  300. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  301. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  302. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  303. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  304. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  305. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  306. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  307. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  308. package/contracts/authorization/AccessAdmin.sol +591 -0
  309. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  310. package/contracts/authorization/Authorization.sol +217 -0
  311. package/contracts/authorization/IAccess.sol +48 -0
  312. package/contracts/authorization/IAccessAdmin.sol +136 -0
  313. package/contracts/authorization/IAuthorization.sol +54 -0
  314. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  315. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  316. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  317. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  318. package/contracts/distribution/BasicDistribution.sol +138 -0
  319. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  320. package/contracts/distribution/Distribution.sol +295 -0
  321. package/contracts/distribution/DistributionService.sol +336 -0
  322. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  323. package/contracts/distribution/IDistributionComponent.sol +52 -0
  324. package/contracts/distribution/IDistributionService.sol +101 -0
  325. package/contracts/instance/BundleSet.sol +126 -0
  326. package/contracts/instance/IInstance.sol +56 -32
  327. package/contracts/instance/IInstanceService.sol +78 -16
  328. package/contracts/instance/Instance.sol +159 -373
  329. package/contracts/instance/InstanceAdmin.sol +285 -0
  330. package/contracts/instance/InstanceAuthorizationV3.sol +203 -0
  331. package/contracts/instance/InstanceReader.sol +201 -85
  332. package/contracts/instance/InstanceService.sol +407 -123
  333. package/contracts/instance/InstanceServiceManager.sol +13 -30
  334. package/contracts/instance/InstanceStore.sol +291 -0
  335. package/contracts/instance/base/BalanceStore.sol +123 -0
  336. package/contracts/instance/base/Cloneable.sol +28 -0
  337. package/contracts/instance/base/ObjectCounter.sol +21 -0
  338. package/contracts/instance/base/ObjectLifecycle.sol +110 -0
  339. package/contracts/instance/base/ObjectSet.sol +79 -0
  340. package/contracts/instance/module/IAccess.sol +29 -21
  341. package/contracts/instance/module/IBundle.sol +8 -8
  342. package/contracts/instance/module/IComponents.sol +46 -0
  343. package/contracts/instance/module/IDistribution.sol +6 -4
  344. package/contracts/instance/module/IPolicy.sol +59 -19
  345. package/contracts/instance/module/IRisk.sol +1 -1
  346. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  347. package/contracts/oracle/BasicOracle.sol +48 -0
  348. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  349. package/contracts/oracle/IOracle.sol +36 -0
  350. package/contracts/oracle/IOracleComponent.sol +33 -0
  351. package/contracts/oracle/IOracleService.sol +65 -0
  352. package/contracts/oracle/Oracle.sol +167 -0
  353. package/contracts/oracle/OracleService.sol +279 -0
  354. package/contracts/oracle/OracleServiceManager.sol +39 -0
  355. package/contracts/pool/BasicPool.sol +166 -0
  356. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  357. package/contracts/pool/BundleService.sol +438 -0
  358. package/contracts/pool/BundleServiceManager.sol +39 -0
  359. package/contracts/pool/IBundleService.sol +134 -0
  360. package/contracts/pool/IPoolComponent.sol +58 -0
  361. package/contracts/pool/IPoolService.sol +160 -0
  362. package/contracts/pool/Pool.sol +326 -0
  363. package/contracts/pool/PoolService.sol +509 -0
  364. package/contracts/pool/PoolServiceManager.sol +39 -0
  365. package/contracts/product/ApplicationService.sol +249 -0
  366. package/contracts/product/ApplicationServiceManager.sol +38 -0
  367. package/contracts/product/BasicProduct.sol +53 -0
  368. package/contracts/product/BasicProductAuthorization.sol +43 -0
  369. package/contracts/product/ClaimService.sol +487 -0
  370. package/contracts/product/ClaimServiceManager.sol +38 -0
  371. package/contracts/product/IApplicationService.sol +63 -0
  372. package/contracts/product/IClaimService.sol +122 -0
  373. package/contracts/product/IPolicyService.sol +73 -0
  374. package/contracts/product/IPricingService.sol +39 -0
  375. package/contracts/product/IProductComponent.sol +39 -0
  376. package/contracts/product/IRiskService.sol +33 -0
  377. package/contracts/product/PolicyService.sol +574 -0
  378. package/contracts/product/PolicyServiceManager.sol +39 -0
  379. package/contracts/product/PricingService.sol +301 -0
  380. package/contracts/product/PricingServiceManager.sol +39 -0
  381. package/contracts/product/Product.sol +425 -0
  382. package/contracts/product/RiskService.sol +97 -0
  383. package/contracts/product/RiskServiceManager.sol +39 -0
  384. package/contracts/registry/ChainNft.sol +15 -0
  385. package/contracts/registry/IRegistry.sol +88 -33
  386. package/contracts/registry/IRegistryService.sol +47 -28
  387. package/contracts/registry/ITransferInterceptor.sol +1 -0
  388. package/contracts/registry/Registry.sol +378 -246
  389. package/contracts/registry/RegistryAdmin.sol +374 -0
  390. package/contracts/registry/RegistryService.sol +111 -217
  391. package/contracts/registry/RegistryServiceManager.sol +26 -53
  392. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  393. package/contracts/registry/ReleaseRegistry.sol +485 -0
  394. package/contracts/registry/ServiceAuthorizationV3.sol +199 -0
  395. package/contracts/registry/TokenRegistry.sol +261 -57
  396. package/contracts/shared/Component.sol +268 -0
  397. package/contracts/shared/ComponentService.sol +641 -0
  398. package/contracts/shared/ComponentServiceManager.sol +35 -0
  399. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  400. package/contracts/shared/IComponent.sol +70 -0
  401. package/contracts/shared/IComponentService.sol +108 -0
  402. package/contracts/shared/IInstanceLinkedComponent.sol +49 -0
  403. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  404. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  405. package/contracts/shared/INftOwnable.sol +13 -12
  406. package/contracts/shared/IPolicyHolder.sol +45 -0
  407. package/contracts/shared/IRegisterable.sol +4 -6
  408. package/contracts/shared/IRegistryLinked.sol +11 -0
  409. package/contracts/shared/IService.sol +16 -6
  410. package/contracts/shared/InitializableCustom.sol +177 -0
  411. package/contracts/shared/InitializableERC165.sol +27 -0
  412. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  413. package/contracts/shared/KeyValueStore.sol +131 -0
  414. package/contracts/shared/Lifecycle.sol +77 -0
  415. package/contracts/shared/NftIdSet.sol +65 -0
  416. package/contracts/shared/NftOwnable.sol +59 -86
  417. package/contracts/shared/PolicyHolder.sol +99 -0
  418. package/contracts/shared/Registerable.sol +26 -41
  419. package/contracts/shared/RegistryLinked.sol +43 -0
  420. package/contracts/shared/Service.sol +58 -31
  421. package/contracts/shared/TokenHandler.sol +122 -10
  422. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  423. package/contracts/staking/IStaking.sol +167 -0
  424. package/contracts/staking/IStakingService.sol +160 -0
  425. package/contracts/staking/StakeManagerLib.sol +206 -0
  426. package/contracts/staking/Staking.sol +497 -0
  427. package/contracts/staking/StakingLifecycle.sol +23 -0
  428. package/contracts/staking/StakingManager.sol +50 -0
  429. package/contracts/staking/StakingReader.sol +183 -0
  430. package/contracts/staking/StakingService.sol +407 -0
  431. package/contracts/staking/StakingServiceManager.sol +44 -0
  432. package/contracts/staking/StakingStore.sol +605 -0
  433. package/contracts/staking/TargetManagerLib.sol +211 -0
  434. package/contracts/{types → type}/AddressSet.sol +1 -1
  435. package/contracts/type/Amount.sol +135 -0
  436. package/contracts/{types → type}/Blocknumber.sol +27 -3
  437. package/contracts/type/ClaimId.sol +75 -0
  438. package/contracts/{types → type}/DistributorType.sol +2 -2
  439. package/contracts/{types → type}/Fee.sol +33 -23
  440. package/contracts/{types → type}/NftId.sol +21 -15
  441. package/contracts/type/NftIdSet.sol +62 -0
  442. package/contracts/type/ObjectType.sol +275 -0
  443. package/contracts/type/PayoutId.sol +82 -0
  444. package/contracts/{types → type}/Referral.sol +6 -1
  445. package/contracts/type/RequestId.sol +75 -0
  446. package/contracts/{types → type}/RiskId.sol +1 -1
  447. package/contracts/type/RoleId.sol +174 -0
  448. package/contracts/type/Seconds.sol +101 -0
  449. package/contracts/type/Selector.sol +102 -0
  450. package/contracts/{types → type}/StateId.sol +34 -4
  451. package/contracts/type/String.sol +53 -0
  452. package/contracts/{types → type}/Timestamp.sol +34 -15
  453. package/contracts/{types → type}/UFixed.sol +35 -9
  454. package/contracts/{types → type}/Version.sol +5 -2
  455. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  456. package/contracts/upgradeability/ProxyManager.sol +198 -0
  457. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  458. package/contracts/upgradeability/Versionable.sol +59 -0
  459. package/package.json +10 -7
  460. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  461. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
  462. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  463. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -618
  464. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  465. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  466. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  467. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  468. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  469. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  470. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  471. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  472. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  473. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -782
  474. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  475. package/artifacts/contracts/components/Product.sol/Product.json +0 -775
  476. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  477. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  478. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  480. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  482. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  484. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  485. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  486. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  487. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  488. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  489. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  490. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  491. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  492. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  493. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  494. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  496. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  498. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  499. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  500. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  501. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  503. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  505. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  506. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  507. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  508. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  509. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  510. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  511. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  512. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  513. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  514. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  515. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  516. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  517. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  518. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  519. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
  520. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  521. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  522. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  523. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  524. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  525. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  526. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  527. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  528. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  529. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  530. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  531. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  532. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  533. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  534. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
  535. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  536. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -444
  537. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  538. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  539. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  540. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  541. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  542. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -839
  543. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  544. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -448
  545. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  546. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  547. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  548. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  549. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  550. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  551. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  552. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  553. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  554. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  555. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  556. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  557. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  558. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  559. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  560. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  561. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  562. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  563. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  564. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  565. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  566. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  567. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  568. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  569. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  570. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  571. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  572. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  573. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  574. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  575. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  576. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  577. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  578. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  579. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  580. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  581. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  582. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  583. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  584. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  585. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  586. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  587. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  588. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  589. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  590. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  591. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  592. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  593. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  594. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  595. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  596. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  597. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  598. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  599. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  600. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  601. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  602. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  603. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  604. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  605. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  606. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  607. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  608. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  609. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  610. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  611. package/contracts/components/BaseComponent.sol +0 -91
  612. package/contracts/components/Distribution.sol +0 -160
  613. package/contracts/components/IBaseComponent.sol +0 -25
  614. package/contracts/components/IDistributionComponent.sol +0 -44
  615. package/contracts/components/IPoolComponent.sol +0 -62
  616. package/contracts/components/IProductComponent.sol +0 -35
  617. package/contracts/components/Pool.sol +0 -243
  618. package/contracts/components/Product.sol +0 -297
  619. package/contracts/experiment/cloning/Cloner.sol +0 -47
  620. package/contracts/experiment/errors/Require.sol +0 -38
  621. package/contracts/experiment/errors/Revert.sol +0 -44
  622. package/contracts/experiment/inheritance/A.sol +0 -53
  623. package/contracts/experiment/inheritance/B.sol +0 -28
  624. package/contracts/experiment/inheritance/C.sol +0 -34
  625. package/contracts/experiment/inheritance/IA.sol +0 -13
  626. package/contracts/experiment/inheritance/IB.sol +0 -10
  627. package/contracts/experiment/inheritance/IC.sol +0 -12
  628. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  629. package/contracts/experiment/statemachine/ISM.sol +0 -25
  630. package/contracts/experiment/statemachine/SM.sol +0 -57
  631. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  632. package/contracts/experiment/types/TypeA.sol +0 -47
  633. package/contracts/experiment/types/TypeB.sol +0 -29
  634. package/contracts/instance/AccessManagedSimple.sol +0 -115
  635. package/contracts/instance/AccessManagerSimple.sol +0 -692
  636. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  637. package/contracts/instance/InstanceAccessManager.sol +0 -288
  638. package/contracts/instance/base/ComponentServiceBase.sol +0 -124
  639. package/contracts/instance/base/IInstanceBase.sol +0 -23
  640. package/contracts/instance/base/KeyValueStore.sol +0 -172
  641. package/contracts/instance/base/Lifecycle.sol +0 -100
  642. package/contracts/instance/module/ISetup.sol +0 -44
  643. package/contracts/instance/module/ITreasury.sol +0 -23
  644. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  645. package/contracts/instance/service/DistributionService.sol +0 -88
  646. package/contracts/instance/service/DistributionServiceManager.sol +0 -54
  647. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  648. package/contracts/instance/service/IDistributionService.sol +0 -12
  649. package/contracts/instance/service/IPoolService.sol +0 -37
  650. package/contracts/instance/service/IProductService.sol +0 -107
  651. package/contracts/instance/service/PoolService.sol +0 -194
  652. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  653. package/contracts/shared/ContractDeployerLib.sol +0 -72
  654. package/contracts/shared/ERC165.sol +0 -25
  655. package/contracts/shared/ProxyManager.sol +0 -94
  656. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  657. package/contracts/shared/Versionable.sol +0 -147
  658. package/contracts/test/TestFee.sol +0 -25
  659. package/contracts/test/TestRegisterable.sol +0 -18
  660. package/contracts/test/TestRoleId.sol +0 -14
  661. package/contracts/test/TestService.sol +0 -24
  662. package/contracts/test/TestToken.sol +0 -26
  663. package/contracts/test/TestVersion.sol +0 -44
  664. package/contracts/test/TestVersionable.sol +0 -17
  665. package/contracts/types/ChainId.sol +0 -38
  666. package/contracts/types/NftIdSet.sol +0 -60
  667. package/contracts/types/NumberId.sol +0 -52
  668. package/contracts/types/ObjectType.sol +0 -152
  669. package/contracts/types/RoleId.sol +0 -89
  670. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -1,202 +1,241 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IRegisterable} from "../shared/IRegisterable.sol";
5
- import {IService} from "../shared/IService.sol";
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
6
 
7
- import {ChainNft} from "./ChainNft.sol";
8
- import {IRegistry} from "./IRegistry.sol";
9
- import {NftId, toNftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
10
- import {Version, VersionPart, VersionLib, VersionPartLib} from "../types/Version.sol";
11
- import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, ORACLE, POOL, POLICY, BUNDLE} from "../types/ObjectType.sol";
12
- import {ITransferInterceptor} from "./ITransferInterceptor.sol";
7
+ import {InitializableCustom} from "../shared/InitializableCustom.sol";
13
8
 
14
- import {ERC165} from "../shared/ERC165.sol";
9
+ import {NftId, NftIdLib} from "../type/NftId.sol";
10
+ import {VersionPart} from "../type/Version.sol";
11
+ import {ObjectType, PROTOCOL, REGISTRY, SERVICE, INSTANCE, STAKE, STAKING, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
15
12
 
13
+ import {ChainNft} from "./ChainNft.sol";
14
+ import {IRegistry} from "./IRegistry.sol";
15
+ import {IRegisterable} from "../shared/IRegisterable.sol";
16
+ import {ReleaseRegistry} from "./ReleaseRegistry.sol";
17
+ import {TokenRegistry} from "./TokenRegistry.sol";
18
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
16
19
 
17
20
  // IMPORTANT
18
21
  // Each NFT minted by registry is accosiated with:
19
22
  // 1) NFT owner
20
23
  // 2) registred contract OR object stored in registered (parent) contract
21
24
  // Four registration flows:
22
- // 1) non IRegisterable address by registryOwner (TOKEN)
23
- // 2) IRegisterable address by registryOwner (SERVICE)
24
- // 3) IRegisterable address by approved service (INSTANCE, COMPONENT)
25
- // 4) state object by approved service (POLICY, BUNDLE, STAKE)
25
+ // 1) IService address by release manager (SERVICE of domain SERVICE aka registry service aka release creation)
26
+ // 2) IService address by release manager (SERVICE of domain !SERVICE aka regular service)
27
+ // 3) IRegisterable address by regular service (INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE)
28
+ // 4) state object by regular service (POLICY, BUNDLE, STAKE)
26
29
 
30
+ /// @title Chain Registry contract implementing IRegistry.
31
+ /// @notice See IRegistry for method details.
27
32
  contract Registry is
28
- ERC165,
33
+ InitializableCustom,
29
34
  IRegistry
30
35
  {
31
- uint256 public constant GIF_MAJOR_VERSION_AT_DEPLOYMENT = 3;
32
- address public constant NFT_LOCK_ADDRESS = address(0x1);
36
+ address public NFT_LOCK_ADDRESS = address(0x1);
33
37
  uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
34
- uint256 public constant REGISTRY_SERVICE_TOKEN_SEQUENCE_ID = 3;
38
+ uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
35
39
  string public constant EMPTY_URI = "";
36
40
 
37
- VersionPart internal _majorVersion;
41
+ mapping(NftId nftId => ObjectInfo info) private _info;
42
+ mapping(address object => NftId nftId) private _nftIdByAddress;
38
43
 
39
- mapping(NftId nftId => ObjectInfo info) internal _info;
40
- mapping(address object => NftId nftId) internal _nftIdByAddress;
44
+ mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
45
+
46
+ mapping(ObjectType objectType => bool) private _coreTypes;
41
47
 
42
48
  mapping(ObjectType objectType => mapping(
43
- ObjectType parentType => bool)) internal _isValidContractCombination;
49
+ ObjectType parentType => bool)) private _coreContractCombinations;
44
50
 
45
51
  mapping(ObjectType objectType => mapping(
46
- ObjectType parentType => bool)) internal _isValidObjectCombination;
52
+ ObjectType parentType => bool)) private _coreObjectCombinations;
47
53
 
48
- mapping(NftId nftId => string name) internal _string;
49
- mapping(bytes32 serviceNameHash => mapping(
50
- VersionPart majorVersion => address service)) internal _service;
54
+ RegistryAdmin public immutable _admin;
55
+ ChainNft public immutable _chainNft;
51
56
 
52
- NftId internal _registryNftId;
53
- NftId internal _serviceNftId; // set in stone upon registry creation
54
- ChainNft internal _chainNft;
57
+ NftId public immutable _protocolNftId;
58
+ NftId public immutable _registryNftId;
59
+ NftId public _stakingNftId;
55
60
 
61
+ address public _tokenRegistryAddress;
62
+ address public _stakingAddress;
63
+ ReleaseRegistry public _releaseRegistry;
56
64
 
57
- modifier onlyOwner() {
58
- if(msg.sender != getOwner()) {
59
- revert NotOwner(msg.sender);
65
+ // TODO
66
+ // 1). Registry and ReleaseRegistry must be treated as whole single entity.
67
+ // But current limitations of EVM does not allow it -> require it to be splitted
68
+ // 2). Keep onlyReleaseRegistry modifier
69
+ // 3). Delete onlyRegistryService in favor of restricted
70
+ // 4). (For GlobalRegistry ONLY) make registerChainRegistry() restricted to GIF_ADMIN_ROLE
71
+ modifier onlyRegistryService() {
72
+ if(!_releaseRegistry.isActiveRegistryService(msg.sender)) {
73
+ revert ErrorRegistryCallerNotRegistryService();
60
74
  }
61
75
  _;
62
76
  }
63
77
 
64
- modifier onlyRegistryService() {
65
- if(msg.sender != _info[_serviceNftId].objectAddress) {
66
- revert NotRegistryService();
78
+
79
+ modifier onlyReleaseRegistry() {
80
+ if(msg.sender != address(_releaseRegistry)) {
81
+ revert ErrorRegistryCallerNotReleaseRegistry();
67
82
  }
68
83
  _;
69
84
  }
70
85
 
71
- constructor(address registryOwner, VersionPart majorVersion)
86
+ /// @dev Creates the registry contract and populates it with the protocol and registry objects.
87
+ /// Internally deploys the ChainNft contract.
88
+ constructor(RegistryAdmin admin)
89
+ InitializableCustom()
72
90
  {
73
- require(registryOwner > address(0), "Registry: registry owner is 0");
74
-
75
- // major version at constructor time
76
- _majorVersion = VersionLib.toVersionPart(GIF_MAJOR_VERSION_AT_DEPLOYMENT);
77
- emit LogInitialMajorVersionSet(_majorVersion);
78
-
91
+ _admin = admin;
79
92
  // deploy NFT
80
- _chainNft = new ChainNft(address(this));// adds 10kb to deployment size
93
+ _chainNft = new ChainNft(address(this));
81
94
 
82
95
  // initial registry setup
83
- _registerProtocol();
84
- _registerRegistry(registryOwner);
85
- _registerRegistryService(registryOwner);
96
+ _protocolNftId = _registerProtocol();
97
+ _registryNftId = _registerRegistry();
86
98
 
87
- // set object parent relations
88
- _setupValidObjectParentCombinations();
89
-
90
- _registerInterface(type(IRegistry).interfaceId);
99
+ // set object types and object parent relations
100
+ _setupValidCoreTypesAndCombinations();
91
101
  }
92
102
 
93
- // from IRegistry
94
103
 
95
- /// @dev latest GIF release version
96
- function setMajorVersion(VersionPart newMajorVersion)
104
+ /// @dev Wires release registry and token to registry (this contract).
105
+ /// MUST be called by release registry.
106
+ function initialize(
107
+ address releaseRegistry,
108
+ address tokenRegistry,
109
+ address staking
110
+ )
97
111
  external
98
- onlyOwner
112
+ initializer()
99
113
  {
100
- // ensure major version increments is one
101
- uint256 oldMax = _majorVersion.toInt();
102
- uint256 newMax = newMajorVersion.toInt();
103
- if (newMax <= oldMax || newMax - oldMax != 1) {
104
- revert MajorVersionMaxIncreaseInvalid(newMajorVersion, _majorVersion);
105
- }
114
+ _releaseRegistry = ReleaseRegistry(releaseRegistry);
115
+ _tokenRegistryAddress = tokenRegistry;
116
+ _stakingAddress = staking;
106
117
 
107
- _majorVersion = newMajorVersion;
108
- emit LogMajorVersionSet(_majorVersion);
118
+ _stakingNftId = _registerStaking();
109
119
  }
110
120
 
111
- /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
112
- // TODO service registration means its approval for some type?
113
- // TODO registration of precompile addresses
121
+ /// @inheritdoc IRegistry
114
122
  function register(ObjectInfo memory info)
115
123
  external
116
124
  onlyRegistryService
117
125
  returns(NftId nftId)
118
126
  {
119
127
  ObjectType objectType = info.objectType;
120
- NftId parentNftId = info.parentNftId;
121
- ObjectInfo memory parentInfo = _info[parentNftId];
122
- ObjectType parentType = parentInfo.objectType; // see function header
123
- address parentAddress = parentInfo.objectAddress;
128
+ ObjectType parentType = _info[info.parentNftId].objectType;
124
129
 
125
- // parent is contract -> need to check? -> check before minting
126
- // special case: global registry nft as parent when not on mainnet -> global registry address is 0
127
- // special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
128
- // special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
129
- if(parentAddress == address(0)) {
130
- revert ZeroParentAddress();
130
+ // check type combinations for core objects
131
+ if(info.objectAddress == address(0)) {
132
+ if(_coreObjectCombinations[objectType][parentType] == false) {
133
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
134
+ }
135
+ }
136
+ // check type combinations for contract objects
137
+ else {
138
+ if(_coreContractCombinations[objectType][parentType] == false) {
139
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
140
+ }
131
141
  }
132
142
 
133
- address interceptor = _getInterceptor(info.isInterceptor, info.objectAddress, parentInfo.isInterceptor, parentAddress);
143
+ nftId = _register(info);
144
+ }
134
145
 
135
- // TODO does external call
136
- uint256 mintedTokenId = _chainNft.mint(
137
- info.initialOwner,
138
- interceptor,
139
- EMPTY_URI);
140
- nftId = toNftId(mintedTokenId);
141
146
 
142
- // TODO move nftId out of info struct
143
- // getters by nftId -> return struct without nftId
144
- // getters by address -> return nftId AND struct
145
- info.nftId = nftId;
146
- _info[nftId] = info;
147
+ /// @inheritdoc IRegistry
148
+ function registerService(
149
+ ObjectInfo memory info,
150
+ VersionPart version,
151
+ ObjectType domain
152
+ )
153
+ external
154
+ onlyReleaseRegistry
155
+ returns(NftId nftId)
156
+ {
157
+ // check service address is defined
158
+ address service = info.objectAddress;
159
+ if(service == address(0)) {
160
+ revert ErrorRegistryServiceAddressZero();
161
+ }
147
162
 
148
- if(info.objectAddress > address(0))
149
- {
150
- // TODO if need to add types latter -> at least call this check from registry service
151
- // parent is registered + object-parent types are valid
152
- if(_isValidContractCombination[objectType][parentType] == false) {
153
- revert InvalidTypesCombination(objectType, parentType);
154
- }
163
+ // check version is defined
164
+ if(version.eqz()) {
165
+ revert ErrorRegistryServiceVersionZero();
166
+ }
167
+
168
+ // check domain is defined
169
+ if(domain.eqz()) {
170
+ revert ErrorRegistryDomainZero(service);
171
+ }
155
172
 
156
- address contractAddress = info.objectAddress;
173
+ // check contract has not already been registered
174
+ if(_service[version][domain] != address(0)) {
175
+ revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
176
+ }
157
177
 
158
- if(_nftIdByAddress[contractAddress].gtz()) {
159
- revert ContractAlreadyRegistered(contractAddress);
160
- }
178
+ // check service has proper type
179
+ if(info.objectType != SERVICE()) {
180
+ revert ErrorRegistryNotService(service, info.objectType);
181
+ }
161
182
 
162
- _nftIdByAddress[contractAddress] = nftId;
183
+ // check that parent has registry type
184
+ if(info.parentNftId != _registryNftId) {
185
+ revert ErrorRegistryServiceParentNotRegistry(info.parentNftId);
186
+ }
163
187
 
164
- // special case
165
- if(objectType == SERVICE()) {
166
- _registerService(info);
167
- }
188
+ _service[version][domain] = service;
189
+ nftId = _register(info);
190
+
191
+ emit LogServiceRegistration(version, domain);
192
+ }
193
+
194
+
195
+ /// @inheritdoc IRegistry
196
+ function registerWithCustomType(ObjectInfo memory info)
197
+ external
198
+ onlyRegistryService
199
+ returns(NftId nftId)
200
+ {
201
+ ObjectType objectType = info.objectType;
202
+ ObjectType parentType = _info[info.parentNftId].objectType;
203
+
204
+ if(_coreTypes[objectType]) {
205
+ revert ErrorRegistryCoreTypeRegistration();
168
206
  }
169
- else
170
- {
171
- if(_isValidObjectCombination[objectType][parentType] == false) {
172
- revert InvalidTypesCombination(objectType, parentType);
173
- }
207
+
208
+ if(
209
+ parentType == PROTOCOL() ||
210
+ parentType == SERVICE()
211
+ ) {
212
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
174
213
  }
175
214
 
176
- emit LogRegistration(info);
215
+ _register(info);
177
216
  }
217
+
218
+
178
219
  /// @dev earliest GIF major version
179
- function getMajorVersionMin() external view returns (VersionPart) {
180
- return VersionLib.toVersionPart(GIF_MAJOR_VERSION_AT_DEPLOYMENT);
220
+ function getInitialVersion() external view returns (VersionPart) {
221
+ return _releaseRegistry.getInitialVersion();
181
222
  }
182
223
 
183
- // TODO make distinction between active an not yet active version
184
- // need to be thought trough, not yet clear if necessary
185
- // need to answer question: what is the latest version during the upgrade process?
186
- // likely setting up a new gif version does not fit into a single tx
187
- // in this case we might want to have a period where the latest version is
188
- // in the process of being set up while the latest active version is 1 major release smaller
189
- /// @dev latest GIF major version (might not yet be active)
190
- function getMajorVersionMax() external view returns (VersionPart) {
191
- return _majorVersion;
224
+ /// @dev next GIF release version to be released
225
+ function getNextVersion() external view returns (VersionPart) {
226
+ return _releaseRegistry.getNextVersion();
192
227
  }
193
228
 
194
229
  /// @dev latest active GIF release version
195
- function getMajorVersion() external view returns (VersionPart) {
196
- return _majorVersion;
230
+ function getLatestVersion() external view returns (VersionPart) {
231
+ return _releaseRegistry.getLatestVersion();
197
232
  }
198
233
 
199
- function getObjectCount() external view override returns (uint256) {
234
+ function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
235
+ return _releaseRegistry.getReleaseInfo(version);
236
+ }
237
+
238
+ function getObjectCount() external view returns (uint256) {
200
239
  return _chainNft.totalSupply();
201
240
  }
202
241
 
@@ -204,11 +243,15 @@ contract Registry is
204
243
  return _registryNftId;
205
244
  }
206
245
 
207
- function getNftId(address object) external view override returns (NftId id) {
246
+ function getProtocolNftId() external view returns (NftId nftId) {
247
+ return _protocolNftId;
248
+ }
249
+
250
+ function getNftIdForAddress(address object) external view returns (NftId id) {
208
251
  return _nftIdByAddress[object];
209
252
  }
210
253
 
211
- function ownerOf(NftId nftId) public view override returns (address) {
254
+ function ownerOf(NftId nftId) public view returns (address) {
212
255
  return _chainNft.ownerOf(nftId.toInt());
213
256
  }
214
257
 
@@ -216,81 +259,162 @@ contract Registry is
216
259
  return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
217
260
  }
218
261
 
219
- function getObjectInfo(NftId nftId) external view override returns (ObjectInfo memory) {
262
+ function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
220
263
  return _info[nftId];
221
264
  }
222
265
 
223
- function getObjectInfo(address object) external view override returns (ObjectInfo memory) {
266
+ function getObjectInfo(address object) external view returns (ObjectInfo memory) {
224
267
  return _info[_nftIdByAddress[object]];
225
268
  }
226
269
 
227
- function isRegistered(NftId nftId) public view override returns (bool) {
270
+ function isRegistered(NftId nftId) public view returns (bool) {
228
271
  return _info[nftId].objectType.gtz();
229
272
  }
230
273
 
231
- function isRegistered(address object) external view override returns (bool) {
274
+ function isRegistered(address object) external view returns (bool) {
232
275
  return _nftIdByAddress[object].gtz();
233
276
  }
234
277
 
235
- function getServiceName(NftId nftId) external view returns (string memory) {
236
- return _string[nftId];
278
+ function isRegisteredService(address object) external view returns (bool) {
279
+ return _info[_nftIdByAddress[object]].objectType == SERVICE();
280
+ }
281
+
282
+ function isRegisteredComponent(address object) external view returns (bool) {
283
+ NftId objectParentNftId = _info[_nftIdByAddress[object]].parentNftId;
284
+ return _info[objectParentNftId].objectType == INSTANCE();
285
+ }
286
+
287
+ function isActiveRelease(VersionPart version) external view returns (bool)
288
+ {
289
+ return _releaseRegistry.isActiveRelease(version);
290
+ }
291
+
292
+ function getStakingAddress() external view returns (address staking) {
293
+ //return getObjectInfo(_stakingNftId).objectAddress;
294
+ //return _info[_stakingNftId].objectAddress;
295
+ return _stakingAddress;
296
+ }
297
+
298
+ function getTokenRegistryAddress() external view returns (address tokenRegistry) {
299
+ return _tokenRegistryAddress;
237
300
  }
238
301
 
239
- // special case to retrive a gif service
240
302
  function getServiceAddress(
241
- string memory serviceName,
242
- VersionPart majorVersion
243
- ) external view returns (address)
303
+ ObjectType serviceDomain,
304
+ VersionPart releaseVersion
305
+ ) external view returns (address service)
244
306
  {
245
- bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
246
- return _service[serviceNameHash][majorVersion];
307
+ service = _service[releaseVersion][serviceDomain];
308
+ }
309
+
310
+ function getReleaseRegistryAddress() external view returns (address) {
311
+ return address(_releaseRegistry);
312
+ }
313
+
314
+ function getChainNftAddress() external view override returns (address) {
315
+ return address(_chainNft);
316
+ }
317
+
318
+ function getRegistryAdminAddress() external view returns (address) {
319
+ return address(_admin);
247
320
  }
248
321
 
249
- function getChainNft() external view override returns (ChainNft) {
250
- return _chainNft;
322
+ function getAuthority() external view returns (address) {
323
+ return _admin.authority();
251
324
  }
252
325
 
253
326
  function getOwner() public view returns (address owner) {
254
327
  return ownerOf(address(this));
255
328
  }
256
329
 
330
+ // IERC165
331
+
332
+ function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
333
+ if(interfaceId == type(IERC165).interfaceId || interfaceId == type(IRegistry).interfaceId) {
334
+ return true;
335
+ }
336
+
337
+ return false;
338
+ }
339
+
257
340
  // Internals
258
341
 
259
- function _registerService(ObjectInfo memory info)
342
+ /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
343
+ function _register(ObjectInfo memory info)
260
344
  internal
345
+ returns(NftId nftId)
261
346
  {
262
- (
263
- string memory serviceName,
264
- VersionPart majorVersion
265
- ) = abi.decode(info.data, (string, VersionPart));
266
- bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
267
-
268
- // ensures consistency of service.getVersion() and majorVersion here
269
- if(majorVersion != _majorVersion) {
270
- revert InvalidServiceVersion(majorVersion);
347
+ ObjectType objectType = info.objectType;
348
+ bool isInterceptor = info.isInterceptor;
349
+ address objectAddress = info.objectAddress;
350
+ address owner = info.initialOwner;
351
+
352
+ NftId parentNftId = info.parentNftId;
353
+ ObjectInfo memory parentInfo = _info[parentNftId];
354
+ ObjectType parentType = parentInfo.objectType; // see function header
355
+ address parentAddress = parentInfo.objectAddress;
356
+
357
+ // parent is contract -> need to check? -> check before minting
358
+ // special case: staking: to protocol possible as well
359
+ // special case: global registry nft as parent when not on mainnet -> global registry address is 0
360
+ // special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
361
+ // special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
362
+ if(objectType != STAKE()) {
363
+ if(parentAddress == address(0)) {
364
+ revert ErrorRegistryParentAddressZero();
365
+ }
271
366
  }
272
-
273
- if(_service[serviceNameHash][majorVersion] != address(0)) {
274
- revert ServiceNameAlreadyRegistered(serviceName, majorVersion);
367
+
368
+ address interceptorAddress = _getInterceptor(
369
+ isInterceptor,
370
+ objectType,
371
+ objectAddress,
372
+ parentInfo.isInterceptor,
373
+ parentAddress);
374
+
375
+ uint256 tokenId = _chainNft.getNextTokenId();
376
+ nftId = NftIdLib.toNftId(tokenId);
377
+ info.nftId = nftId;
378
+ _info[nftId] = info;
379
+
380
+ if(objectAddress > address(0)) {
381
+ if(_nftIdByAddress[objectAddress].gtz()) {
382
+ revert ErrorRegistryContractAlreadyRegistered(objectAddress);
383
+ }
384
+
385
+ _nftIdByAddress[objectAddress] = nftId;
275
386
  }
276
387
 
277
- _string[info.nftId] = serviceName;
278
- _service[serviceNameHash][majorVersion] = info.objectAddress;
388
+ emit LogRegistration(nftId, parentNftId, objectType, isInterceptor, objectAddress, owner);
389
+
390
+ // calls nft receiver(1) and interceptor(2)
391
+ uint256 mintedTokenId = _chainNft.mint(
392
+ owner,
393
+ interceptorAddress,
394
+ EMPTY_URI);
279
395
 
280
- emit LogServiceNameRegistration(serviceName, majorVersion);
396
+ assert(mintedTokenId == tokenId);
281
397
  }
282
398
 
283
399
  /// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
400
+ /// special case: STAKES (parent may be any type) -> no intercept call
401
+ /// default case:
284
402
  function _getInterceptor(
285
403
  bool isInterceptor,
404
+ ObjectType objectType,
286
405
  address objectAddress,
287
406
  bool parentIsInterceptor,
288
407
  address parentObjectAddress
289
408
  )
290
409
  internal
291
- view
410
+ pure
292
411
  returns (address interceptor)
293
412
  {
413
+ // no intercepting calls for stakes
414
+ if (objectType == STAKE()) {
415
+ return address(0);
416
+ }
417
+
294
418
  if (objectAddress == address(0)) {
295
419
  if (parentIsInterceptor) {
296
420
  return parentObjectAddress;
@@ -310,135 +434,143 @@ contract Registry is
310
434
 
311
435
  /// @dev protocol registration used to anchor the dip ecosystem relations
312
436
  function _registerProtocol()
313
- internal
437
+ private
438
+ returns (NftId protocolNftId)
314
439
  {
315
440
  uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
316
- NftId protocolNftId = toNftId(protocolId);
441
+ protocolNftId = NftIdLib.toNftId(protocolId);
442
+
443
+ _info[protocolNftId] = ObjectInfo({
444
+ nftId: protocolNftId,
445
+ parentNftId: NftIdLib.zero(),
446
+ objectType: PROTOCOL(),
447
+ isInterceptor: false,
448
+ objectAddress: address(0),
449
+ initialOwner: NFT_LOCK_ADDRESS,
450
+ data: ""
451
+ });
317
452
 
318
453
  _chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
319
-
320
- _info[protocolNftId] = ObjectInfo(
321
- protocolNftId,
322
- zeroNftId(), // parent
323
- PROTOCOL(),
324
- false, // isInterceptor
325
- address(0), // objectAddress
326
- NFT_LOCK_ADDRESS,// initialOwner
327
- ""
328
- );
329
454
  }
330
455
 
331
456
  /// @dev registry registration
332
457
  /// might also register the global registry when not on mainnet
333
- function _registerRegistry(address registryOwner)
334
- internal
458
+ function _registerRegistry()
459
+ private
460
+ returns (NftId registryNftId)
335
461
  {
336
462
  uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
337
- NftId registryNftId = toNftId(registryId);
338
-
463
+ registryNftId = NftIdLib.toNftId(registryId);
339
464
  NftId parentNftId;
340
465
 
341
466
  if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
342
467
  {// we're not the global registry
343
468
  _registerGlobalRegistry();
344
- parentNftId = toNftId(_chainNft.GLOBAL_REGISTRY_ID());
469
+ parentNftId = NftIdLib.toNftId(_chainNft.GLOBAL_REGISTRY_ID());
345
470
  }
346
471
  else
347
472
  {// we are global registry
348
- parentNftId = toNftId(_chainNft.PROTOCOL_NFT_ID());
473
+ parentNftId = _protocolNftId;
349
474
  }
350
475
 
351
- _chainNft.mint(registryOwner, registryId);
352
-
353
- _info[registryNftId] = ObjectInfo(
354
- registryNftId,
355
- parentNftId,
356
- REGISTRY(),
357
- false, // isInterceptor
358
- address(this),
359
- registryOwner,
360
- ""
361
- );
476
+ _info[registryNftId] = ObjectInfo({
477
+ nftId: registryNftId,
478
+ parentNftId: parentNftId,
479
+ objectType: REGISTRY(),
480
+ isInterceptor: false,
481
+ objectAddress: address(this),
482
+ initialOwner: NFT_LOCK_ADDRESS,
483
+ data: ""
484
+ });
485
+
362
486
  _nftIdByAddress[address(this)] = registryNftId;
363
- _registryNftId = registryNftId;
487
+ _chainNft.mint(NFT_LOCK_ADDRESS, registryId);
364
488
  }
365
489
 
366
-
367
490
  /// @dev global registry registration for non mainnet registries
368
491
  function _registerGlobalRegistry()
369
- internal
492
+ private
370
493
  {
371
494
  uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
495
+ NftId globalRegistryNftId = NftIdLib.toNftId(globalRegistryId);
496
+
497
+ _info[globalRegistryNftId] = ObjectInfo({
498
+ nftId: globalRegistryNftId,
499
+ parentNftId: NftIdLib.toNftId(_chainNft.PROTOCOL_NFT_ID()),
500
+ objectType: REGISTRY(),
501
+ isInterceptor: false,
502
+ objectAddress: address(0),
503
+ initialOwner: NFT_LOCK_ADDRESS,
504
+ data: ""
505
+ });
372
506
 
373
507
  _chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
374
-
375
- NftId globalRegistryNftId = toNftId(globalRegistryId);
376
-
377
- _info[globalRegistryNftId] = ObjectInfo(
378
- globalRegistryNftId,
379
- toNftId(_chainNft.PROTOCOL_NFT_ID()), // parent
380
- REGISTRY(),
381
- false, // isInterceptor
382
- address(0), // objectAddress
383
- NFT_LOCK_ADDRESS, // initialOwner
384
- "" // data
385
- );
386
508
  }
387
-
388
- function _registerRegistryService(address registryOwner)
389
- internal
509
+ // depends on _registryNftId and _stakingAddress
510
+ function _registerStaking()
511
+ private
512
+ returns (NftId stakingNftId)
390
513
  {
391
- uint256 serviceId = _chainNft.calculateTokenId(REGISTRY_SERVICE_TOKEN_SEQUENCE_ID);
392
- NftId serviceNftId = toNftId(serviceId);
393
-
394
- _chainNft.mint(registryOwner, serviceId);
395
-
396
- _info[serviceNftId] = ObjectInfo(
397
- serviceNftId,
398
- _registryNftId,
399
- SERVICE(),
400
- false, // isInterceptor
401
- msg.sender, // service deploys registry
402
- registryOwner, // initialOwner,
403
- ""
404
- );
405
-
406
- _nftIdByAddress[msg.sender] = serviceNftId;
407
-
408
- string memory serviceName = "RegistryService";
409
- bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
410
- _service[serviceNameHash][VersionLib.toVersionPart(GIF_MAJOR_VERSION_AT_DEPLOYMENT)] = msg.sender;
411
- _string[serviceNftId] = serviceName;
412
- _serviceNftId = serviceNftId;
514
+ address stakingOwner = IRegisterable(_stakingAddress).getOwner();
515
+ uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
516
+ stakingNftId = NftIdLib.toNftId(stakingId);
517
+
518
+ _info[stakingNftId] = ObjectInfo({
519
+ nftId: stakingNftId,
520
+ parentNftId: _registryNftId,
521
+ objectType: STAKING(),
522
+ isInterceptor: false,
523
+ objectAddress: _stakingAddress,
524
+ initialOwner: stakingOwner,
525
+ data: ""
526
+ });
527
+
528
+ _nftIdByAddress[_stakingAddress] = stakingNftId;
529
+
530
+ // reverts if nftId was already minted
531
+ _chainNft.mint(stakingOwner, stakingId);
413
532
  }
414
533
 
415
534
  /// @dev defines which object - parent types relations are allowed to register
416
- // IMPORTANT:
417
- // 1) EACH object type MUST have only one parent type across ALL mappings
418
- // 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
419
- // 3) DO NOT use REGISTRY as object type
420
- // 2) DO NOT use PROTOCOL and "zeroObjectType"
421
- function _setupValidObjectParentCombinations()
422
- internal
535
+ /// EACH object type MUST have only one parent type across ALL mappings
536
+ function _setupValidCoreTypesAndCombinations()
537
+ private
423
538
  {
424
- // registry as parent, ONLY registry owner
425
- _isValidContractCombination[TOKEN()][REGISTRY()] = true;
426
- _isValidContractCombination[SERVICE()][REGISTRY()] = true;
539
+ _coreTypes[REGISTRY()] = true;
540
+ _coreTypes[SERVICE()] = true;
541
+ _coreTypes[INSTANCE()] = true;
542
+ _coreTypes[PRODUCT()] = true;
543
+ _coreTypes[POOL()] = true;
544
+ _coreTypes[DISTRIBUTION()] = true;
545
+ _coreTypes[DISTRIBUTOR()] = true;
546
+ _coreTypes[ORACLE()] = true;
547
+ _coreTypes[POLICY()] = true;
548
+ _coreTypes[BUNDLE()] = true;
549
+ _coreTypes[STAKING()] = true;
550
+ _coreTypes[STAKE()] = true;
551
+
552
+ // only global registry allowed to register registry (after initialization)
553
+ if(block.chainid == 1) {
554
+ _coreContractCombinations[REGISTRY()][REGISTRY()] = true;
555
+ }
427
556
 
428
- // registry as parent, ONLY approved
429
- _isValidContractCombination[INSTANCE()][REGISTRY()] = true;
557
+ // contracts with registry parent
558
+ _coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
559
+ _coreContractCombinations[INSTANCE()][REGISTRY()] = true;
430
560
 
431
- // instance as parent, ONLY approved
432
- _isValidContractCombination[PRODUCT()][INSTANCE()] = true;
433
- _isValidContractCombination[DISTRIBUTION()][INSTANCE()] = true;
434
- _isValidContractCombination[ORACLE()][INSTANCE()] = true;
435
- _isValidContractCombination[POOL()][INSTANCE()] = true;
561
+ // components with instance parent
562
+ _coreContractCombinations[PRODUCT()][INSTANCE()] = true;
563
+ _coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
564
+ _coreContractCombinations[ORACLE()][INSTANCE()] = true;
565
+ _coreContractCombinations[POOL()][INSTANCE()] = true;
436
566
 
437
- // product as parent, ONLY approved
438
- _isValidObjectCombination[POLICY()][PRODUCT()] = true;
567
+ // objects with coponent parents
568
+ _coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
569
+ _coreObjectCombinations[POLICY()][PRODUCT()] = true;
570
+ _coreObjectCombinations[BUNDLE()][POOL()] = true;
439
571
 
440
- // pool as parent, ONLY approved
441
- _isValidObjectCombination[BUNDLE()][POOL()] = true;
442
- _isValidObjectCombination[STAKE()][POOL()] = true;
572
+ // staking
573
+ _coreObjectCombinations[STAKE()][PROTOCOL()] = true;
574
+ _coreObjectCombinations[STAKE()][INSTANCE()] = true;
443
575
  }
444
576
  }