@etherisc/gif-next 0.0.2-a5cf039-146 → 0.0.2-a6ce659-551

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 (614) hide show
  1. package/README.md +94 -16
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1378 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +975 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +827 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +709 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +560 -246
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +494 -146
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +432 -2978
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +726 -308
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +701 -205
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +404 -78
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3597 -0
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  35. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +31 -8
  36. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  38. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  40. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
  42. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -112
  44. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  46. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  47. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  48. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  50. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  51. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  52. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  53. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
  54. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  55. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  56. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  57. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  58. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  60. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  61. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  62. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  64. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  65. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  66. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  68. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  69. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +310 -358
  70. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  71. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
  72. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  73. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  74. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  75. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  76. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  77. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  78. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  79. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  80. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  81. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  82. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  83. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  84. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  85. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  86. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  88. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  89. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +236 -190
  90. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  91. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  92. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  93. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -0
  94. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  95. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +266 -278
  96. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  97. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
  98. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  99. package/artifacts/contracts/{instance/base/IService.sol/IService.json → product/IProductService.sol/IProductService.json} +145 -166
  100. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  101. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  102. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  104. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  105. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  106. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  107. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  108. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  109. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  110. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  111. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  112. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  113. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  114. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  115. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  116. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  117. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +521 -59
  118. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  119. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +451 -200
  120. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  121. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  122. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  123. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  124. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  125. package/artifacts/contracts/registry/Registry.sol/Registry.json +828 -311
  126. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  127. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
  128. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  129. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +530 -339
  130. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  131. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +346 -129
  132. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  133. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  134. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  135. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1211 -0
  136. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  137. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  138. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  139. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +206 -0
  140. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  141. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  142. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  143. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
  144. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  145. package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → shared/AccessManagerCustom.sol/AccessManagerCustom.json} +122 -11
  146. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  147. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
  148. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  149. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
  150. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  151. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
  152. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  153. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
  154. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  155. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  156. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  157. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
  158. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  159. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
  160. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  161. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +235 -164
  162. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  163. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  164. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  165. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
  166. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  167. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  168. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  169. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  170. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  171. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  172. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  173. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  174. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  175. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  176. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  177. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  178. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  179. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  180. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  181. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  182. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  183. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  184. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  185. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
  186. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  187. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  188. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  189. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IService.sol/IService.json} +107 -75
  190. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  191. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  192. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  193. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  194. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  195. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  196. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  197. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +547 -0
  198. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  199. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  200. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  201. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  202. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  203. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
  204. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  205. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  206. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  207. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -62
  208. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  209. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
  210. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  211. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  212. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  213. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/Service.sol/Service.json} +198 -172
  214. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  215. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  216. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  217. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  218. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  220. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  221. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  222. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  223. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  224. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  225. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  226. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  227. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  228. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  230. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  232. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  234. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  236. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  238. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  240. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  241. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  242. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  243. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  244. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  245. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  246. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  248. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  250. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  251. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  252. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  254. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  255. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  256. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  258. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  259. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  260. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
  262. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  264. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  266. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  268. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  269. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  270. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
  272. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  274. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  276. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  278. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  279. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  280. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  282. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  284. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  285. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  286. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  287. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  288. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  289. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  290. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  292. package/contracts/distribution/Distribution.sol +261 -0
  293. package/contracts/distribution/DistributionService.sol +297 -0
  294. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  295. package/contracts/distribution/IDistributionComponent.sol +66 -0
  296. package/contracts/distribution/IDistributionService.sol +81 -0
  297. package/contracts/instance/BundleManager.sol +126 -0
  298. package/contracts/instance/IInstance.sol +75 -16
  299. package/contracts/instance/IInstanceService.sol +89 -9
  300. package/contracts/instance/Instance.sol +183 -362
  301. package/contracts/instance/InstanceAdmin.sol +331 -0
  302. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  303. package/contracts/instance/InstanceReader.sol +172 -70
  304. package/contracts/instance/InstanceService.sol +385 -73
  305. package/contracts/instance/InstanceServiceManager.sol +12 -24
  306. package/contracts/instance/InstanceStore.sol +272 -0
  307. package/contracts/instance/base/BalanceStore.sol +123 -0
  308. package/contracts/instance/base/Cloneable.sol +28 -0
  309. package/contracts/instance/base/ObjectCounter.sol +21 -0
  310. package/contracts/instance/base/ObjectLifecycle.sol +99 -0
  311. package/contracts/instance/base/ObjectManager.sol +80 -0
  312. package/contracts/instance/module/IAccess.sol +29 -21
  313. package/contracts/instance/module/IBundle.sol +8 -7
  314. package/contracts/instance/module/IComponents.sol +52 -0
  315. package/contracts/instance/module/IDistribution.sol +7 -4
  316. package/contracts/instance/module/IPolicy.sol +56 -17
  317. package/contracts/instance/module/IRisk.sol +1 -1
  318. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  319. package/contracts/oracle/IOracle.sol +20 -0
  320. package/contracts/oracle/IOracleComponent.sol +32 -0
  321. package/contracts/oracle/IOracleService.sol +65 -0
  322. package/contracts/oracle/Oracle.sol +145 -0
  323. package/contracts/oracle/OracleService.sol +278 -0
  324. package/contracts/oracle/OracleServiceManager.sol +42 -0
  325. package/contracts/pool/BundleService.sol +296 -0
  326. package/contracts/pool/BundleServiceManager.sol +42 -0
  327. package/contracts/pool/IBundleService.sol +106 -0
  328. package/contracts/pool/IPoolComponent.sol +112 -0
  329. package/contracts/pool/IPoolService.sol +150 -0
  330. package/contracts/pool/Pool.sol +299 -0
  331. package/contracts/pool/PoolService.sol +452 -0
  332. package/contracts/pool/PoolServiceManager.sol +42 -0
  333. package/contracts/product/ApplicationService.sol +254 -0
  334. package/contracts/product/ApplicationServiceManager.sol +38 -0
  335. package/contracts/product/ClaimService.sol +442 -0
  336. package/contracts/product/ClaimServiceManager.sol +38 -0
  337. package/contracts/product/IApplicationService.sol +62 -0
  338. package/contracts/product/IClaimService.sol +99 -0
  339. package/contracts/product/IPolicyService.sol +78 -0
  340. package/contracts/product/IPricingService.sol +39 -0
  341. package/contracts/product/IProductComponent.sol +42 -0
  342. package/contracts/product/IProductService.sol +33 -0
  343. package/contracts/product/PolicyService.sol +475 -0
  344. package/contracts/product/PolicyServiceManager.sol +42 -0
  345. package/contracts/product/PricingService.sol +300 -0
  346. package/contracts/product/PricingServiceManager.sol +42 -0
  347. package/contracts/product/Product.sol +377 -0
  348. package/contracts/product/ProductService.sol +124 -0
  349. package/contracts/product/ProductServiceManager.sol +42 -0
  350. package/contracts/registry/ChainNft.sol +15 -0
  351. package/contracts/registry/IRegistry.sol +79 -12
  352. package/contracts/registry/IRegistryService.sol +54 -20
  353. package/contracts/registry/IServiceAuthorization.sol +38 -0
  354. package/contracts/registry/ITransferInterceptor.sol +1 -0
  355. package/contracts/registry/Registry.sol +403 -244
  356. package/contracts/registry/RegistryAdmin.sol +333 -0
  357. package/contracts/registry/RegistryService.sol +124 -297
  358. package/contracts/registry/RegistryServiceManager.sol +25 -36
  359. package/contracts/registry/ReleaseLifecycle.sol +28 -0
  360. package/contracts/registry/ReleaseManager.sol +523 -0
  361. package/contracts/registry/ServiceAuthorization.sol +90 -0
  362. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  363. package/contracts/registry/TokenRegistry.sol +315 -0
  364. package/contracts/shared/AccessAdmin.sol +759 -0
  365. package/contracts/{instance/AccessManagerSimple.sol → shared/AccessManagerCustom.sol} +281 -232
  366. package/contracts/shared/AccessManagerExtended.sol +481 -0
  367. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  368. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  369. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  370. package/contracts/shared/Component.sol +281 -0
  371. package/contracts/shared/ComponentService.sol +620 -0
  372. package/contracts/shared/ComponentServiceManager.sol +35 -0
  373. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  374. package/contracts/shared/ERC165.sol +15 -9
  375. package/contracts/shared/IAccessAdmin.sol +168 -0
  376. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  377. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  378. package/contracts/shared/IComponent.sol +70 -0
  379. package/contracts/shared/IComponentService.sol +102 -0
  380. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  381. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  382. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  383. package/contracts/shared/INftOwnable.sol +13 -12
  384. package/contracts/shared/IPolicyHolder.sol +45 -0
  385. package/contracts/shared/IRegisterable.sol +4 -6
  386. package/contracts/shared/IRegistryLinked.sol +11 -0
  387. package/contracts/shared/IService.sol +25 -0
  388. package/contracts/shared/IVersionable.sol +5 -48
  389. package/contracts/shared/InitializableCustom.sol +177 -0
  390. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  391. package/contracts/shared/KeyValueStore.sol +131 -0
  392. package/contracts/shared/Lifecycle.sol +67 -0
  393. package/contracts/shared/NftIdSetManager.sol +65 -0
  394. package/contracts/shared/NftOwnable.sol +60 -89
  395. package/contracts/shared/PolicyHolder.sol +102 -0
  396. package/contracts/shared/ProxyManager.sol +131 -26
  397. package/contracts/shared/Registerable.sol +26 -40
  398. package/contracts/shared/RegistryLinked.sol +43 -0
  399. package/contracts/shared/Service.sol +83 -0
  400. package/contracts/shared/TokenHandler.sol +37 -6
  401. package/contracts/shared/Versionable.sol +4 -92
  402. package/contracts/staking/IStaking.sol +168 -0
  403. package/contracts/staking/IStakingService.sol +153 -0
  404. package/contracts/staking/StakeManagerLib.sol +231 -0
  405. package/contracts/staking/Staking.sol +513 -0
  406. package/contracts/staking/StakingLifecycle.sol +24 -0
  407. package/contracts/staking/StakingManager.sol +54 -0
  408. package/contracts/staking/StakingReader.sol +187 -0
  409. package/contracts/staking/StakingService.sol +411 -0
  410. package/contracts/staking/StakingServiceManager.sol +44 -0
  411. package/contracts/staking/StakingStore.sol +615 -0
  412. package/contracts/staking/TargetManagerLib.sol +207 -0
  413. package/contracts/{types → type}/AddressSet.sol +1 -1
  414. package/contracts/type/Amount.sol +128 -0
  415. package/contracts/{types → type}/Blocknumber.sol +21 -3
  416. package/contracts/type/ClaimId.sol +75 -0
  417. package/contracts/{types → type}/DistributorType.sol +2 -2
  418. package/contracts/{types → type}/Fee.sol +33 -23
  419. package/contracts/{types → type}/NftId.sol +21 -15
  420. package/contracts/type/NftIdSet.sol +62 -0
  421. package/contracts/type/ObjectType.sol +241 -0
  422. package/contracts/type/PayoutId.sol +82 -0
  423. package/contracts/{types → type}/Referral.sol +5 -1
  424. package/contracts/type/RequestId.sol +75 -0
  425. package/contracts/{types → type}/RiskId.sol +1 -1
  426. package/contracts/type/RoleId.sol +201 -0
  427. package/contracts/type/Seconds.sol +81 -0
  428. package/contracts/type/Selector.sol +102 -0
  429. package/contracts/{types → type}/StateId.sol +38 -4
  430. package/contracts/type/String.sol +53 -0
  431. package/contracts/{types → type}/Timestamp.sol +23 -14
  432. package/contracts/{types → type}/UFixed.sol +1 -0
  433. package/contracts/{types → type}/Version.sol +6 -2
  434. package/package.json +8 -5
  435. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  436. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  437. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -610
  438. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  439. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -267
  440. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  441. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  442. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  443. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  444. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  445. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  446. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  447. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -774
  448. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  449. package/artifacts/contracts/components/Product.sol/Product.json +0 -754
  450. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  451. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  452. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  453. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  454. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  455. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  456. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  457. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  458. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  459. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  460. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  461. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  462. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  463. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  464. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  465. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  466. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  467. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  468. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  469. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  470. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  471. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  472. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  473. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  474. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  475. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  476. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  477. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  478. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  480. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  482. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  484. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  485. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  486. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  487. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  488. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  489. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  490. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  491. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  492. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  493. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -930
  494. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  495. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  496. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  497. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  498. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  499. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  500. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  501. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  502. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  503. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  504. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  505. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  506. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  507. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  508. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  509. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  510. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  511. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  512. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  513. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  514. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  515. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  516. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  517. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  518. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  519. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  520. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  521. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  522. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  523. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  524. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  525. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  526. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  527. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  528. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  529. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  530. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  531. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  532. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  533. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  534. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  535. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  536. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  537. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  538. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  539. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  540. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  541. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  542. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  543. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  544. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  545. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  546. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  547. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  548. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  549. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  550. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  551. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  552. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  553. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  554. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  555. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  556. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  557. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  558. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  559. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  560. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  561. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  562. package/contracts/components/BaseComponent.sol +0 -86
  563. package/contracts/components/Distribution.sol +0 -166
  564. package/contracts/components/IBaseComponent.sol +0 -24
  565. package/contracts/components/IDistributionComponent.sol +0 -43
  566. package/contracts/components/IPoolComponent.sol +0 -62
  567. package/contracts/components/IProductComponent.sol +0 -35
  568. package/contracts/components/Pool.sol +0 -259
  569. package/contracts/components/Product.sol +0 -297
  570. package/contracts/experiment/cloning/Cloner.sol +0 -47
  571. package/contracts/experiment/errors/Require.sol +0 -38
  572. package/contracts/experiment/errors/Revert.sol +0 -44
  573. package/contracts/experiment/inheritance/A.sol +0 -53
  574. package/contracts/experiment/inheritance/B.sol +0 -28
  575. package/contracts/experiment/inheritance/C.sol +0 -34
  576. package/contracts/experiment/inheritance/IA.sol +0 -13
  577. package/contracts/experiment/inheritance/IB.sol +0 -10
  578. package/contracts/experiment/inheritance/IC.sol +0 -12
  579. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  580. package/contracts/experiment/statemachine/ISM.sol +0 -25
  581. package/contracts/experiment/statemachine/SM.sol +0 -57
  582. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  583. package/contracts/experiment/types/TypeA.sol +0 -47
  584. package/contracts/experiment/types/TypeB.sol +0 -29
  585. package/contracts/instance/AccessManagedSimple.sol +0 -122
  586. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  587. package/contracts/instance/InstanceAccessManager.sol +0 -288
  588. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  589. package/contracts/instance/base/IInstanceBase.sol +0 -23
  590. package/contracts/instance/base/IService.sol +0 -15
  591. package/contracts/instance/base/KeyValueStore.sol +0 -172
  592. package/contracts/instance/base/Lifecycle.sol +0 -100
  593. package/contracts/instance/base/ServiceBase.sol +0 -44
  594. package/contracts/instance/module/ISetup.sol +0 -43
  595. package/contracts/instance/module/ITreasury.sol +0 -23
  596. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  597. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  598. package/contracts/instance/service/IDistributionService.sol +0 -12
  599. package/contracts/instance/service/IPoolService.sol +0 -37
  600. package/contracts/instance/service/IProductService.sol +0 -107
  601. package/contracts/shared/ContractDeployerLib.sol +0 -72
  602. package/contracts/test/TestFee.sol +0 -25
  603. package/contracts/test/TestRegisterable.sol +0 -18
  604. package/contracts/test/TestRoleId.sol +0 -14
  605. package/contracts/test/TestService.sol +0 -26
  606. package/contracts/test/TestToken.sol +0 -26
  607. package/contracts/test/TestVersion.sol +0 -44
  608. package/contracts/test/TestVersionable.sol +0 -17
  609. package/contracts/types/ChainId.sol +0 -38
  610. package/contracts/types/NftIdSet.sol +0 -60
  611. package/contracts/types/NumberId.sol +0 -52
  612. package/contracts/types/ObjectType.sol +0 -152
  613. package/contracts/types/RoleId.sol +0 -82
  614. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -1,275 +1,416 @@
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 "../instance/base/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} 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, TOKEN, 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 {ReleaseManager} from "./ReleaseManager.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
 
