@etherisc/gif-next 0.0.2-fe77319 → 0.0.2-ff1bf36-818

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 (562) hide show
  1. package/README.md +406 -9
  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/access → authorization}/IAccess.sol/IAccess.json +1 -1
  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 +1489 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1159 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1502 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +842 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +906 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +914 -0
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +295 -535
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +757 -0
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +486 -591
  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 +4 -0
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1693 -0
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1160 -0
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +734 -0
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3469 -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/base/Cloneable.sol/Cloneable.json +137 -0
  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 +4 -0
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  69. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IBundle.sol/IBundle.json} +2 -2
  70. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  71. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
  72. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  73. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  74. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  75. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  76. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  77. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.json +10 -0
  78. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  79. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  80. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1126 -0
  82. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  84. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  86. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +765 -0
  88. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  90. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1018 -0
  92. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  93. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  94. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  95. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  96. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1395 -0
  98. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  100. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  101. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1466 -0
  102. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +818 -0
  104. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +907 -0
  106. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  107. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +909 -0
  108. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1218 -0
  110. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  111. package/artifacts/contracts/pool/Pool.sol/Pool.json +1181 -0
  112. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  113. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1625 -0
  114. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +758 -0
  116. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  117. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +852 -0
  118. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  119. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
  120. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  121. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1243 -0
  122. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  123. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  124. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  125. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1331 -0
  126. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  128. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  129. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +517 -0
  130. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  131. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +788 -0
  132. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  133. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +800 -0
  134. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  135. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
  136. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  137. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +948 -0
  138. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  139. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +400 -0
  140. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1263 -0
  142. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +782 -0
  144. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  145. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1017 -0
  146. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  147. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  148. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  149. package/artifacts/contracts/product/Product.sol/Product.json +1201 -0
  150. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  151. package/artifacts/contracts/product/RiskService.sol/RiskService.json +695 -0
  152. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +702 -0
  154. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +4 -0
  155. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +784 -0
  156. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +743 -104
  158. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  159. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +940 -0
  160. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  161. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  162. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/Registry.sol/Registry.json +1083 -114
  164. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  165. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  166. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  167. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1452 -0
  168. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  169. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +721 -0
  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 +1159 -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 +4 -0
  177. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  178. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  179. package/artifacts/contracts/shared/Component.sol/Component.json +832 -0
  180. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  181. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1680 -0
  182. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +804 -0
  184. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  185. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
  186. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  187. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +605 -0
  188. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  189. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  190. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  191. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +700 -0
  192. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  193. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +474 -0
  194. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  195. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +110 -0
  196. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  197. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +131 -0
  198. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  199. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  200. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  201. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +181 -0
  202. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  203. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +11 -11
  204. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  205. package/artifacts/contracts/shared/IService.sol/IService.json +346 -0
  206. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  207. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  208. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  209. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  210. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  211. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +940 -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/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  217. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  218. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  219. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  220. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  221. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  222. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  223. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +353 -0
  224. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  225. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  226. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  227. package/artifacts/contracts/shared/Service.sol/Service.json +507 -0
  228. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  229. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +469 -0
  230. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  231. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  232. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  233. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1412 -0
  234. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  235. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  236. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +387 -0
  238. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  239. package/artifacts/contracts/staking/Staking.sol/Staking.json +1941 -0
  240. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  242. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  244. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  246. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  248. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  249. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  250. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  251. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  252. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  253. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +576 -0
  254. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  255. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  256. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  258. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  260. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  262. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  264. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  266. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  267. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  268. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  270. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  271. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  272. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  274. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  276. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  278. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  280. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  282. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  284. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +222 -0
  286. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  288. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  290. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +92 -0
  292. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  294. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  296. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  298. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  300. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  302. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  304. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  305. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  306. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  307. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  308. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  309. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  310. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  311. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  312. package/contracts/authorization/AccessAdmin.sol +591 -0
  313. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  314. package/contracts/authorization/Authorization.sol +217 -0
  315. package/contracts/authorization/IAccess.sol +48 -0
  316. package/contracts/authorization/IAccessAdmin.sol +136 -0
  317. package/contracts/authorization/IAuthorization.sol +54 -0
  318. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  319. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  320. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  321. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  322. package/contracts/distribution/BasicDistribution.sol +138 -0
  323. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  324. package/contracts/distribution/Distribution.sol +295 -0
  325. package/contracts/distribution/DistributionService.sol +322 -0
  326. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  327. package/contracts/distribution/IDistributionComponent.sol +52 -0
  328. package/contracts/distribution/IDistributionService.sol +95 -0
  329. package/contracts/instance/BundleSet.sol +126 -0
  330. package/contracts/instance/IInstance.sol +58 -15
  331. package/contracts/instance/IInstanceService.sol +92 -0
  332. package/contracts/instance/Instance.sol +211 -45
  333. package/contracts/instance/InstanceAdmin.sol +285 -0
  334. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  335. package/contracts/instance/InstanceReader.sol +408 -0
  336. package/contracts/instance/InstanceService.sol +467 -0
  337. package/contracts/instance/InstanceServiceManager.sol +40 -0
  338. package/contracts/instance/InstanceStore.sol +277 -0
  339. package/contracts/instance/base/BalanceStore.sol +123 -0
  340. package/contracts/instance/base/Cloneable.sol +28 -0
  341. package/contracts/instance/base/ObjectCounter.sol +21 -0
  342. package/contracts/instance/base/ObjectLifecycle.sol +105 -0
  343. package/contracts/instance/base/ObjectSet.sol +79 -0
  344. package/contracts/instance/module/IAccess.sol +46 -0
  345. package/contracts/instance/module/IBundle.sol +20 -0
  346. package/contracts/instance/module/IComponents.sol +46 -0
  347. package/contracts/instance/module/IDistribution.sol +41 -0
  348. package/contracts/instance/module/IPolicy.sol +84 -0
  349. package/contracts/instance/module/IRisk.sol +11 -0
  350. package/contracts/mock/Dip.sol +26 -0
  351. package/contracts/oracle/BasicOracle.sol +48 -0
  352. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  353. package/contracts/oracle/IOracle.sol +36 -0
  354. package/contracts/oracle/IOracleComponent.sol +33 -0
  355. package/contracts/oracle/IOracleService.sol +65 -0
  356. package/contracts/oracle/Oracle.sol +166 -0
  357. package/contracts/oracle/OracleService.sol +278 -0
  358. package/contracts/oracle/OracleServiceManager.sol +39 -0
  359. package/contracts/pool/BasicPool.sol +166 -0
  360. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  361. package/contracts/pool/BundleService.sol +436 -0
  362. package/contracts/pool/BundleServiceManager.sol +39 -0
  363. package/contracts/pool/IBundleService.sol +134 -0
  364. package/contracts/pool/IPoolComponent.sol +58 -0
  365. package/contracts/pool/IPoolService.sol +163 -0
  366. package/contracts/pool/Pool.sol +328 -0
  367. package/contracts/pool/PoolService.sol +541 -0
  368. package/contracts/pool/PoolServiceManager.sol +39 -0
  369. package/contracts/product/ApplicationService.sol +250 -0
  370. package/contracts/product/ApplicationServiceManager.sol +38 -0
  371. package/contracts/product/BasicProduct.sol +52 -0
  372. package/contracts/product/BasicProductAuthorization.sol +43 -0
  373. package/contracts/product/ClaimService.sol +416 -0
  374. package/contracts/product/ClaimServiceManager.sol +38 -0
  375. package/contracts/product/IApplicationService.sol +63 -0
  376. package/contracts/product/IClaimService.sol +100 -0
  377. package/contracts/product/IPolicyService.sol +84 -0
  378. package/contracts/product/IPricingService.sol +39 -0
  379. package/contracts/product/IProductComponent.sol +40 -0
  380. package/contracts/product/IRiskService.sol +33 -0
  381. package/contracts/product/PolicyService.sol +584 -0
  382. package/contracts/product/PolicyServiceManager.sol +39 -0
  383. package/contracts/product/PricingService.sol +304 -0
  384. package/contracts/product/PricingServiceManager.sol +39 -0
  385. package/contracts/product/Product.sol +410 -0
  386. package/contracts/product/RiskService.sol +97 -0
  387. package/contracts/product/RiskServiceManager.sol +39 -0
  388. package/contracts/registry/ChainNft.sol +217 -0
  389. package/contracts/registry/IRegistry.sol +120 -52
  390. package/contracts/registry/IRegistryService.sol +69 -0
  391. package/contracts/registry/ITransferInterceptor.sol +7 -0
  392. package/contracts/registry/Registry.sol +504 -125
  393. package/contracts/registry/RegistryAdmin.sol +374 -0
  394. package/contracts/registry/RegistryService.sol +252 -0
  395. package/contracts/registry/RegistryServiceManager.sol +53 -0
  396. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  397. package/contracts/registry/ReleaseRegistry.sol +485 -0
  398. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  399. package/contracts/registry/TokenRegistry.sol +315 -0
  400. package/contracts/shared/Component.sol +268 -0
  401. package/contracts/shared/ComponentService.sol +641 -0
  402. package/contracts/shared/ComponentServiceManager.sol +35 -0
  403. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  404. package/contracts/shared/IComponent.sol +70 -0
  405. package/contracts/shared/IComponentService.sol +108 -0
  406. package/contracts/shared/IInstanceLinkedComponent.sol +49 -0
  407. package/contracts/shared/IKeyValueStore.sol +54 -0
  408. package/contracts/shared/ILifecycle.sol +29 -0
  409. package/contracts/shared/INftOwnable.sol +23 -0
  410. package/contracts/shared/IPolicyHolder.sol +45 -0
  411. package/contracts/shared/IRegisterable.sol +15 -0
  412. package/contracts/shared/IRegistryLinked.sol +11 -0
  413. package/contracts/shared/IService.sol +25 -0
  414. package/contracts/shared/InitializableCustom.sol +177 -0
  415. package/contracts/shared/InitializableERC165.sol +27 -0
  416. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  417. package/contracts/shared/KeyValueStore.sol +131 -0
  418. package/contracts/shared/Lifecycle.sol +77 -0
  419. package/contracts/shared/NftIdSet.sol +65 -0
  420. package/contracts/shared/NftOwnable.sol +107 -0
  421. package/contracts/shared/PolicyHolder.sol +99 -0
  422. package/contracts/shared/Registerable.sol +75 -0
  423. package/contracts/shared/RegistryLinked.sol +43 -0
  424. package/contracts/shared/Service.sol +82 -0
  425. package/contracts/shared/TokenHandler.sol +139 -0
  426. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  427. package/contracts/staking/IStaking.sol +167 -0
  428. package/contracts/staking/IStakingService.sol +160 -0
  429. package/contracts/staking/StakeManagerLib.sol +206 -0
  430. package/contracts/staking/Staking.sol +497 -0
  431. package/contracts/staking/StakingLifecycle.sol +23 -0
  432. package/contracts/staking/StakingManager.sol +50 -0
  433. package/contracts/staking/StakingReader.sol +183 -0
  434. package/contracts/staking/StakingService.sol +407 -0
  435. package/contracts/staking/StakingServiceManager.sol +44 -0
  436. package/contracts/staking/StakingStore.sol +605 -0
  437. package/contracts/staking/TargetManagerLib.sol +207 -0
  438. package/contracts/type/AddressSet.sol +58 -0
  439. package/contracts/type/Amount.sol +135 -0
  440. package/contracts/type/Blocknumber.sol +142 -0
  441. package/contracts/type/ClaimId.sol +75 -0
  442. package/contracts/type/DistributorType.sol +55 -0
  443. package/contracts/type/Fee.sol +66 -0
  444. package/contracts/type/Key32.sol +50 -0
  445. package/contracts/type/NftId.sol +78 -0
  446. package/contracts/type/NftIdSet.sol +62 -0
  447. package/contracts/type/ObjectType.sol +271 -0
  448. package/contracts/type/PayoutId.sol +82 -0
  449. package/contracts/type/Referral.sol +90 -0
  450. package/contracts/type/RequestId.sol +75 -0
  451. package/contracts/type/RiskId.sol +43 -0
  452. package/contracts/type/RoleId.sol +174 -0
  453. package/contracts/type/Seconds.sol +93 -0
  454. package/contracts/type/Selector.sol +102 -0
  455. package/contracts/type/StateId.sol +135 -0
  456. package/contracts/type/String.sol +53 -0
  457. package/contracts/type/Timestamp.sol +146 -0
  458. package/contracts/type/UFixed.sol +351 -0
  459. package/contracts/type/Version.sol +110 -0
  460. package/contracts/upgradeability/IVersionable.sol +53 -0
  461. package/contracts/upgradeability/ProxyManager.sol +198 -0
  462. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +14 -0
  463. package/contracts/upgradeability/Versionable.sol +59 -0
  464. package/package.json +25 -7
  465. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  466. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  467. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  468. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  469. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  470. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  471. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  472. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  473. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  474. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -195
  475. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  476. package/artifacts/contracts/components/Product.sol/Product.json +0 -213
  477. package/artifacts/contracts/experiment/A.sol/A.dbg.json +0 -4
  478. package/artifacts/contracts/experiment/A.sol/A.json +0 -128
  479. package/artifacts/contracts/experiment/A.sol/AShared.dbg.json +0 -4
  480. package/artifacts/contracts/experiment/A.sol/AShared.json +0 -42
  481. package/artifacts/contracts/experiment/B.sol/B.dbg.json +0 -4
  482. package/artifacts/contracts/experiment/B.sol/B.json +0 -76
  483. package/artifacts/contracts/experiment/C.sol/C.dbg.json +0 -4
  484. package/artifacts/contracts/experiment/C.sol/C.json +0 -89
  485. package/artifacts/contracts/experiment/IA.sol/IA.dbg.json +0 -4
  486. package/artifacts/contracts/experiment/IA.sol/IA.json +0 -128
  487. package/artifacts/contracts/experiment/IA.sol/ISharedA.dbg.json +0 -4
  488. package/artifacts/contracts/experiment/IA.sol/ISharedA.json +0 -37
  489. package/artifacts/contracts/experiment/IB.sol/IB.dbg.json +0 -4
  490. package/artifacts/contracts/experiment/IB.sol/IB.json +0 -50
  491. package/artifacts/contracts/experiment/IC.sol/IC.dbg.json +0 -4
  492. package/artifacts/contracts/experiment/IC.sol/IC.json +0 -63
  493. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  494. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  495. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  496. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  497. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  498. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  499. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  500. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  501. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  502. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
  503. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  504. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -105
  505. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  506. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  507. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  508. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  509. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  510. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  511. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  512. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  513. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  514. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  515. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  516. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  517. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  518. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  519. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  520. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  521. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  522. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  523. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -162
  524. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  525. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  526. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  527. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  528. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  529. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  530. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  531. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -125
  532. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  533. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  534. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  535. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  536. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  537. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  538. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  539. package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
  540. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  541. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  542. package/contracts/components/Component.sol +0 -62
  543. package/contracts/components/IPool.sol +0 -9
  544. package/contracts/components/IProduct.sol +0 -11
  545. package/contracts/components/Pool.sol +0 -29
  546. package/contracts/components/Product.sol +0 -65
  547. package/contracts/experiment/A.sol +0 -56
  548. package/contracts/experiment/B.sol +0 -23
  549. package/contracts/experiment/C.sol +0 -28
  550. package/contracts/experiment/IA.sol +0 -18
  551. package/contracts/experiment/IB.sol +0 -9
  552. package/contracts/experiment/IC.sol +0 -11
  553. package/contracts/instance/access/Access.sol +0 -218
  554. package/contracts/instance/access/IAccess.sol +0 -83
  555. package/contracts/instance/component/ComponentModule.sol +0 -259
  556. package/contracts/instance/component/IComponent.sol +0 -94
  557. package/contracts/instance/policy/IPolicy.sol +0 -66
  558. package/contracts/instance/policy/PolicyModule.sol +0 -106
  559. package/contracts/instance/pool/IPoolModule.sol +0 -40
  560. package/contracts/instance/pool/PoolModule.sol +0 -83
  561. package/contracts/instance/product/IProductService.sol +0 -45
  562. package/contracts/instance/product/ProductService.sol +0 -105
