@etherisc/gif-next 0.0.2-b28f7c7-340 → 0.0.2-b3a8633-027

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 (645) hide show
  1. package/README.md +32 -3
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1505 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1191 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1394 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +184 -253
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +77 -324
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +296 -2011
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +198 -74
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +422 -2807
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +825 -379
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +263 -282
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +112 -119
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3591 -0
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  73. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  74. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  75. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  77. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  79. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  81. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  82. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → oracle/IOracleComponent.sol/IOracleComponent.json} +160 -218
  83. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  85. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1063 -0
  87. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  89. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  91. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  92. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +254 -153
  93. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  95. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  97. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  99. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  100. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +90 -46
  101. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  102. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +191 -296
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  104. package/artifacts/contracts/{instance/service → pool}/IPoolService.sol/IPoolService.json +294 -60
  105. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.json +1269 -0
  107. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  109. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  111. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  113. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  115. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  116. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → product/BasicProduct.sol/BasicProduct.json} +370 -400
  117. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  119. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  121. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  123. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  124. package/artifacts/contracts/{instance/service/IClaimService.sol/IClaimService.json → product/IApplicationService.sol/IApplicationService.json} +131 -94
  125. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  127. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  128. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +194 -80
  129. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  130. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +86 -159
  131. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +966 -0
  133. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  134. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +11 -61
  135. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  137. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  139. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  141. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  143. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  144. package/artifacts/contracts/{components → product}/Product.sol/Product.json +338 -248
  145. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  147. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  149. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +40 -16
  151. package/artifacts/contracts/registry/GlobalRegistry.sol/GlobalRegistry.dbg.json +4 -0
  152. package/artifacts/contracts/registry/GlobalRegistry.sol/GlobalRegistry.json +1503 -0
  153. package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.dbg.json +4 -0
  154. package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.json +1881 -0
  155. package/artifacts/contracts/registry/IGlobalRegistry.sol/IGlobalRegistry.dbg.json +4 -0
  156. package/artifacts/contracts/registry/IGlobalRegistry.sol/IGlobalRegistry.json +974 -0
  157. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  158. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +172 -29
  159. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  160. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +199 -125
  161. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  162. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/Registry.sol/Registry.json +559 -44
  164. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  165. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1871 -0
  166. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  167. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +367 -73
  168. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  169. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +105 -54
  170. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  171. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  172. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  173. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1140 -0
  174. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  175. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  176. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  177. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
  178. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  179. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +139 -85
  180. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  181. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1487 -0
  182. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +784 -0
  184. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  185. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +27 -95
  186. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  187. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  188. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  189. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +110 -84
  190. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  191. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  192. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  193. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +718 -0
  194. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  195. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  196. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  197. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  198. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  199. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +3 -10
  200. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +87 -9
  202. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +3 -10
  204. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  205. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  206. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  207. package/artifacts/contracts/shared/IService.sol/IService.json +17 -6
  208. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  209. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  210. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  211. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +996 -0
  212. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  213. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  214. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  215. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
  216. package/artifacts/contracts/shared/MainnetId.sol/MainnetContract.dbg.json +4 -0
  217. package/artifacts/contracts/shared/MainnetId.sol/MainnetContract.json +34 -0
  218. package/artifacts/contracts/shared/MainnetId.sol/MainnetId.dbg.json +4 -0
  219. package/artifacts/contracts/shared/MainnetId.sol/MainnetId.json +24 -0
  220. package/artifacts/contracts/shared/MainnetId.sol/SidenetContract.dbg.json +4 -0
  221. package/artifacts/contracts/shared/MainnetId.sol/SidenetContract.json +34 -0
  222. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  223. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  224. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  225. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +15 -22
  226. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  227. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +98 -26
  228. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  229. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +23 -22
  230. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  231. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  232. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  233. package/artifacts/contracts/shared/Service.sol/Service.json +17 -6
  234. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  235. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  236. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  237. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  238. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  239. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  240. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  242. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  243. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  244. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  246. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  248. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  249. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  250. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  251. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  252. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  253. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  254. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  255. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  256. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  257. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  258. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  259. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  260. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  262. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  264. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  266. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  268. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  270. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  272. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  274. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  275. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  276. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  278. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  280. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  282. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  284. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  286. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  288. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  290. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  292. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  294. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  295. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  296. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  298. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  299. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +33 -7
  300. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
  302. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +498 -0
  304. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  306. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  308. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  309. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  310. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  311. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  312. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  313. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  314. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  315. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  316. package/contracts/authorization/AccessAdmin.sol +590 -0
  317. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  318. package/contracts/authorization/Authorization.sol +218 -0
  319. package/contracts/authorization/IAccess.sol +48 -0
  320. package/contracts/authorization/IAccessAdmin.sol +136 -0
  321. package/contracts/authorization/IAuthorization.sol +54 -0
  322. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  323. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  324. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  325. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  326. package/contracts/distribution/BasicDistribution.sol +149 -0
  327. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  328. package/contracts/{components → distribution}/Distribution.sol +162 -159
  329. package/contracts/distribution/DistributionService.sol +288 -0
  330. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  331. package/contracts/distribution/IDistributionComponent.sol +48 -0
  332. package/contracts/{instance/service → distribution}/IDistributionService.sol +24 -38
  333. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +30 -31
  334. package/contracts/instance/IInstance.sol +55 -67
  335. package/contracts/instance/IInstanceService.sol +50 -30
  336. package/contracts/instance/Instance.sol +160 -233
  337. package/contracts/instance/InstanceAdmin.sol +266 -0
  338. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  339. package/contracts/instance/InstanceReader.sol +173 -59
  340. package/contracts/instance/InstanceService.sol +280 -332
  341. package/contracts/instance/InstanceServiceManager.sol +12 -26
  342. package/contracts/instance/InstanceStore.sol +276 -0
  343. package/contracts/instance/base/BalanceStore.sol +123 -0
  344. package/contracts/instance/base/Cloneable.sol +28 -0
  345. package/contracts/instance/base/ObjectCounter.sol +21 -0
  346. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  347. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +18 -21
  348. package/contracts/instance/module/IAccess.sol +4 -12
  349. package/contracts/instance/module/IBundle.sol +6 -9
  350. package/contracts/instance/module/IComponents.sol +21 -10
  351. package/contracts/instance/module/IDistribution.sol +7 -6
  352. package/contracts/instance/module/IPolicy.sol +28 -16
  353. package/contracts/instance/module/IRisk.sol +1 -1
  354. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  355. package/contracts/oracle/BasicOracle.sol +48 -0
  356. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  357. package/contracts/oracle/IOracle.sol +36 -0
  358. package/contracts/oracle/IOracleComponent.sol +32 -0
  359. package/contracts/oracle/IOracleService.sol +65 -0
  360. package/contracts/oracle/Oracle.sol +157 -0
  361. package/contracts/oracle/OracleService.sol +278 -0
  362. package/contracts/oracle/OracleServiceManager.sol +39 -0
  363. package/contracts/pool/BasicPool.sol +164 -0
  364. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  365. package/contracts/pool/BundleService.sol +284 -0
  366. package/contracts/pool/BundleServiceManager.sol +39 -0
  367. package/contracts/{instance/service → pool}/IBundleService.sol +35 -22
  368. package/contracts/pool/IPoolComponent.sol +52 -0
  369. package/contracts/{instance/service → pool}/IPoolService.sol +72 -21
  370. package/contracts/pool/Pool.sol +311 -0
  371. package/contracts/pool/PoolService.sol +436 -0
  372. package/contracts/pool/PoolServiceManager.sol +39 -0
  373. package/contracts/product/ApplicationService.sol +230 -0
  374. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
  375. package/contracts/product/BasicProduct.sol +82 -0
  376. package/contracts/product/BasicProductAuthorization.sol +40 -0
  377. package/contracts/product/ClaimService.sol +416 -0
  378. package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
  379. package/contracts/{instance/service → product}/IApplicationService.sol +15 -35
  380. package/contracts/product/IClaimService.sol +99 -0
  381. package/contracts/{instance/service → product}/IPolicyService.sol +37 -31
  382. package/contracts/product/IPricingService.sol +39 -0
  383. package/contracts/product/IProductComponent.sol +39 -0
  384. package/contracts/product/IProductService.sol +33 -0
  385. package/contracts/product/PolicyService.sol +475 -0
  386. package/contracts/product/PolicyServiceManager.sol +39 -0
  387. package/contracts/product/PricingService.sol +300 -0
  388. package/contracts/product/PricingServiceManager.sol +39 -0
  389. package/contracts/{components → product}/Product.sol +209 -110
  390. package/contracts/product/ProductService.sol +99 -0
  391. package/contracts/product/ProductServiceManager.sol +39 -0
  392. package/contracts/registry/ChainNft.sol +34 -26
  393. package/contracts/registry/GlobalRegistry.sol +95 -0
  394. package/contracts/registry/GlobalRegistryAdmin.sol +38 -0
  395. package/contracts/registry/IGlobalRegistry.sol +17 -0
  396. package/contracts/registry/IRegistry.sol +58 -26
  397. package/contracts/registry/IRegistryService.sol +42 -41
  398. package/contracts/registry/Registry.sol +261 -161
  399. package/contracts/registry/RegistryAdmin.sol +447 -0
  400. package/contracts/registry/RegistryService.sol +69 -99
  401. package/contracts/registry/RegistryServiceManager.sol +23 -32
  402. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  403. package/contracts/registry/ReleaseRegistry.sol +533 -0
  404. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  405. package/contracts/registry/TokenRegistry.sol +261 -62
  406. package/contracts/shared/Component.sol +281 -0
  407. package/contracts/shared/ComponentService.sol +581 -0
  408. package/contracts/shared/ComponentServiceManager.sol +35 -0
  409. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  410. package/contracts/shared/ERC165.sol +1 -1
  411. package/contracts/{components → shared}/IComponent.sol +23 -29
  412. package/contracts/shared/IComponentService.sol +102 -0
  413. package/contracts/shared/IInstanceLinkedComponent.sol +50 -0
  414. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  415. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  416. package/contracts/shared/INftOwnable.sol +2 -2
  417. package/contracts/shared/IPolicyHolder.sol +29 -10
  418. package/contracts/shared/IRegistryLinked.sol +0 -1
  419. package/contracts/shared/IService.sol +12 -3
  420. package/contracts/shared/InitializableCustom.sol +177 -0
  421. package/contracts/shared/InstanceLinkedComponent.sol +151 -0
  422. package/contracts/shared/KeyValueStore.sol +131 -0
  423. package/contracts/shared/Lifecycle.sol +77 -0
  424. package/contracts/shared/MainnetId.sol +29 -0
  425. package/contracts/shared/NftIdSet.sol +65 -0
  426. package/contracts/shared/NftOwnable.sol +3 -16
  427. package/contracts/shared/PolicyHolder.sol +40 -19
  428. package/contracts/shared/Registerable.sol +13 -12
  429. package/contracts/shared/RegistryLinked.sol +0 -5
  430. package/contracts/shared/Service.sol +32 -22
  431. package/contracts/shared/TokenHandler.sol +27 -2
  432. package/contracts/staking/IStaking.sol +167 -0
  433. package/contracts/staking/IStakingService.sol +160 -0
  434. package/contracts/staking/StakeManagerLib.sol +231 -0
  435. package/contracts/staking/Staking.sol +510 -0
  436. package/contracts/staking/StakingLifecycle.sol +23 -0
  437. package/contracts/staking/StakingManager.sol +50 -0
  438. package/contracts/staking/StakingReader.sol +183 -0
  439. package/contracts/staking/StakingService.sol +411 -0
  440. package/contracts/staking/StakingServiceManager.sol +44 -0
  441. package/contracts/staking/StakingStore.sol +605 -0
  442. package/contracts/staking/TargetManagerLib.sol +207 -0
  443. package/contracts/{types → type}/AddressSet.sol +1 -1
  444. package/contracts/type/Amount.sol +128 -0
  445. package/contracts/{types → type}/Blocknumber.sol +20 -3
  446. package/contracts/{types → type}/ClaimId.sol +25 -2
  447. package/contracts/{types → type}/Fee.sol +24 -22
  448. package/contracts/{types → type}/NftId.sol +14 -16
  449. package/contracts/{types → type}/NftIdSet.sol +2 -2
  450. package/contracts/type/ObjectType.sol +271 -0
  451. package/contracts/{types → type}/PayoutId.sol +33 -5
  452. package/contracts/{types → type}/Referral.sol +1 -1
  453. package/contracts/type/RequestId.sol +75 -0
  454. package/contracts/{types → type}/RiskId.sol +1 -1
  455. package/contracts/type/RoleId.sol +174 -0
  456. package/contracts/{types → type}/Seconds.sol +27 -0
  457. package/contracts/type/Selector.sol +102 -0
  458. package/contracts/{types → type}/StateId.sol +33 -4
  459. package/contracts/type/String.sol +53 -0
  460. package/contracts/{types → type}/Timestamp.sol +10 -1
  461. package/contracts/{types → type}/UFixed.sol +6 -0
  462. package/contracts/{types → type}/Version.sol +4 -2
  463. package/contracts/{shared → upgradeability}/IVersionable.sol +1 -1
  464. package/contracts/{shared → upgradeability}/ProxyManager.sol +36 -7
  465. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  466. package/contracts/{shared → upgradeability}/Versionable.sol +1 -1
  467. package/package.json +8 -5
  468. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  469. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  470. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  471. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  472. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  473. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  474. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  475. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  476. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  477. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  478. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  479. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  480. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  481. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  482. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1330
  483. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  484. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  485. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  486. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  487. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  488. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  489. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  490. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  491. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  492. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  493. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  494. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  495. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  496. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1039
  497. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  498. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -673
  499. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  500. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1231
  501. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  502. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -721
  503. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  504. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -817
  505. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  506. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -641
  507. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  508. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1798
  509. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  510. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
  511. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  512. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  513. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  514. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  515. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  516. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  517. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  518. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  519. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1092
  520. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  521. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -697
  522. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  523. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1237
  524. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  525. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -661
  526. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  527. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -840
  528. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  529. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -653
  530. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  531. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  532. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  533. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
  534. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  535. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  536. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  537. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  538. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  539. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  540. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  541. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  542. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  543. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  544. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  545. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  546. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  547. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  548. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  549. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -596
  550. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  551. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  552. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  553. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  554. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  555. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  556. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  557. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  558. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  559. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  560. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +0 -4
  561. package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -161
  562. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  563. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  564. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  565. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  566. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  567. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  568. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  569. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  570. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  571. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -288
  572. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  573. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  574. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  575. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  576. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  577. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  578. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  579. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  580. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  581. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  582. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  583. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  584. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  585. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  586. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  587. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  588. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  589. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  590. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  591. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  592. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  593. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  594. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  595. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  596. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  597. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  598. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  599. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  600. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  601. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  602. package/contracts/components/Component.sol +0 -253
  603. package/contracts/components/IDistributionComponent.sol +0 -71
  604. package/contracts/components/IPoolComponent.sol +0 -113
  605. package/contracts/components/IProductComponent.sol +0 -40
  606. package/contracts/components/Pool.sol +0 -303
  607. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  608. package/contracts/instance/Cloneable.sol +0 -51
  609. package/contracts/instance/InstanceAccessManager.sol +0 -527
  610. package/contracts/instance/base/ComponentService.sol +0 -121
  611. package/contracts/instance/base/KeyValueStore.sol +0 -180
  612. package/contracts/instance/base/Lifecycle.sol +0 -109
  613. package/contracts/instance/module/ISetup.sol +0 -33
  614. package/contracts/instance/module/ITreasury.sol +0 -23
  615. package/contracts/instance/service/ApplicationService.sol +0 -350
  616. package/contracts/instance/service/BundleService.sol +0 -431
  617. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  618. package/contracts/instance/service/ClaimService.sol +0 -151
  619. package/contracts/instance/service/DistributionService.sol +0 -435
  620. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  621. package/contracts/instance/service/IClaimService.sol +0 -61
  622. package/contracts/instance/service/IProductService.sol +0 -40
  623. package/contracts/instance/service/PolicyService.sol +0 -362
  624. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  625. package/contracts/instance/service/PoolService.sol +0 -303
  626. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  627. package/contracts/instance/service/ProductService.sol +0 -210
  628. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  629. package/contracts/registry/RegistryAccessManager.sol +0 -216
  630. package/contracts/registry/ReleaseManager.sol +0 -324
  631. package/contracts/shared/ContractDeployerLib.sol +0 -72
  632. package/contracts/test/TestFee.sol +0 -25
  633. package/contracts/test/TestRegisterable.sol +0 -18
  634. package/contracts/test/TestRoleId.sol +0 -14
  635. package/contracts/test/TestService.sol +0 -25
  636. package/contracts/test/TestToken.sol +0 -26
  637. package/contracts/test/TestVersion.sol +0 -44
  638. package/contracts/test/TestVersionable.sol +0 -17
  639. package/contracts/types/Amount.sol +0 -60
  640. package/contracts/types/ChainId.sol +0 -38
  641. package/contracts/types/NumberId.sol +0 -52
  642. package/contracts/types/ObjectType.sol +0 -157
  643. package/contracts/types/RoleId.sol +0 -97
  644. /package/contracts/{types → type}/DistributorType.sol +0 -0
  645. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -2,34 +2,52 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
+ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
7
+ import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
5
8
 
6
- import {NftId, toNftId, zeroNftId} from "../types/NftId.sol";
7
- import {VersionPart} from "../types/Version.sol";
8
- import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../types/ObjectType.sol";
9
+ import {NftId, NftIdLib} from "../type/NftId.sol";
10
+ import {VersionPart} from "../type/Version.sol";
11
+ import {ObjectType, PROTOCOL, REGISTRY, SERVICE, INSTANCE, STAKE, STAKING, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
9
12
 
10
13
  import {ChainNft} from "./ChainNft.sol";
11
14
  import {IRegistry} from "./IRegistry.sol";
12
- import {ReleaseManager} from "./ReleaseManager.sol";
15
+ import {IRegisterable} from "../shared/IRegisterable.sol";
16
+ import {ReleaseRegistry} from "./ReleaseRegistry.sol";
17
+ import {TokenRegistry} from "./TokenRegistry.sol";
18
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
19
+ import {SidenetContract} from "../shared/MainnetId.sol";
13
20
 
14
- // IMPORTANT
21
+ /// @dev IMPORTANT
15
22
  // Each NFT minted by registry is accosiated with:
16
23
  // 1) NFT owner
17
24
  // 2) registred contract OR object stored in registered (parent) contract
18
- // Four registration flows:
19
- // 1) IService address by release manager (SERVICE of domain SERVICE aka registry service aka release creation)
20
- // 2) IService address by release manager (SERVICE of domain !SERVICE aka regular service)
21
- // 3) IRegisterable address by regular service (INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE)
22
- // 4) state object by regular service (POLICY, BUNDLE, STAKE)
25
+ // Three registration flows:
26
+ // 1) registerService() -> registers IService address by ReleaseRegistry (ReleaseRegistry is set at deployment time)
27
+ // 2) register() -> registers IRegisterable address by IService (INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE)
28
+ // 3) -> registers object by IService (POLICY, BUNDLE, STAKE)
23
29
 
30
+ /// @title Chain Registry contract implementing IRegistry.
31
+ /// @notice See IRegistry for method details.
24
32
  contract Registry is
33
+ SidenetContract,
34
+ Initializable,
35
+ AccessManaged,
25
36
  IRegistry
26
37
  {
27
- address public constant NFT_LOCK_ADDRESS = address(0x1);
38
+ using NftIdLib for NftId;
39
+
40
+ address public NFT_LOCK_ADDRESS = address(0x1);
28
41
  uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
42
+ uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
29
43
  string public constant EMPTY_URI = "";
30
44
 
31
- mapping(NftId nftId => ObjectInfo info) private _info;
32
- mapping(address object => NftId nftId) private _nftIdByAddress;
45
+ /// @dev stores the deployer address and allows to create initializers
46
+ /// that are restricted to the deployer address.
47
+ address public immutable _deployer;
48
+
49
+ mapping(NftId nftId => ObjectInfo info) internal _info;
50
+ mapping(address object => NftId nftId) internal _nftIdByAddress;
33
51
 
34
52
  mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
35
53
 
@@ -41,162 +59,200 @@ contract Registry is
41
59
  mapping(ObjectType objectType => mapping(
42
60
  ObjectType parentType => bool)) private _coreObjectCombinations;
43
61
 
44
- NftId private _registryNftId;
45
- ChainNft private _chainNft;
62
+ RegistryAdmin public immutable _admin;
63
+ ChainNft public immutable _chainNft;
46
64
 
47
- ReleaseManager private _releaseManager;
65
+ NftId public immutable _protocolNftId;
66
+ NftId public immutable _globalRegistryNftId;
67
+ NftId public immutable _registryNftId;
68
+ NftId public _stakingNftId;
48
69
 
49
- modifier onlyRegistryService() {
50
- if(!_releaseManager.isActiveRegistryService(msg.sender)) {
51
- revert CallerNotRegistryService();
70
+ address public _tokenRegistryAddress;
71
+ address public _stakingAddress;
72
+ ReleaseRegistry public _releaseRegistry;
73
+
74
+ modifier onlyDeployer() {
75
+ if (msg.sender != _deployer) {
76
+ revert ErrorRegistryCallerNotDeployer();
52
77
  }
53
78
  _;
54
79
  }
55
80
 
56
- modifier onlyReleaseManager() {
57
- if(msg.sender != address(_releaseManager)) {
58
- revert CallerNotReleaseManager();
81
+ modifier onlyReleaseRegistry() {
82
+ if(msg.sender != address(_releaseRegistry)) {
83
+ revert ErrorRegistryCallerNotReleaseRegistry();
59
84
  }
60
85
  _;
61
86
  }
62
87
 
63
- constructor()
88
+ /// @dev Creates the registry contract and populates it with the protocol and registry objects.
89
+ /// Internally deploys the ChainNft contract.
90
+ // TODO consider storing global registry address as constant
91
+ constructor(RegistryAdmin admin, address globalRegistry)
92
+ AccessManaged(admin.authority())
64
93
  {
65
- _releaseManager = ReleaseManager(msg.sender);
66
-
94
+ _deployer = msg.sender;
95
+ _admin = admin;
67
96
  // deploy NFT
68
97
  _chainNft = new ChainNft(address(this));
69
98
 
70
99
  // initial registry setup
71
- _registerProtocol();
72
- _registerRegistry();
100
+ _protocolNftId = _registerProtocol();
101
+ _globalRegistryNftId = _registerGlobalRegistry(globalRegistry);
102
+ _registryNftId = _registerRegistry();
73
103
 
74
104
  // set object types and object parent relations
75
105
  _setupValidCoreTypesAndCombinations();
76
106
  }
77
107
 
78
- function registerService(
79
- ObjectInfo memory info,
80
- VersionPart version,
81
- ObjectType domain
108
+
109
+ /// @dev Wires release registry and token to registry (this contract).
110
+ /// MUST be called by release registry.
111
+ function initialize(
112
+ address releaseRegistry,
113
+ address tokenRegistry,
114
+ address staking
82
115
  )
83
116
  external
84
- onlyReleaseManager
85
- returns(NftId nftId)
117
+ initializer()
118
+ onlyDeployer()
86
119
  {
87
- /* must be guaranteed by release manager
88
- if(info.objectType != SERVICE()) {
89
- revert();
90
- }
91
- if(info.parentType != REGISTRY()) {
92
- revert();
93
- }
94
- info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
95
- */
120
+ _releaseRegistry = ReleaseRegistry(releaseRegistry);
121
+ _tokenRegistryAddress = tokenRegistry;
122
+ _stakingAddress = staking;
96
123
 
97
- if(_service[version][domain] > address(0)) {
98
- revert ServiceAlreadyRegistered(info.objectAddress);
99
- }
100
-
101
- _service[version][domain] = info.objectAddress; // nftId;
102
-
103
- nftId = _register(info);
104
-
105
- emit LogServiceRegistration(version, domain);
124
+ _stakingNftId = _registerStaking();
106
125
  }
107
126
 
127
+ /// @inheritdoc IRegistry
108
128
  function register(ObjectInfo memory info)
109
129
  external
110
- onlyRegistryService
130
+ restricted
111
131
  returns(NftId nftId)
112
132
  {
113
133
  ObjectType objectType = info.objectType;
114
134
  ObjectType parentType = _info[info.parentNftId].objectType;
115
135
 
116
- // TODO do not need it here -> SERVICE is no longer part of _coreContractCombinations
117
- // no service registrations
118
- if(objectType == SERVICE()) {
119
- revert ServiceRegistration();
120
- }
121
-
122
- // only valid core types combinations
123
- if(info.objectAddress == address(0))
124
- {
136
+ // check type combinations for core objects
137
+ if(info.objectAddress == address(0)) {
125
138
  if(_coreObjectCombinations[objectType][parentType] == false) {
126
- revert InvalidTypesCombination(objectType, parentType);
139
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
127
140
  }
128
141
  }
129
- else
130
- {
142
+ // check type combinations for contract objects
143
+ else {
131
144
  if(_coreContractCombinations[objectType][parentType] == false) {
132
- revert InvalidTypesCombination(objectType, parentType);
145
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
133
146
  }
134
147
  }
135
148
 
136
149
  nftId = _register(info);
137
150
  }
138
151
 
152
+
153
+ /// @inheritdoc IRegistry
154
+ function registerService(
155
+ ObjectInfo memory info,
156
+ VersionPart version,
157
+ ObjectType domain
158
+ )
159
+ external
160
+ onlyReleaseRegistry
161
+ returns(NftId nftId)
162
+ {
163
+ // check service address is defined
164
+ address service = info.objectAddress;
165
+ if(service == address(0)) {
166
+ revert ErrorRegistryServiceAddressZero();
167
+ }
168
+
169
+ // check version is defined
170
+ if(version.eqz()) {
171
+ revert ErrorRegistryServiceVersionZero();
172
+ }
173
+
174
+ // check domain is defined
175
+ if(domain.eqz()) {
176
+ revert ErrorRegistryDomainZero(service);
177
+ }
178
+
179
+ // check contract has not already been registered
180
+ if(_service[version][domain] != address(0)) {
181
+ revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
182
+ }
183
+
184
+ // check service has proper type
185
+ if(info.objectType != SERVICE()) {
186
+ revert ErrorRegistryNotService(service, info.objectType);
187
+ }
188
+
189
+ // check that parent has registry type
190
+ if(info.parentNftId != _registryNftId) {
191
+ revert ErrorRegistryServiceParentNotRegistry(info.parentNftId);
192
+ }
193
+
194
+ _service[version][domain] = service;
195
+ nftId = _register(info);
196
+
197
+ emit LogServiceRegistration(version, domain);
198
+ }
199
+
200
+
201
+ /// @inheritdoc IRegistry
139
202
  function registerWithCustomType(ObjectInfo memory info)
140
203
  external
141
- onlyRegistryService
204
+ restricted
142
205
  returns(NftId nftId)
143
206
  {
144
207
  ObjectType objectType = info.objectType;
145
208
  ObjectType parentType = _info[info.parentNftId].objectType;
146
209
 
147
210
  if(_coreTypes[objectType]) {
148
- revert CoreTypeRegistration();
211
+ revert ErrorRegistryCoreTypeRegistration();
149
212
  }
150
213
 
151
214
  if(
152
215
  parentType == PROTOCOL() ||
153
- parentType == REGISTRY() ||
154
216
  parentType == SERVICE()
155
217
  ) {
156
- revert InvalidTypesCombination(objectType, parentType);
218
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
157
219
  }
158
220
 
159
- _register(info);
221
+ nftId = _register(info);
160
222
  }
161
223
 
162
224
 
163
225
  /// @dev earliest GIF major version
164
226
  function getInitialVersion() external view returns (VersionPart) {
165
- return _releaseManager.getInitialVersion();
227
+ return _releaseRegistry.getInitialVersion();
166
228
  }
167
229
 
168
- // TODO make distinction between active an not yet active version
169
- // need to be thought trough, not yet clear if necessary
170
- // need to answer question: what is the latest version during the upgrade process?
171
- // likely setting up a new gif version does not fit into a single tx
172
- // in this case we might want to have a period where the latest version is
173
- // in the process of being set up while the latest active version is 1 major release smaller
174
- /// @dev latest GIF major version (might not yet be active)
230
+ /// @dev next GIF release version to be released
175
231
  function getNextVersion() external view returns (VersionPart) {
176
- return _releaseManager.getNextVersion();
232
+ return _releaseRegistry.getNextVersion();
177
233
  }
178
234
 
179
235
  /// @dev latest active GIF release version
180
236
  function getLatestVersion() external view returns (VersionPart) {
181
- return _releaseManager.getLatestVersion();
237
+ return _releaseRegistry.getLatestVersion();
182
238
  }
183
239
 
184
240
  function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
185
- return _releaseManager.getReleaseInfo(version);
241
+ return _releaseRegistry.getReleaseInfo(version);
186
242
  }
187
243
 
188
244
  function getObjectCount() external view returns (uint256) {
189
245
  return _chainNft.totalSupply();
190
246
  }
191
247
 
192
- function getReleaseManagerAddress() external view returns (address) {
193
- return address(_releaseManager);
194
- }
195
-
196
248
  function getNftId() external view returns (NftId nftId) {
197
249
  return _registryNftId;
198
250
  }
199
251
 
252
+ function getProtocolNftId() external view returns (NftId nftId) {
253
+ return _protocolNftId;
254
+ }
255
+
200
256
  function getNftId(address object) external view returns (NftId id) {
201
257
  return _nftIdByAddress[object];
202
258
  }
@@ -234,9 +290,19 @@ contract Registry is
234
290
  return _info[objectParentNftId].objectType == INSTANCE();
235
291
  }
236
292
 
237
- function isValidRelease(VersionPart version) external view returns (bool)
293
+ function isActiveRelease(VersionPart version) external view returns (bool)
238
294
  {
239
- return _releaseManager.isValidRelease(version);
295
+ return _releaseRegistry.isActiveRelease(version);
296
+ }
297
+
298
+ function getStakingAddress() external view returns (address staking) {
299
+ //return getObjectInfo(_stakingNftId).objectAddress;
300
+ //return _info[_stakingNftId].objectAddress;
301
+ return _stakingAddress;
302
+ }
303
+
304
+ function getTokenRegistryAddress() external view returns (address tokenRegistry) {
305
+ return _tokenRegistryAddress;
240
306
  }
241
307
 
242
308
  function getServiceAddress(
@@ -244,16 +310,25 @@ contract Registry is
244
310
  VersionPart releaseVersion
245
311
  ) external view returns (address service)
246
312
  {
247
- // TODO how can I get service address while release is not validated/activated ?!! -> user will check validity of release on its own
248
- //if(_releaseManager.isValidRelease(releaseVersion)) {
249
- service = _service[releaseVersion][serviceDomain];
250
- //}
313
+ service = _service[releaseVersion][serviceDomain];
314
+ }
315
+
316
+ function getReleaseRegistryAddress() external view returns (address) {
317
+ return address(_releaseRegistry);
251
318
  }
252
319
 
253
320
  function getChainNftAddress() external view override returns (address) {
254
321
  return address(_chainNft);
255
322
  }
256
323
 
324
+ function getRegistryAdminAddress() external view returns (address) {
325
+ return address(_admin);
326
+ }
327
+
328
+ function getAuthority() external view returns (address) {
329
+ return _admin.authority();
330
+ }
331
+
257
332
  function getOwner() public view returns (address owner) {
258
333
  return ownerOf(address(this));
259
334
  }
@@ -271,65 +346,81 @@ contract Registry is
271
346
  // Internals
272
347
 
273
348
  /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
274
- // TODO registration of precompile addresses
275
349
  function _register(ObjectInfo memory info)
276
350
  internal
277
351
  returns(NftId nftId)
278
352
  {
279
353
  ObjectType objectType = info.objectType;
354
+ bool isInterceptor = info.isInterceptor;
355
+ address objectAddress = info.objectAddress;
356
+ address owner = info.initialOwner;
357
+
280
358
  NftId parentNftId = info.parentNftId;
281
359
  ObjectInfo memory parentInfo = _info[parentNftId];
282
360
  ObjectType parentType = parentInfo.objectType; // see function header
283
361
  address parentAddress = parentInfo.objectAddress;
284
362
 
285
363
  // parent is contract -> need to check? -> check before minting
364
+ // special case: staking: to protocol possible as well
286
365
  // special case: global registry nft as parent when not on mainnet -> global registry address is 0
287
366
  // special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
288
367
  // special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
289
- if(parentAddress == address(0)) {
290
- revert ZeroParentAddress();
368
+ if(objectType != STAKE()) {
369
+ if(parentAddress == address(0)) {
370
+ revert ErrorRegistryParentAddressZero();
371
+ }
291
372
  }
292
373
 
293
- address interceptor = _getInterceptor(info.isInterceptor, info.objectAddress, parentInfo.isInterceptor, parentAddress);
294
- uint256 tokenId = _chainNft.getNextTokenId();
295
- nftId = toNftId(tokenId);
374
+ address interceptorAddress = _getInterceptor(
375
+ isInterceptor,
376
+ objectType,
377
+ objectAddress,
378
+ parentInfo.isInterceptor,
379
+ parentAddress);
296
380
 
381
+ uint256 tokenId = _chainNft.getNextTokenId();
382
+ nftId = NftIdLib.toNftId(tokenId);
297
383
  info.nftId = nftId;
298
384
  _info[nftId] = info;
299
385
 
300
- if(info.objectAddress > address(0))
301
- {
302
- address contractAddress = info.objectAddress;
303
-
304
- if(_nftIdByAddress[contractAddress].gtz()) {
305
- revert ContractAlreadyRegistered(contractAddress);
386
+ if(objectAddress > address(0)) {
387
+ if(_nftIdByAddress[objectAddress].gtz()) {
388
+ revert ErrorRegistryContractAlreadyRegistered(objectAddress);
306
389
  }
307
390
 
308
- _nftIdByAddress[contractAddress] = nftId;
391
+ _nftIdByAddress[objectAddress] = nftId;
309
392
  }
310
393
 
311
- emit LogRegistration(nftId, parentNftId, objectType, info.isInterceptor, info.objectAddress, info.initialOwner);
394
+ emit LogRegistration(nftId, parentNftId, objectType, isInterceptor, objectAddress, owner);
312
395
 
313
396
  // calls nft receiver(1) and interceptor(2)
314
397
  uint256 mintedTokenId = _chainNft.mint(
315
- info.initialOwner,
316
- interceptor,
398
+ owner,
399
+ interceptorAddress,
317
400
  EMPTY_URI);
318
- assert(mintedTokenId == tokenId);
319
-
401
+
402
+ assert(mintedTokenId == tokenId);
320
403
  }
321
404
 
322
405
  /// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
406
+ /// special case: STAKES (parent may be any type) -> no intercept call
407
+ /// default case:
323
408
  function _getInterceptor(
324
409
  bool isInterceptor,
410
+ ObjectType objectType,
325
411
  address objectAddress,
326
412
  bool parentIsInterceptor,
327
413
  address parentObjectAddress
328
414
  )
329
415
  internal
330
- view
416
+ pure
331
417
  returns (address interceptor)
332
418
  {
419
+ // no intercepting calls for stakes
420
+ if (objectType == STAKE()) {
421
+ return address(0);
422
+ }
423
+
333
424
  if (objectAddress == address(0)) {
334
425
  if (parentIsInterceptor) {
335
426
  return parentObjectAddress;
@@ -350,13 +441,14 @@ contract Registry is
350
441
  /// @dev protocol registration used to anchor the dip ecosystem relations
351
442
  function _registerProtocol()
352
443
  private
444
+ returns (NftId protocolNftId)
353
445
  {
354
446
  uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
355
- NftId protocolNftId = toNftId(protocolId);
447
+ protocolNftId = NftIdLib.toNftId(protocolId);
356
448
 
357
449
  _info[protocolNftId] = ObjectInfo({
358
450
  nftId: protocolNftId,
359
- parentNftId: zeroNftId(),
451
+ parentNftId: NftIdLib.zero(),
360
452
  objectType: PROTOCOL(),
361
453
  isInterceptor: false,
362
454
  objectAddress: address(0),
@@ -367,101 +459,109 @@ contract Registry is
367
459
  _chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
368
460
  }
369
461
 
462
+ /// @dev global registry registration
463
+ function _registerGlobalRegistry(address globalRegistry)
464
+ internal
465
+ returns (NftId globalRegistryNftId)
466
+ {
467
+ uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
468
+ globalRegistryNftId = NftIdLib.toNftId(globalRegistryId);
469
+
470
+ _info[globalRegistryNftId] = ObjectInfo({
471
+ nftId: globalRegistryNftId,
472
+ parentNftId: _protocolNftId,
473
+ objectType: REGISTRY(),
474
+ isInterceptor: false,
475
+ objectAddress: globalRegistry,
476
+ initialOwner: NFT_LOCK_ADDRESS,
477
+ data: ""
478
+ });
479
+
480
+ _nftIdByAddress[address(this)] = globalRegistryNftId;
481
+ _chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
482
+ }
483
+
370
484
  /// @dev registry registration
371
- /// might also register the global registry when not on mainnet
372
485
  function _registerRegistry()
373
- private
486
+ internal
487
+ virtual
488
+ returns (NftId registryNftId)
374
489
  {
375
490
  uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
376
- NftId registryNftId = toNftId(registryId);
377
- NftId parentNftId;
378
-
379
- if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
380
- {// we're not the global registry
381
- _registerGlobalRegistry();
382
- parentNftId = toNftId(_chainNft.GLOBAL_REGISTRY_ID());
383
- }
384
- else
385
- {// we are global registry
386
- parentNftId = toNftId(_chainNft.PROTOCOL_NFT_ID());
387
- }
491
+ registryNftId = NftIdLib.toNftId(registryId);
388
492
 
389
493
  _info[registryNftId] = ObjectInfo({
390
494
  nftId: registryNftId,
391
- parentNftId: parentNftId,
495
+ parentNftId: _globalRegistryNftId,
392
496
  objectType: REGISTRY(),
393
497
  isInterceptor: false,
394
498
  objectAddress: address(this),
395
499
  initialOwner: NFT_LOCK_ADDRESS,
396
500
  data: ""
397
501
  });
398
- _nftIdByAddress[address(this)] = registryNftId;
399
- _registryNftId = registryNftId;
400
502
 
503
+ _nftIdByAddress[address(this)] = registryNftId;
401
504
  _chainNft.mint(NFT_LOCK_ADDRESS, registryId);
402
505
  }
403
506
 
404
- /// @dev global registry registration for non mainnet registries
405
- function _registerGlobalRegistry()
507
+ /// @dev staking registration
508
+ function _registerStaking()
406
509
  private
510
+ onlyInitializing()
511
+ returns (NftId stakingNftId)
407
512
  {
408
- uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
409
- NftId globalRegistryNftId = toNftId(globalRegistryId);
410
-
411
- _info[globalRegistryNftId] = ObjectInfo({
412
- nftId: globalRegistryNftId,
413
- parentNftId: toNftId(_chainNft.PROTOCOL_NFT_ID()),
414
- objectType: REGISTRY(),
513
+ address stakingOwner = IRegisterable(_stakingAddress).getOwner();
514
+ uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
515
+ stakingNftId = NftIdLib.toNftId(stakingId);
516
+
517
+ _info[stakingNftId] = ObjectInfo({
518
+ nftId: stakingNftId,
519
+ parentNftId: _registryNftId,
520
+ objectType: STAKING(),
415
521
  isInterceptor: false,
416
- objectAddress: address(0),
417
- initialOwner: NFT_LOCK_ADDRESS,
418
- data: ""
522
+ objectAddress: _stakingAddress,
523
+ initialOwner: stakingOwner,
524
+ data: ""
419
525
  });
420
526
 
421
- _chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
527
+ _nftIdByAddress[_stakingAddress] = stakingNftId;
528
+ _chainNft.mint(stakingOwner, stakingId);
422
529
  }
423
530
 
424
531
  /// @dev defines which object - parent types relations are allowed to register
425
- // IMPORTANT:
426
- // 1) EACH object type MUST have only one parent type across ALL mappings
427
- // 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
428
- // 3) DO NOT use REGISTRY as object type
429
- // 2) DO NOT use PROTOCOL and "zeroObjectType"
532
+ /// EACH object type MUST have only one parent type across ALL mappings
430
533
  function _setupValidCoreTypesAndCombinations()
431
- private
534
+ private
432
535
  {
433
536
  _coreTypes[REGISTRY()] = true;
434
537
  _coreTypes[SERVICE()] = true;
435
- _coreTypes[TOKEN()] = true;
436
538
  _coreTypes[INSTANCE()] = true;
437
539
  _coreTypes[PRODUCT()] = true;
438
540
  _coreTypes[POOL()] = true;
439
541
  _coreTypes[DISTRIBUTION()] = true;
542
+ _coreTypes[DISTRIBUTOR()] = true;
543
+ _coreTypes[ORACLE()] = true;
440
544
  _coreTypes[POLICY()] = true;
441
545
  _coreTypes[BUNDLE()] = true;
546
+ _coreTypes[STAKING()] = true;
442
547
  _coreTypes[STAKE()] = true;
443
-
444
- // registry as parent, ONLY registry owner
445
- //_coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
446
- _coreContractCombinations[TOKEN()][REGISTRY()] = true;
447
- //_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
448
548
 
449
- // registry as parent, ONLY approved
549
+ _coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
450
550
  _coreContractCombinations[INSTANCE()][REGISTRY()] = true;
451
551
 
452
- // instance as parent, ONLY approved
552
+ // components with instance parent
453
553
  _coreContractCombinations[PRODUCT()][INSTANCE()] = true;
454
554
  _coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
455
555
  _coreContractCombinations[ORACLE()][INSTANCE()] = true;
456
556
  _coreContractCombinations[POOL()][INSTANCE()] = true;
457
557
 
558
+ // objects with coponent parents
458
559
  _coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
459
-
460
- // product as parent, ONLY approved
461
560
  _coreObjectCombinations[POLICY()][PRODUCT()] = true;
462
-
463
- // pool as parent, ONLY approved
464
561
  _coreObjectCombinations[BUNDLE()][POOL()] = true;
465
- _coreObjectCombinations[STAKE()][POOL()] = true;
562
+
563
+ // staking
564
+ _coreObjectCombinations[STAKE()][PROTOCOL()] = true;
565
+ _coreObjectCombinations[STAKE()][INSTANCE()] = true;
466
566
  }
467
567
  }