27
30
  contract Registry is
28
- ERC165,
31
+ InitializableCustom,
29
32
  IRegistry
30
33
  {
31
- // register
32
- error NotRegistryService();
33
- error ZeroParentAddress();
34
- error ContractAlreadyRegistered(address objectAddress);
35
- error InvalidServiceVersion(VersionPart majorVersion);
36
- error ServiceNameAlreadyRegistered(string name, VersionPart majorVersion);
37
-
38
- // approve
39
- error NotOwner();
40
- error NotRegisteredContract(NftId registrarNftId);
41
- error NotService(NftId registrarNftId);
42
- error InvalidTypesCombination(ObjectType objectType, ObjectType parentType);
43
-
44
- uint256 public constant MAJOR_VERSION_MIN = 3;
45
- address public constant NFT_LOCK_ADDRESS = address(0x1);
46
- uint256 public constant REGISTRY_SERVICE_TOKEN_SEQUENCE_ID = 3;
34
+ address public NFT_LOCK_ADDRESS = address(0x1);
35
+ uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
36
+ uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
47
37
  string public constant EMPTY_URI = "";
48
38
 
49
- mapping(NftId nftId => ObjectInfo info) internal _info;
50
- mapping(address object => NftId nftId) internal _nftIdByAddress;
39
+ mapping(NftId nftId => ObjectInfo info) private _info;
40
+ mapping(address object => NftId nftId) private _nftIdByAddress;
41
+
42
+ mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
51
43
 
52
- mapping(NftId registrator => mapping(
53
- ObjectType objectType => bool)) internal _isApproved;
44
+ mapping(ObjectType objectType => bool) private _coreTypes;
54
45
 
55
46
  mapping(ObjectType objectType => mapping(
56
- ObjectType parentType => bool)) internal _isValidContractCombination;
47
+ ObjectType parentType => bool)) private _coreContractCombinations;
57
48
 