@@ -1,197 +1,576 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
+
7
+ import {InitializableCustom} from "../shared/InitializableCustom.sol";
8
+
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";
12
+
13
+ import {ChainNft} from "./ChainNft.sol";
14
+ import {IRegistry} from "./IRegistry.sol";
15
+ import {IRegisterable} from "../shared/IRegisterable.sol";
16
+ import {ReleaseRegistry} from "./ReleaseRegistry.sol";
17
+ import {TokenRegistry} from "./TokenRegistry.sol";
18
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
19
+
20
+ // IMPORTANT
21
+ // Each NFT minted by registry is accosiated with:
22
+ // 1) NFT owner
23
+ // 2) registred contract OR object stored in registered (parent) contract
24
+ // Four registration flows:
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)
29
+
30
+ /// @title Chain Registry contract implementing IRegistry.
31
+ /// @notice See IRegistry for method details.
32
+ contract Registry is
33
+ InitializableCustom,
34
+ IRegistry
35
+ {
36
+ address public NFT_LOCK_ADDRESS = address(0x1);
37
+ uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
38
+ uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
39
+ string public constant EMPTY_URI = "";
40
+
41
+ mapping(NftId nftId => ObjectInfo info) private _info;
42
+ mapping(address object => NftId nftId) private _nftIdByAddress;
43
+
44
+ mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
45
+
46
+ mapping(ObjectType objectType => bool) private _coreTypes;
47
+
48
+ mapping(ObjectType objectType => mapping(
49
+ ObjectType parentType => bool)) private _coreContractCombinations;
50
+
51
+ mapping(ObjectType objectType => mapping(
52
+ ObjectType parentType => bool)) private _coreObjectCombinations;
53
+
54
+ RegistryAdmin public immutable _admin;
55
+ ChainNft public immutable _chainNft;
3
56
 
4
- import {IRegistry, IRegistryLinked, IRegisterable} from "./IRegistry.sol";
57
+ NftId public immutable _protocolNftId;
58
+ NftId public immutable _registryNftId;
59
+ NftId public _stakingNftId;
5
60
 
6
- contract RegistryLinked is IRegistryLinked {
61
+ address public _tokenRegistryAddress;
62
+ address public _stakingAddress;
63
+ ReleaseRegistry public _releaseRegistry;
7
64
 
8
- IRegistry internal _registry;
9
-
10
- constructor(address registry) {
11
- _registry = IRegistry(registry);
65
+ // TODO
66
+ // 1). Registry and ReleaseRegistry must be treated as whole single entity.
67
+ // But current limitations of EVM does not allow it -> require it to be splitted
68
+ // 2). Keep onlyReleaseRegistry modifier
69
+ // 3). Delete onlyRegistryService in favor of restricted
70
+ // 4). (For GlobalRegistry ONLY) make registerChainRegistry() restricted to GIF_ADMIN_ROLE
71
+ modifier onlyRegistryService() {
72
+ if(!_releaseRegistry.isActiveRegistryService(msg.sender)) {
73
+ revert ErrorRegistryCallerNotRegistryService();
74
+ }
75
+ _;
12
76
  }
13
77
 
14
- // function setRegistry(address registry) public override {
15
- // require(address(_registry) == address(0), "ERROR:RGL-001:REGISTRY_ALREADY_SET");
16
- // _registry = IRegistry(registry);
17
- // }
18
78
 
19
- function getRegistry() external view override returns(IRegistry registry) {
20
- return _registry;
79
+ modifier onlyReleaseRegistry() {
80
+ if(msg.sender != address(_releaseRegistry)) {
81
+ revert ErrorRegistryCallerNotReleaseRegistry();
82
+ }
83
+ _;
21
84
  }
22
85
 
23
- }
86
+ /// @dev Creates the registry contract and populates it with the protocol and registry objects.
87
+ /// Internally deploys the ChainNft contract.
88
+ constructor(RegistryAdmin admin)
89
+ InitializableCustom()
90
+ {
91
+ _admin = admin;
92
+ // deploy NFT
93
+ _chainNft = new ChainNft(address(this));
24
94
 
95
+ // initial registry setup
96
+ _protocolNftId = _registerProtocol();
97
+ _registryNftId = _registerRegistry();
25
98
 
26
- abstract contract Registerable is
27
- RegistryLinked,
28
- IRegisterable
29
- {
99
+ // set object types and object parent relations
100
+ _setupValidCoreTypesAndCombinations();
101
+ }
30
102
 
31
- address private _initialOwner;
32
-
33
- constructor(address registry)
34
- RegistryLinked(registry)
103
+
104
+ /// @dev Wires release registry and token to registry (this contract).
105
+ /// MUST be called by release registry.
106
+ function initialize(
107
+ address releaseRegistry,
108
+ address tokenRegistry,
109
+ address staking
110
+ )
111
+ external
112
+ initializer()
35
113
  {
36
- _initialOwner = msg.sender;
114
+ _releaseRegistry = ReleaseRegistry(releaseRegistry);
115
+ _tokenRegistryAddress = tokenRegistry;
116
+ _stakingAddress = staking;
117
+
118
+ _stakingNftId = _registerStaking();
37
119
  }
38
120
 
39
- // getType, getData and register need to be implemented by concrete contract
121
+ /// @inheritdoc IRegistry
122
+ function register(ObjectInfo memory info)
123
+ external
124
+ onlyRegistryService
125
+ returns(NftId nftId)
126
+ {
127
+ ObjectType objectType = info.objectType;
128
+ ObjectType parentType = _info[info.parentNftId].objectType;
129
+
130
+ // check type combinations for core objects
131
+ if(info.objectAddress == address(0)) {
132
+ if(_coreObjectCombinations[objectType][parentType] == false) {
133
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
134
+ }
135
+ }
136
+ // check type combinations for contract objects
137
+ else {
138
+ if(_coreContractCombinations[objectType][parentType] == false) {
139
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
140
+ }
141
+ }
40
142
 
41
- function isRegisterable() external pure override returns(bool) {
42
- return true;
143
+ nftId = _register(info);
43
144
  }
44
145
 
45
- function getInitialOwner() public view override returns(address deployer) {
46
- return _initialOwner;
146
+
147
+ /// @inheritdoc IRegistry
148
+ function registerService(
149
+ ObjectInfo memory info,
150
+ VersionPart version,
151
+ ObjectType domain
152
+ )
153
+ external
154
+ onlyReleaseRegistry
155
+ returns(NftId nftId)
156
+ {
157
+ // check service address is defined
158
+ address service = info.objectAddress;
159
+ if(service == address(0)) {
160
+ revert ErrorRegistryServiceAddressZero();
161
+ }
162
+
163
+ // check version is defined
164
+ if(version.eqz()) {
165
+ revert ErrorRegistryServiceVersionZero();
166
+ }
167
+
168
+ // check domain is defined
169
+ if(domain.eqz()) {
170
+ revert ErrorRegistryDomainZero(service);
171
+ }
172
+
173
+ // check contract has not already been registered
174
+ if(_service[version][domain] != address(0)) {
175
+ revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
176
+ }
177
+
178
+ // check service has proper type
179
+ if(info.objectType != SERVICE()) {
180
+ revert ErrorRegistryNotService(service, info.objectType);
181
+ }
182
+
183
+ // check that parent has registry type
184
+ if(info.parentNftId != _registryNftId) {
185
+ revert ErrorRegistryServiceParentNotRegistry(info.parentNftId);
186
+ }
187
+
188
+ _service[version][domain] = service;
189
+ nftId = _register(info);
190
+
191
+ emit LogServiceRegistration(version, domain);
47
192
  }
48
193
 
49
- function isRegistered() public view override returns(bool) {
50
- return _registry.getNftId(address(this)) > 0;
194
+
195
+ /// @inheritdoc IRegistry
196
+ function registerWithCustomType(ObjectInfo memory info)
197
+ external
198
+ onlyRegistryService
199
+ returns(NftId nftId)
200
+ {
201
+ ObjectType objectType = info.objectType;
202
+ ObjectType parentType = _info[info.parentNftId].objectType;
203
+
204
+ if(_coreTypes[objectType]) {
205
+ revert ErrorRegistryCoreTypeRegistration();
206
+ }
207
+
208
+ if(
209
+ parentType == PROTOCOL() ||
210
+ parentType == SERVICE()
211
+ ) {
212
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
213
+ }
214
+
215
+ _register(info);
51
216
  }
52
217
 
53
- function getNftId() public view override returns(uint256 id) {
54
- return _registry.getNftId(address(this));
218
+
219
+ /// @dev earliest GIF major version
220
+ function getInitialVersion() external view returns (VersionPart) {
221
+ return _releaseRegistry.getInitialVersion();
55
222
  }
56
223
 
57
- function getOwner() public view override returns(address owner) {
58
- uint256 id = _registry.getNftId(address(this));
59
- owner = _registry.getOwner(id);
60
- return owner != address(0) ? owner : _initialOwner;
224
+ /// @dev next GIF release version to be released
225
+ function getNextVersion() external view returns (VersionPart) {
226
+ return _releaseRegistry.getNextVersion();
61
227
  }
62
228
 
63
- }
229
+ /// @dev latest active GIF release version
230
+ function getLatestVersion() external view returns (VersionPart) {
231
+ return _releaseRegistry.getLatestVersion();
232
+ }
64
233
 
65
- // struct RegistryInfo {
66
- // bytes32 id;
67
- // uint256 objectType;
68
- // address objectAddress;
69
- // address initialOwner;
70
- // }
234
+ function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
235
+ return _releaseRegistry.getReleaseInfo(version);
236
+ }
71
237
 
72
- contract Registry is IRegistry {
238
+ function getObjectCount() external view returns (uint256) {
239
+ return _chainNft.totalSupply();
240
+ }
73
241
 
74
- mapping(uint256 id => RegistryInfo info) private _info;
75
- mapping(uint256 id => address owner) private _owner;
76
- mapping(address object => uint256 id) private _idByAddress;
77
- uint256 [] private _ids;
78
- uint256 private _idNext;
242
+ function getNftId() external view returns (NftId nftId) {
243
+ return _registryNftId;
244
+ }
79
245
 
246
+ function getProtocolNftId() external view returns (NftId nftId) {
247
+ return _protocolNftId;
248
+ }
80
249
 
81
- constructor() {
82
- _idNext = 0;
250
+ function getNftId(address object) external view returns (NftId id) {
251
+ return _nftIdByAddress[object];
83
252
  }
84
253
 
85
- function TOKEN() public pure override returns(uint256) { return 30; }
86
- function INSTANCE() public pure override returns(uint256) { return 40; }
87
- function PRODUCT() public pure override returns(uint256) { return 50; }
88
- function ORACLE() public pure override returns(uint256) { return 60; }
89
- function POOL() public pure override returns(uint256) { return 70; }
90
- function POLICY() public pure override returns(uint256) { return 80; }
91
- function BUNDLE() public pure override returns(uint256) { return 90; }
254
+ function ownerOf(NftId nftId) public view returns (address) {
255
+ return _chainNft.ownerOf(nftId.toInt());
256
+ }
92
257
 
93
- function register(address objectAddress) external override returns(uint256 nftId) {
94
- require(_idByAddress[objectAddress] == 0, "ERROR:REG-001:ALREADY_REGISTERED");
258
+ function ownerOf(address contractAddress) public view returns (address) {
259
+ return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
260
+ }
95
261
 
96
- IRegisterable registerable = IRegisterable(objectAddress);
97
- require(registerable.isRegisterable(), "ERROR:REG-002:NOT_REGISTERABLE");
262
+ function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
263
+ return _info[nftId];
264
+ }
98
265
 
99
- // check parent exists (for objects not instances)
100
- if(registerable.getType() != INSTANCE()) {
101
- RegistryInfo memory parentInfo = _info[registerable.getParentNftId()];
102
- require(parentInfo.nftId > 0, "ERROR:REG-003:PARENT_NOT_FOUND");
103
- // check validity of parent relation, valid relations are
104
- // policy -> product, bundle -> pool, product -> instance, pool -> instance
105
- }
266
+ function getObjectInfo(address object) external view returns (ObjectInfo memory) {
267
+ return _info[_nftIdByAddress[object]];
268
+ }
106
269
 
107
- nftId = _mint(registerable.getInitialOwner());
108
-
109
- RegistryInfo memory info = RegistryInfo(
110
- nftId,
111
- registerable.getParentNftId(),
112
- registerable.getType(),
113
- objectAddress,
114
- registerable.getInitialOwner()
115
- );
270
+ function isRegistered(NftId nftId) public view returns (bool) {
271
+ return _info[nftId].objectType.gtz();
272
+ }
116
273
 
117
- _info[nftId] = info;
118
- _idByAddress[objectAddress] = nftId;
274
+ function isRegistered(address object) external view returns (bool) {
275
+ return _nftIdByAddress[object].gtz();
276
+ }
119
277
 
120
- // add logging
278
+ function isRegisteredService(address object) external view returns (bool) {
279
+ return _info[_nftIdByAddress[object]].objectType == SERVICE();
121
280
  }
122
281
 
282
+ function isRegisteredComponent(address object) external view returns (bool) {
283
+ NftId objectParentNftId = _info[_nftIdByAddress[object]].parentNftId;
284
+ return _info[objectParentNftId].objectType == INSTANCE();
285
+ }
123
286
 
124
- function registerObjectForInstance(
125
- uint256 parentNftId,
126
- uint256 objectType,
127
- address initialOwner
128
- )
129
- external
130
- override
131
- // TODO add onlyRegisteredInstance
132
- returns(uint256 nftId)
287
+ function isActiveRelease(VersionPart version) external view returns (bool)
133
288
  {
134
- // TODO add more validation
135
- require(
136
- objectType == POLICY() || objectType == BUNDLE(),
137
- "ERROR:REG-005:TYPE_INVALID");
289
+ return _releaseRegistry.isActiveRelease(version);
290
+ }
138
291
 
139
- nftId = _mint(initialOwner);
292
+ function getStakingAddress() external view returns (address staking) {
293
+ //return getObjectInfo(_stakingNftId).objectAddress;
294
+ //return _info[_stakingNftId].objectAddress;
295
+ return _stakingAddress;
296
+ }
140
297
 
141
- RegistryInfo memory info = RegistryInfo(
142
- nftId,
143
- parentNftId,
144
- objectType,
145
- address(0),
146
- initialOwner
147
- );
298
+ function getTokenRegistryAddress() external view returns (address tokenRegistry) {
299
+ return _tokenRegistryAddress;
300
+ }
148
301
 
149
- _info[nftId] = info;
302
+ function getServiceAddress(
303
+ ObjectType serviceDomain,
304
+ VersionPart releaseVersion
305
+ ) external view returns (address service)
306
+ {
307
+ service = _service[releaseVersion][serviceDomain];
308
+ }
309
+
310
+ function getReleaseRegistryAddress() external view returns (address) {
311
+ return address(_releaseRegistry);
312
+ }
150
313
 
151
- // add logging
314
+ function getChainNftAddress() external view override returns (address) {
315
+ return address(_chainNft);
152
316
  }
153
317
 
318
+ function getRegistryAdminAddress() external view returns (address) {
319
+ return address(_admin);
320
+ }
154
321
 
155
- function transfer(uint256 id, address newOwner) external {
156
- require(msg.sender == _owner[id], "ERROR:REG-010:NOT_OWNER");
157
- _owner[id] = newOwner;
322
+ function getAuthority() external view returns (address) {
323
+ return _admin.authority();
324
+ }
158
325
 
159
- // TODO logging
326
+ function getOwner() public view returns (address owner) {
327
+ return ownerOf(address(this));
160
328
  }
161
329
 
330
+ // IERC165
162
331
 
163
- function getObjectCount() external view returns(uint256) {
164
- return _ids.length;
332
+ function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
333
+ if(interfaceId == type(IERC165).interfaceId || interfaceId == type(IRegistry).interfaceId) {
334
+ return true;
335
+ }
336
+
337
+ return false;
165
338
  }
166
339
 
340
+ // Internals
341
+
342
+ /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
343
+ function _register(ObjectInfo memory info)
344
+ internal
345
+ returns(NftId nftId)
346
+ {
347
+ ObjectType objectType = info.objectType;
348
+ bool isInterceptor = info.isInterceptor;
349
+ address objectAddress = info.objectAddress;
350
+ address owner = info.initialOwner;
351
+
352
+ NftId parentNftId = info.parentNftId;
353
+ ObjectInfo memory parentInfo = _info[parentNftId];
354
+ ObjectType parentType = parentInfo.objectType; // see function header
355
+ address parentAddress = parentInfo.objectAddress;
356
+
357
+ // parent is contract -> need to check? -> check before minting
358
+ // special case: staking: to protocol possible as well
359
+ // special case: global registry nft as parent when not on mainnet -> global registry address is 0
360
+ // special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
361
+ // special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
362
+ if(objectType != STAKE()) {
363
+ if(parentAddress == address(0)) {
364
+ revert ErrorRegistryParentAddressZero();
365
+ }
366
+ }
367
+
368
+ address interceptorAddress = _getInterceptor(
369
+ isInterceptor,
370
+ objectType,
371
+ objectAddress,
372
+ parentInfo.isInterceptor,
373
+ parentAddress);
374
+
375
+ uint256 tokenId = _chainNft.getNextTokenId();
376
+ nftId = NftIdLib.toNftId(tokenId);
377
+ info.nftId = nftId;
378
+ _info[nftId] = info;
379
+
380
+ if(objectAddress > address(0)) {
381
+ if(_nftIdByAddress[objectAddress].gtz()) {
382
+ revert ErrorRegistryContractAlreadyRegistered(objectAddress);
383
+ }
167
384
 
168
- function getNftId(address object) external view override returns(uint256 id) {
169
- return _idByAddress[object];
385
+ _nftIdByAddress[objectAddress] = nftId;
386
+ }
387
+
388
+ emit LogRegistration(nftId, parentNftId, objectType, isInterceptor, objectAddress, owner);
389
+
390
+ // calls nft receiver(1) and interceptor(2)
391
+ uint256 mintedTokenId = _chainNft.mint(
392
+ owner,
393
+ interceptorAddress,
394
+ EMPTY_URI);
395
+
396
+ assert(mintedTokenId == tokenId);
170
397
  }
171
398
 
399
+ /// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
400
+ /// special case: STAKES (parent may be any type) -> no intercept call
401
+ /// default case:
402
+ function _getInterceptor(
403
+ bool isInterceptor,
404
+ ObjectType objectType,
405
+ address objectAddress,
406
+ bool parentIsInterceptor,
407
+ address parentObjectAddress
408
+ )
409
+ internal
410
+ pure
411
+ returns (address interceptor)
412
+ {
413
+ // no intercepting calls for stakes
414
+ if (objectType == STAKE()) {
415
+ return address(0);
416
+ }
172
417
 
173
- function isRegistered(address object) external view override returns(bool) {
174
- return _idByAddress[object] > 0;
418
+ if (objectAddress == address(0)) {
419
+ if (parentIsInterceptor) {
420
+ return parentObjectAddress;
421
+ } else {
422
+ return address(0);
423
+ }
424
+ }
425
+
426
+ if (isInterceptor) {
427
+ return objectAddress;
428
+ }
429
+
430
+ return address(0);
175
431
  }
176
432
 
433
+ // Internals called only in constructor
177
434
 
178
- function getInfo(uint256 id) external view override returns(RegistryInfo memory info) {
179
- return _info[id];
435
+ /// @dev protocol registration used to anchor the dip ecosystem relations
436
+ function _registerProtocol()
437
+ private
438
+ returns (NftId protocolNftId)
439
+ {
440
+ uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
441
+ protocolNftId = NftIdLib.toNftId(protocolId);
442
+
443
+ _info[protocolNftId] = ObjectInfo({
444
+ nftId: protocolNftId,
445
+ parentNftId: NftIdLib.zero(),
446
+ objectType: PROTOCOL(),
447
+ isInterceptor: false,
448
+ objectAddress: address(0),
449
+ initialOwner: NFT_LOCK_ADDRESS,
450
+ data: ""
451
+ });
452
+
453
+ _chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
180
454
  }
181
455
 
182
- function getOwner(uint256 id) external view override returns(address) {
183
- return _owner[id];
456
+ /// @dev registry registration
457
+ /// might also register the global registry when not on mainnet
458
+ function _registerRegistry()
459
+ private
460
+ returns (NftId registryNftId)
461
+ {
462
+ uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
463
+ registryNftId = NftIdLib.toNftId(registryId);
464
+ NftId parentNftId;
465
+
466
+ if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
467
+ {// we're not the global registry
468
+ _registerGlobalRegistry();
469
+ parentNftId = NftIdLib.toNftId(_chainNft.GLOBAL_REGISTRY_ID());
470
+ }
471
+ else
472
+ {// we are global registry
473
+ parentNftId = _protocolNftId;
474
+ }
475
+
476
+ _info[registryNftId] = ObjectInfo({
477
+ nftId: registryNftId,
478
+ parentNftId: parentNftId,
479
+ objectType: REGISTRY(),
480
+ isInterceptor: false,
481
+ objectAddress: address(this),
482
+ initialOwner: NFT_LOCK_ADDRESS,
483
+ data: ""
484
+ });
485
+
486
+ _nftIdByAddress[address(this)] = registryNftId;
487
+ _chainNft.mint(NFT_LOCK_ADDRESS, registryId);
184
488
  }
185
489
 
490
+ /// @dev global registry registration for non mainnet registries
491
+ function _registerGlobalRegistry()
492
+ private
493
+ {
494
+ uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
495
+ NftId globalRegistryNftId = NftIdLib.toNftId(globalRegistryId);
496
+
497
+ _info[globalRegistryNftId] = ObjectInfo({
498
+ nftId: globalRegistryNftId,
499
+ parentNftId: NftIdLib.toNftId(_chainNft.PROTOCOL_NFT_ID()),
500
+ objectType: REGISTRY(),
501
+ isInterceptor: false,
502
+ objectAddress: address(0),
503
+ initialOwner: NFT_LOCK_ADDRESS,
504
+ data: ""
505
+ });
506
+
507
+ _chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
508
+ }
509
+ // depends on _registryNftId and _stakingAddress
510
+ function _registerStaking()
511
+ private
512
+ returns (NftId stakingNftId)
513
+ {
514
+ address stakingOwner = IRegisterable(_stakingAddress).getOwner();
515
+ uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
516
+ stakingNftId = NftIdLib.toNftId(stakingId);
517
+
518
+ _info[stakingNftId] = ObjectInfo({
519
+ nftId: stakingNftId,
520
+ parentNftId: _registryNftId,
521
+ objectType: STAKING(),
522
+ isInterceptor: false,
523
+ objectAddress: _stakingAddress,
524
+ initialOwner: stakingOwner,
525
+ data: ""
526
+ });
527
+
528
+ _nftIdByAddress[_stakingAddress] = stakingNftId;
529
+
530
+ // reverts if nftId was already minted
531
+ _chainNft.mint(stakingOwner, stakingId);
532
+ }
186
533
 
187
- function _mint(address initialOwner)
188
- internal
189
- returns(uint256 id)
534
+ /// @dev defines which object - parent types relations are allowed to register
535
+ /// EACH object type MUST have only one parent type across ALL mappings
536
+ function _setupValidCoreTypesAndCombinations()
537
+ private
190
538
  {
191
- _idNext++;
539
+ _coreTypes[REGISTRY()] = true;
540
+ _coreTypes[SERVICE()] = true;
541
+ _coreTypes[INSTANCE()] = true;
542
+ _coreTypes[PRODUCT()] = true;
543
+ _coreTypes[POOL()] = true;
544
+ _coreTypes[DISTRIBUTION()] = true;
545
+ _coreTypes[DISTRIBUTOR()] = true;
546
+ _coreTypes[ORACLE()] = true;
547
+ _coreTypes[POLICY()] = true;
548
+ _coreTypes[BUNDLE()] = true;
549
+ _coreTypes[STAKING()] = true;
550
+ _coreTypes[STAKE()] = true;
551
+
552
+ // only global registry allowed to register registry (after initialization)
553
+ if(block.chainid == 1) {
554
+ _coreContractCombinations[REGISTRY()][REGISTRY()] = true;
555
+ }
556
+
557
+ // contracts with registry parent
558
+ _coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
559
+ _coreContractCombinations[INSTANCE()][REGISTRY()] = true;
560
+
561
+ // components with instance parent
562
+ _coreContractCombinations[PRODUCT()][INSTANCE()] = true;
563
+ _coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
564
+ _coreContractCombinations[ORACLE()][INSTANCE()] = true;
565
+ _coreContractCombinations[POOL()][INSTANCE()] = true;
566
+
567
+ // objects with coponent parents
568
+ _coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
569
+ _coreObjectCombinations[POLICY()][PRODUCT()] = true;
570
+ _coreObjectCombinations[BUNDLE()][POOL()] = true;
192
571
 
193
- id = _idNext;
194
- _owner[id] = initialOwner;
195
- _ids.push(id);
572
+ // staking
573
+ _coreObjectCombinations[STAKE()][PROTOCOL()] = true;
574
+ _coreObjectCombinations[STAKE()][INSTANCE()] = true;
196
575
  }
197
576
  }