@etherisc/gif-next 0.0.2-eb13b47-989 → 0.0.2-eb7261f-060

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