58
49
  mapping(ObjectType objectType => mapping(
59
- ObjectType parentType => bool)) internal _isValidObjectCombination;
50
+ ObjectType parentType => bool)) private _coreObjectCombinations;
60
51
 
61
- mapping(NftId nftId => string name) internal _string;
62
- mapping(bytes32 serviceNameHash => mapping(
63
- VersionPart majorVersion => address service)) internal _service;
52
+ RegistryAdmin public immutable _admin;
53
+ ChainNft public immutable _chainNft;
64
54
 
65
- NftId internal _registryNftId;
66
- NftId internal _serviceNftId; // set in stone upon registry creation
67
- ChainNft internal _chainNft;
55
+ NftId public immutable _protocolNftId;
56
+ NftId public immutable _registryNftId;
57
+ NftId public _stakingNftId;
68
58
 
59
+ address public _tokenRegistryAddress;
60
+ address public _stakingAddress;
61
+ ReleaseManager public _releaseManager;
69
62
 
70
- modifier onlyOwner() {
71
- if(msg.sender != getOwner()) {
72
- revert NotOwner();
63
+ // TODO
64
+ // 1). Registry and ReleaseManager must be treated as whole single entity.
65
+ // But current limitations of EVM does not allow it -> require it to be splitted
66
+ // 2). Keep onlyReleaseManager modifier
67
+ // 3). Delete onlyRegistryService in favor of restricted, introduce aditional "domain role", REGISTRY_SERVICE_ROLE
68
+ // 4). (For GlobalRegistry ONLY) make registerChainRegistry() restricted to GIF_ADMIN_ROLE
69
+ modifier onlyRegistryService() {
70
+ if(!_releaseManager.isActiveRegistryService(msg.sender)) {
71
+ revert ErrorRegistryCallerNotRegistryService();
73
72
  }
74
73
  _;
75
74
  }
76
75
 
77
- modifier onlyRegistryService() {
78
-
79
- if(msg.sender != _info[_serviceNftId].objectAddress) {
80
- revert NotRegistryService();
76
+
77
+ modifier onlyReleaseManager() {
78
+ if(msg.sender != address(_releaseManager)) {
79
+ revert ErrorRegistryCallerNotReleaseManager();
81
80
  }
82
81
  _;
83
82
  }
84
83
 
85
- constructor(address registryOwner, VersionPart majorVersion)
86
- {
87
- require(registryOwner > address(0), "Registry: registry owner is 0");
88
- require(majorVersion.toInt() == MAJOR_VERSION_MIN, "Registry: initial major version of registry service is not MAJOR_VERSION_MIN");
89
84
 
85
+ constructor(RegistryAdmin admin)
86
+ InitializableCustom()
87
+ {
88
+ _admin = admin;
90
89
  // deploy NFT
91
- _chainNft = new ChainNft(address(this));// adds 10kb to deployment size
90
+ _chainNft = new ChainNft(address(this));
92
91
 
93
92
  // initial registry setup
94
- _registerProtocol();
95
- _registerRegistry(registryOwner);
96
- _registerRegistryService(registryOwner);
93
+ _protocolNftId = _registerProtocol();
94
+ _registryNftId = _registerRegistry();
95
+
96
+ // set object types and object parent relations
97
+ _setupValidCoreTypesAndCombinations();
98
+ }
97
99
 
98
- // set object parent relations
99
- _setupValidObjectParentCombinations();
100
100
 
101
- _registerInterface(type(IRegistry).interfaceId);
101
+ /// @dev wires release manager and token to registry (this contract).
102
+ /// MUST be called by release manager.
103
+ function initialize(
104
+ address releaseManager,
105
+ address tokenRegistry,
106
+ address staking
107
+ )
108
+ external
109
+ initializer()
110
+ {
111
+ _releaseManager = ReleaseManager(releaseManager);
112
+ _tokenRegistryAddress = tokenRegistry;
113
+ _stakingAddress = staking;
114
+
115
+ _stakingNftId = _registerStaking();
102
116
  }
103
117
 
104
- /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
105
- // TODO service registration means its approval for some type?
106
- // TODO registration of precompile addresses
107
- function register(ObjectInfo memory info)
118
+ function registerService(
119
+ ObjectInfo memory info,
120
+ VersionPart version,
121
+ ObjectType domain
122
+ )
108
123
  external
109
- onlyRegistryService
124
+ onlyReleaseManager
110
125
  returns(NftId nftId)
111
126
  {
112
- ObjectType objectType = info.objectType;
113
- NftId parentNftId = info.parentNftId;
114
- ObjectInfo memory parentInfo = _info[parentNftId];
115
- ObjectType parentType = parentInfo.objectType; // see function header
116
- address parentAddress = parentInfo.objectAddress;
117
-
118
- // parent is contract -> need to check? -> check before minting
119
- // special case: global registry nft as parent when not on mainnet -> global registry address is 0
120
- // special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
121
- // special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
122
- if(parentAddress == address(0)) {
123
- revert ZeroParentAddress();
127
+ address service = info.objectAddress;
128
+ /* must be guaranteed by release manager
129
+ if(service == address(0)) {
130
+ revert();
124
131
  }
125
132
 
126
- address interceptor = _getInterceptor(info.isInterceptor, info.objectAddress, parentInfo.isInterceptor, parentAddress);
127
-
128
- // TODO does external call
129
- uint256 mintedTokenId = _chainNft.mint(
130
- info.initialOwner,
131
- interceptor,
132
- EMPTY_URI);
133
- nftId = toNftId(mintedTokenId);
133
+ if(version.eqz()) {
134
+ revert();
135
+ }
134
136
 
135
- // TODO move nftId out of info struct
136
- // getters by nftId -> return struct without nftId
137
- // getters by address -> return nftId AND struct
138
- info.nftId = nftId;
139
- _info[nftId] = info;
137
+ if(info.objectType != SERVICE()) {
138
+ revert();
139
+ }
140
+ if(info.parentType != REGISTRY()) {
141
+ revert();
142
+ }
143
+ info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
144
+ */
145
+
146
+ if(domain.eqz()) {
147
+ revert ErrorRegistryDomainZero(service);
148
+ }
140
149
 
141
- if(info.objectAddress > address(0))
142
- {
143
- // TODO if need to add types latter -> at least call this check from registry service
144
- // parent is registered + object-parent types are valid
145
- if(_isValidContractCombination[objectType][parentType] == false) {
146
- revert InvalidTypesCombination(objectType, parentType);
147
- }
150
+ if(_service[version][domain] > address(0)) {
151
+ revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
152
+ }
153
+
154
+ _service[version][domain] = service;
148
155
 
149
- address contractAddress = info.objectAddress;
156
+ nftId = _register(info);
150
157
 
151
- if(_nftIdByAddress[contractAddress].gtz()) {
152
- revert ContractAlreadyRegistered(contractAddress);
153
- }
158
+ emit LogServiceRegistration(version, domain);
159
+ }
154
160
 
155
- _nftIdByAddress[contractAddress] = nftId;
161
+ function register(ObjectInfo memory info)
162
+ external
163
+ onlyRegistryService
164
+ returns(NftId nftId)
165
+ {
166
+ ObjectType objectType = info.objectType;
167
+ ObjectType parentType = _info[info.parentNftId].objectType;
156
168
 
157
- // special case
158
- if(objectType == SERVICE()) {
159
- _registerService(info);
169
+ // only valid core types combinations
170
+ if(info.objectAddress == address(0))
171
+ {
172
+ if(_coreObjectCombinations[objectType][parentType] == false) {
173
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
160
174
  }
161
175
  }
162
176
  else
163
177
  {
164
- if(_isValidObjectCombination[objectType][parentType] == false) {
165
- revert InvalidTypesCombination(objectType, parentType);
178
+ if(_coreContractCombinations[objectType][parentType] == false) {
179
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
166
180
  }
167
181
  }
168
182
 
169
- emit LogRegistration(info);
183
+ nftId = _register(info);
170
184
  }
171
185
 
172
- // from IRegistry
173
- function getObjectCount() external view override returns (uint256) {
174
-
186
+ function registerWithCustomType(ObjectInfo memory info)
187
+ external
188
+ onlyRegistryService
189
+ returns(NftId nftId)
190
+ {
191
+ ObjectType objectType = info.objectType;
192
+ ObjectType parentType = _info[info.parentNftId].objectType;
193
+
194
+ if(_coreTypes[objectType]) {
195
+ revert ErrorRegistryCoreTypeRegistration();
196
+ }
197
+
198
+ if(
199
+ parentType == PROTOCOL() ||
200
+ parentType == REGISTRY() ||
201
+ parentType == SERVICE()
202
+ ) {
203
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
204
+ }
205
+
206
+ _register(info);
207
+ }
208
+
209
+
210
+ /// @dev earliest GIF major version
211
+ function getInitialVersion() external view returns (VersionPart) {
212
+ return _releaseManager.getInitialVersion();
213
+ }
214
+
215
+ /// @dev next GIF release version to be released
216
+ function getNextVersion() external view returns (VersionPart) {
217
+ return _releaseManager.getNextVersion();
218
+ }
219
+
220
+ /// @dev latest active GIF release version
221
+ function getLatestVersion() external view returns (VersionPart) {
222
+ return _releaseManager.getLatestVersion();
223
+ }
224
+
225
+ function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
226
+ return _releaseManager.getReleaseInfo(version);
227
+ }
228
+
229
+ function getObjectCount() external view returns (uint256) {
175
230
  return _chainNft.totalSupply();
176
231
  }
177
232
 
178
- function getNftId(address object) external view override returns (NftId id) {
233
+ function getNftId() external view returns (NftId nftId) {
234
+ return _registryNftId;
235
+ }
236
+
237
+ function getProtocolNftId() external view returns (NftId nftId) {
238
+ return _protocolNftId;
239
+ }
240
+
241
+ function getNftId(address object) external view returns (NftId id) {
179
242
  return _nftIdByAddress[object];
180
243
  }
181
244
 
182
- function ownerOf(NftId nftId) public view override returns (address) {
245
+ function ownerOf(NftId nftId) public view returns (address) {
183
246
  return _chainNft.ownerOf(nftId.toInt());
184
247
  }
185
248
 
186
249
  function ownerOf(address contractAddress) public view returns (address) {
187
-
188
250
  return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
189
251
  }
190
252
 
191
- function getObjectInfo(NftId nftId) external view override returns (ObjectInfo memory) {
253
+ function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
192
254
  return _info[nftId];
193
255
  }
194
256
 
195
- function getObjectInfo(address object) external view override returns (ObjectInfo memory) {
196
-
257
+ function getObjectInfo(address object) external view returns (ObjectInfo memory) {
197
258
  return _info[_nftIdByAddress[object]];
198
259
  }
199
260
 
200
- function isRegistered(NftId nftId) public view override returns (bool) {
261
+ function isRegistered(NftId nftId) public view returns (bool) {
201
262
  return _info[nftId].objectType.gtz();
202
263
  }
203
264
 
204
- function isRegistered(address object) external view override returns (bool) {
265
+ function isRegistered(address object) external view returns (bool) {
205
266
  return _nftIdByAddress[object].gtz();
206
267
  }
207
268
 
208
- function getServiceName(NftId nftId) external view returns (string memory) {
209
- return _string[nftId];
269
+ function isRegisteredService(address object) external view returns (bool) {
270
+ return _info[_nftIdByAddress[object]].objectType == SERVICE();
271
+ }
272
+
273
+ function isRegisteredComponent(address object) external view returns (bool) {
274
+ NftId objectParentNftId = _info[_nftIdByAddress[object]].parentNftId;
275
+ return _info[objectParentNftId].objectType == INSTANCE();
276
+ }
277
+
278
+ function isActiveRelease(VersionPart version) external view returns (bool)
279
+ {
280
+ return _releaseManager.isActiveRelease(version);
281
+ }
282
+
283
+ function getStakingAddress() external view returns (address staking) {
284
+ //return getObjectInfo(_stakingNftId).objectAddress;
285
+ //return _info[_stakingNftId].objectAddress;
286
+ return _stakingAddress;
287
+ }
288
+
289
+ function getTokenRegistryAddress() external view returns (address tokenRegistry) {
290
+ return _tokenRegistryAddress;
210
291
  }
211
292
 
212
- // special case to retrive a gif service
213
293
  function getServiceAddress(
214
- string memory serviceName,
215
- VersionPart majorVersion
216
- ) external view returns (address)
294
+ ObjectType serviceDomain,
295
+ VersionPart releaseVersion
296
+ ) external view returns (address service)
217
297
  {
218
- bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
219
- return _service[serviceNameHash][majorVersion];
298
+ service = _service[releaseVersion][serviceDomain];
299
+ }
300
+
301
+ function getReleaseAccessManagerAddress(VersionPart version) external view returns (address) {
302
+ return address(_releaseManager.getReleaseAccessManager(version));
303
+ }
304
+
305
+ function getReleaseManagerAddress() external view returns (address) {
306
+ return address(_releaseManager);
307
+ }
308
+
309
+ function getChainNftAddress() external view override returns (address) {
310
+ return address(_chainNft);
311
+ }
312
+
313
+ function getRegistryAdminAddress() external view returns (address) {
314
+ return address(_admin);
220
315
  }
221
316
 
222
- function getChainNft() external view override returns (ChainNft) {
223
- return _chainNft;
317
+ function getAuthority() external view returns (address) {
318
+ return _admin.authority();
224
319
  }
225
320
 
226
321
  function getOwner() public view returns (address owner) {
227
322
  return ownerOf(address(this));
228
323
  }
229
324
 
325
+ // IERC165
326
+
327
+ function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
328
+ if(interfaceId == type(IERC165).interfaceId || interfaceId == type(IRegistry).interfaceId) {
329
+ return true;
330
+ }
331
+
332
+ return false;
333
+ }
334
+
230
335
  // Internals
231
336
 
232
- function _registerService(ObjectInfo memory info)
337
+ /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
338
+ // TODO registration of precompile addresses
339
+ function _register(ObjectInfo memory info)
233
340
  internal
341
+ returns(NftId nftId)
234
342
  {
235
- (
236
- string memory serviceName,
237
- VersionPart majorVersion
238
- ) = abi.decode(info.data, (string, VersionPart));
239
- bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
240
-
241
- // TODO MUST guarantee consistency of service.getVersion() and majorVersion here
242
- // TODO update _serviceNftId when registryService with new major version is registered? -> it is fixed in current setup -> can lock up
243
- // TODO do not use names -> each object type is registered by corresponding service -> conflicting with approve()
244
- if(
245
- majorVersion.toInt() < MAJOR_VERSION_MIN ||
246
- (majorVersion.toInt() > MAJOR_VERSION_MIN &&
247
- _service[serviceNameHash][VersionLib.toVersionPart(majorVersion.toInt() - 1)] == address(0) )
248
- ) {
249
- revert InvalidServiceVersion(majorVersion);
343
+ ObjectType objectType = info.objectType;
344
+ bool isInterceptor = info.isInterceptor;
345
+ address objectAddress = info.objectAddress;
346
+ address owner = info.initialOwner;
347
+
348
+ NftId parentNftId = info.parentNftId;
349
+ ObjectInfo memory parentInfo = _info[parentNftId];
350
+ ObjectType parentType = parentInfo.objectType; // see function header
351
+ address parentAddress = parentInfo.objectAddress;
352
+
353
+ // parent is contract -> need to check? -> check before minting
354
+ // special case: staking: to protocol possible as well
355
+ // special case: global registry nft as parent when not on mainnet -> global registry address is 0
356
+ // special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
357
+ // special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
358
+ if(objectType != STAKE()) {
359
+ if(parentAddress == address(0)) {
360
+ revert ErrorRegistryParentAddressZero();
361
+ }
250
362
  }
251
-
252
- if(_service[serviceNameHash][majorVersion] != address(0)) {
253
- revert ServiceNameAlreadyRegistered(serviceName, majorVersion);
363
+
364
+ address interceptorAddress = _getInterceptor(
365
+ isInterceptor,
366
+ objectType,
367
+ objectAddress,
368
+ parentInfo.isInterceptor,
369
+ parentAddress);
370
+
371
+ uint256 tokenId = _chainNft.getNextTokenId();
372
+ nftId = NftIdLib.toNftId(tokenId);
373
+ info.nftId = nftId;
374
+ _info[nftId] = info;
375
+
376
+ if(objectAddress > address(0)) {
377
+ if(_nftIdByAddress[objectAddress].gtz()) {
378
+ revert ErrorRegistryContractAlreadyRegistered(objectAddress);
379
+ }
380
+
381
+ _nftIdByAddress[objectAddress] = nftId;
254
382
  }
255
383
 
256
- _string[info.nftId] = serviceName;
257
- _service[serviceNameHash][majorVersion] = info.objectAddress;
384
+ emit LogRegistration(nftId, parentNftId, objectType, isInterceptor, objectAddress, owner);
385
+
386
+ // calls nft receiver(1) and interceptor(2)
387
+ uint256 mintedTokenId = _chainNft.mint(
388
+ owner,
389
+ interceptorAddress,
390
+ EMPTY_URI);
258
391
 
259
- emit LogServiceNameRegistration(serviceName, majorVersion);
392
+ assert(mintedTokenId == tokenId);
260
393
  }
261
394
 
262
395
  /// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
396
+ /// special case: STAKES (parent may be any type) -> no intercept call
397
+ /// default case:
263
398
  function _getInterceptor(
264
399
  bool isInterceptor,
400
+ ObjectType objectType,
265
401
  address objectAddress,
266
402
  bool parentIsInterceptor,
267
403
  address parentObjectAddress
268
404
  )
269
405
  internal
270
- view
406
+ pure
271
407
  returns (address interceptor)
272
408
  {
409
+ // no intercepting calls for stakes
410
+ if (objectType == STAKE()) {
411
+ return address(0);
412
+ }
413
+
273
414
  if (objectAddress == address(0)) {
274
415
  if (parentIsInterceptor) {
275
416
  return parentObjectAddress;
@@ -289,106 +430,100 @@ contract Registry is
289
430
 
290
431
  /// @dev protocol registration used to anchor the dip ecosystem relations
291
432
  function _registerProtocol()
292
- internal
433
+ private
434
+ returns (NftId protocolNftId)
293
435
  {
294
436
  uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
295
- NftId protocolNftId = toNftId(protocolId);
437
+ protocolNftId = NftIdLib.toNftId(protocolId);
438
+
439
+ _info[protocolNftId] = ObjectInfo({
440
+ nftId: protocolNftId,
441
+ parentNftId: NftIdLib.zero(),
442
+ objectType: PROTOCOL(),
443
+ isInterceptor: false,
444
+ objectAddress: address(0),
445
+ initialOwner: NFT_LOCK_ADDRESS,
446
+ data: ""
447
+ });
296
448
 
297
449
  _chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
298
-
299
- _info[protocolNftId] = ObjectInfo(
300
- protocolNftId,
301
- zeroNftId(), // parent
302
- PROTOCOL(),
303
- false, // isInterceptor
304
- address(0), // objectAddress
305
- NFT_LOCK_ADDRESS,// initialOwner
306
- ""
307
- );
308
450
  }
309
451
 
310
452
  /// @dev registry registration
311
453
  /// might also register the global registry when not on mainnet
312
- function _registerRegistry(address registryOwner)
313
- internal
454
+ function _registerRegistry()
455
+ private
456
+ returns (NftId registryNftId)
314
457
  {
315
- uint256 registryId = _chainNft.calculateTokenId(2);
316
- NftId registryNftId = toNftId(registryId);
317
-
458
+ uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
459
+ registryNftId = NftIdLib.toNftId(registryId);
318
460
  NftId parentNftId;
319
461
 
320
462
  if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
321
463
  {// we're not the global registry
322
464
  _registerGlobalRegistry();
323
- parentNftId = toNftId(_chainNft.GLOBAL_REGISTRY_ID());
465
+ parentNftId = NftIdLib.toNftId(_chainNft.GLOBAL_REGISTRY_ID());
324
466
  }
325
467
  else
326
468
  {// we are global registry
327
- parentNftId = toNftId(_chainNft.PROTOCOL_NFT_ID());
469
+ parentNftId = _protocolNftId;
328
470
  }
329
471
 
330
- _chainNft.mint(registryOwner, registryId);
331
-
332
- _info[registryNftId] = ObjectInfo(
333
- registryNftId,
334
- parentNftId,
335
- REGISTRY(),
336
- false, // isInterceptor
337
- address(this),
338
- registryOwner,
339
- ""
340
- );
472
+ _info[registryNftId] = ObjectInfo({
473
+ nftId: registryNftId,
474
+ parentNftId: parentNftId,
475
+ objectType: REGISTRY(),
476
+ isInterceptor: false,
477
+ objectAddress: address(this),
478
+ initialOwner: NFT_LOCK_ADDRESS,
479
+ data: ""
480
+ });
481
+
341
482
  _nftIdByAddress[address(this)] = registryNftId;
342
- _registryNftId = registryNftId;
483
+ _chainNft.mint(NFT_LOCK_ADDRESS, registryId);
343
484
  }
344
485
 
345
-
346
486
  /// @dev global registry registration for non mainnet registries
347
487
  function _registerGlobalRegistry()
348
- internal
488
+ private
349
489
  {
350
490
  uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
491
+ NftId globalRegistryNftId = NftIdLib.toNftId(globalRegistryId);
492
+
493
+ _info[globalRegistryNftId] = ObjectInfo({
494
+ nftId: globalRegistryNftId,
495
+ parentNftId: NftIdLib.toNftId(_chainNft.PROTOCOL_NFT_ID()),
496
+ objectType: REGISTRY(),
497
+ isInterceptor: false,
498
+ objectAddress: address(0),
499
+ initialOwner: NFT_LOCK_ADDRESS,
500
+ data: ""
501
+ });
351
502
 
352
503
  _chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
353
-
354
- NftId globalRegistryNftId = toNftId(globalRegistryId);
355
-
356
- _info[globalRegistryNftId] = ObjectInfo(
357
- globalRegistryNftId,
358
- toNftId(_chainNft.PROTOCOL_NFT_ID()), // parent
359
- REGISTRY(),
360
- false, // isInterceptor
361
- address(0), // objectAddress
362
- NFT_LOCK_ADDRESS, // initialOwner
363
- "" // data
364
- );
365
504
  }
366
-
367
- function _registerRegistryService(address registryOwner)
368
- internal
505
+ // depends on _registryNftId and _stakingAddress
506
+ function _registerStaking()
507
+ private
508
+ returns (NftId stakingNftId)
369
509
  {
370
- uint256 serviceId = _chainNft.calculateTokenId(REGISTRY_SERVICE_TOKEN_SEQUENCE_ID);
371
- NftId serviceNftId = toNftId(serviceId);
372
-
373
- _chainNft.mint(registryOwner, serviceId);
374
-
375
- _info[serviceNftId] = ObjectInfo(
376
- serviceNftId,
377
- _registryNftId,
378
- SERVICE(),
379
- false, // isInterceptor
380
- msg.sender, // service deploys registry
381
- registryOwner, // initialOwner,
382
- ""
383
- );
384
-
385
- _nftIdByAddress[msg.sender] = serviceNftId;
386
-
387
- string memory serviceName = "RegistryService";
388
- bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
389
- _service[serviceNameHash][VersionLib.toVersionPart(MAJOR_VERSION_MIN)] = msg.sender;
390
- _string[serviceNftId] = serviceName;
391
- _serviceNftId = serviceNftId;
510
+ address stakingOwner = IRegisterable(_stakingAddress).getOwner();
511
+ uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
512
+ stakingNftId = NftIdLib.toNftId(stakingId);
513
+
514
+ _info[stakingNftId] = ObjectInfo({
515
+ nftId: stakingNftId,
516
+ parentNftId: _registryNftId,
517
+ objectType: STAKING(),
518
+ isInterceptor: false,
519
+ objectAddress: _stakingAddress,
520
+ initialOwner: stakingOwner,
521
+ data: ""
522
+ });
523
+
524
+ _nftIdByAddress[_stakingAddress] = stakingNftId;
525
+ // reverts if nftId was already minted
526
+ _chainNft.mint(stakingOwner, stakingId);
392
527
  }
393
528
 
394
529
  /// @dev defines which object - parent types relations are allowed to register
@@ -396,28 +531,52 @@ contract Registry is
396
531
  // 1) EACH object type MUST have only one parent type across ALL mappings
397
532
  // 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
398
533
  // 3) DO NOT use REGISTRY as object type
399
- // 2) DO NOT use PROTOCOL and "zeroObjectType"
400
- function _setupValidObjectParentCombinations()
401
- internal
534
+ // 2) DO NOT use PROTOCOL and "ObjectTypeLib.zero"
535
+ function _setupValidCoreTypesAndCombinations()
536
+ private
402
537
  {
403
- // registry as parent, ONLY registry owner
404
- _isValidContractCombination[TOKEN()][REGISTRY()] = true;
405
- _isValidContractCombination[SERVICE()][REGISTRY()] = true;
406
-
407
- // registry as parent, ONLY approved
408
- _isValidContractCombination[INSTANCE()][REGISTRY()] = true;
409
-
410
- // instance as parent, ONLY approved
411
- _isValidContractCombination[PRODUCT()][INSTANCE()] = true;
412
- _isValidContractCombination[DISTRIBUTION()][INSTANCE()] = true;
413
- _isValidContractCombination[ORACLE()][INSTANCE()] = true;
414
- _isValidContractCombination[POOL()][INSTANCE()] = true;
415
-
416
- // product as parent, ONLY approved
417
- _isValidObjectCombination[POLICY()][PRODUCT()] = true;
418
-
419
- // pool as parent, ONLY approved
420
- _isValidObjectCombination[BUNDLE()][POOL()] = true;
421
- _isValidObjectCombination[STAKE()][POOL()] = true;
538
+ _coreTypes[REGISTRY()] = true;
539
+ _coreTypes[SERVICE()] = true;
540
+ _coreTypes[TOKEN()] = 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
+ uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
553
+ if(registryId == _chainNft.GLOBAL_REGISTRY_ID()) {
554
+ // we are global registry
555
+ // object is registry from different chain
556
+ // parent is global registry, this contract
557
+ _coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
558
+ //_coreObjectCombinations[REGISTRY()][REGISTRY()] = true;
559
+ } else {
560
+ // we are not global registry
561
+ // object is local registry, this contract
562
+ // parent is global registry, object with 0 address or registry from mainnet???
563
+ }
564
+ _coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
565
+ _coreContractCombinations[TOKEN()][REGISTRY()] = true;
566
+ //_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
567
+ _coreContractCombinations[INSTANCE()][REGISTRY()] = true;
568
+
569
+ _coreContractCombinations[PRODUCT()][INSTANCE()] = true;
570
+ _coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
571
+ _coreContractCombinations[ORACLE()][INSTANCE()] = true;
572
+ _coreContractCombinations[POOL()][INSTANCE()] = true;
573
+
574
+ _coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
575
+ _coreObjectCombinations[POLICY()][PRODUCT()] = true;
576
+ _coreObjectCombinations[BUNDLE()][POOL()] = true;
577
+
578
+ // staking
579
+ _coreObjectCombinations[STAKE()][PROTOCOL()] = true;
580
+ _coreObjectCombinations[STAKE()][INSTANCE()] = true;
422
581
  }
423
582
  }