@etherisc/gif-next 0.0.2-e5ea33d → 0.0.2-e63124b-662

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 (585) hide show
  1. package/README.md +376 -20
  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 +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/distribution/IDistributionComponent.sol/IDistributionComponent.json +900 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +843 -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 +289 -529
  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 +446 -609
  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 +1735 -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 +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/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 +1155 -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 +772 -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 +1063 -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 +1477 -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 +1134 -0
  102. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  104. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +703 -0
  106. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  107. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +959 -0
  108. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  110. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  111. package/artifacts/contracts/pool/Pool.sol/Pool.json +1269 -0
  112. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  113. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  114. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  116. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  117. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  118. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  119. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  120. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  121. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -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 +1315 -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 +512 -0
  130. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  131. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  132. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  133. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -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 +966 -0
  138. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  139. package/artifacts/contracts/product/IProductService.sol/IProductService.json +400 -0
  140. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  142. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  144. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  145. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -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 +1257 -0
  150. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  151. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  152. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  154. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  155. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +252 -2
  156. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +733 -102
  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 +1031 -120
  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 +896 -0
  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/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
  186. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  187. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  188. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  189. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  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/shared/IKeyValueStore.sol/IKeyValueStore.json +474 -0
  196. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  197. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +110 -0
  198. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  199. package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +42 -77
  200. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  201. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  202. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  203. package/artifacts/contracts/{instance/pool/PoolModule.sol/PoolModule.json → shared/IRegisterable.sol/IRegisterable.json} +98 -79
  204. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  205. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +11 -11
  206. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  207. package/artifacts/contracts/shared/IService.sol/IService.json +346 -0
  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/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 +150 -0
  230. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  231. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  232. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  233. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  234. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  236. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  237. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  238. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  240. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  242. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  244. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  246. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  248. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  249. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  250. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  251. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  252. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  253. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  254. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  256. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  258. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  260. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  262. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  264. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  266. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  268. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  269. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  270. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  272. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  274. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  276. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  278. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  280. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  282. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  284. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  286. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  288. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +92 -0
  290. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  292. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  294. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
  296. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +498 -0
  298. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  300. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  302. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  303. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  304. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  305. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  306. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  307. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  308. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  309. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  310. package/contracts/authorization/AccessAdmin.sol +591 -0
  311. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  312. package/contracts/authorization/Authorization.sol +218 -0
  313. package/contracts/authorization/IAccess.sol +48 -0
  314. package/contracts/authorization/IAccessAdmin.sol +136 -0
  315. package/contracts/authorization/IAuthorization.sol +54 -0
  316. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  317. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  318. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  319. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  320. package/contracts/distribution/BasicDistribution.sol +149 -0
  321. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  322. package/contracts/distribution/Distribution.sol +283 -0
  323. package/contracts/distribution/DistributionService.sol +288 -0
  324. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  325. package/contracts/distribution/IDistributionComponent.sol +48 -0
  326. package/contracts/distribution/IDistributionService.sol +85 -0
  327. package/contracts/instance/BundleSet.sol +126 -0
  328. package/contracts/instance/IInstance.sol +85 -17
  329. package/contracts/instance/IInstanceService.sol +92 -0
  330. package/contracts/instance/Instance.sol +246 -56
  331. package/contracts/instance/InstanceAdmin.sol +266 -0
  332. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  333. package/contracts/instance/InstanceReader.sol +405 -0
  334. package/contracts/instance/InstanceService.sol +443 -0
  335. package/contracts/instance/InstanceServiceManager.sol +40 -0
  336. package/contracts/instance/InstanceStore.sol +276 -0
  337. package/contracts/instance/base/BalanceStore.sol +123 -0
  338. package/contracts/instance/base/Cloneable.sol +28 -0
  339. package/contracts/instance/base/ObjectCounter.sol +21 -0
  340. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  341. package/contracts/instance/base/ObjectSet.sol +79 -0
  342. package/contracts/instance/module/IAccess.sol +46 -0
  343. package/contracts/instance/module/IBundle.sol +20 -0
  344. package/contracts/instance/module/IComponents.sol +52 -0
  345. package/contracts/instance/module/IDistribution.sol +42 -0
  346. package/contracts/instance/module/IPolicy.sol +84 -0
  347. package/contracts/instance/module/IRisk.sol +11 -0
  348. package/contracts/mock/Dip.sol +26 -0
  349. package/contracts/oracle/BasicOracle.sol +48 -0
  350. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  351. package/contracts/oracle/IOracle.sol +36 -0
  352. package/contracts/oracle/IOracleComponent.sol +32 -0
  353. package/contracts/oracle/IOracleService.sol +65 -0
  354. package/contracts/oracle/Oracle.sol +157 -0
  355. package/contracts/oracle/OracleService.sol +278 -0
  356. package/contracts/oracle/OracleServiceManager.sol +39 -0
  357. package/contracts/pool/BasicPool.sol +164 -0
  358. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  359. package/contracts/pool/BundleService.sol +284 -0
  360. package/contracts/pool/BundleServiceManager.sol +39 -0
  361. package/contracts/pool/IBundleService.sol +106 -0
  362. package/contracts/pool/IPoolComponent.sol +52 -0
  363. package/contracts/pool/IPoolService.sol +150 -0
  364. package/contracts/pool/Pool.sol +311 -0
  365. package/contracts/pool/PoolService.sol +436 -0
  366. package/contracts/pool/PoolServiceManager.sol +39 -0
  367. package/contracts/product/ApplicationService.sol +230 -0
  368. package/contracts/product/ApplicationServiceManager.sol +38 -0
  369. package/contracts/product/BasicProduct.sol +82 -0
  370. package/contracts/product/BasicProductAuthorization.sol +40 -0
  371. package/contracts/product/ClaimService.sol +416 -0
  372. package/contracts/product/ClaimServiceManager.sol +38 -0
  373. package/contracts/product/IApplicationService.sol +62 -0
  374. package/contracts/product/IClaimService.sol +99 -0
  375. package/contracts/product/IPolicyService.sol +78 -0
  376. package/contracts/product/IPricingService.sol +39 -0
  377. package/contracts/product/IProductComponent.sol +39 -0
  378. package/contracts/product/IProductService.sol +33 -0
  379. package/contracts/product/PolicyService.sol +475 -0
  380. package/contracts/product/PolicyServiceManager.sol +39 -0
  381. package/contracts/product/PricingService.sol +300 -0
  382. package/contracts/product/PricingServiceManager.sol +39 -0
  383. package/contracts/product/Product.sol +392 -0
  384. package/contracts/product/ProductService.sol +99 -0
  385. package/contracts/product/ProductServiceManager.sol +39 -0
  386. package/contracts/registry/ChainNft.sol +144 -62
  387. package/contracts/registry/IRegistry.sol +105 -51
  388. package/contracts/registry/IRegistryService.sol +69 -0
  389. package/contracts/registry/ITransferInterceptor.sol +7 -0
  390. package/contracts/registry/Registry.sol +509 -142
  391. package/contracts/registry/RegistryAdmin.sol +365 -0
  392. package/contracts/registry/RegistryService.sol +252 -0
  393. package/contracts/registry/RegistryServiceManager.sol +53 -0
  394. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  395. package/contracts/registry/ReleaseRegistry.sol +487 -0
  396. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  397. package/contracts/registry/TokenRegistry.sol +315 -0
  398. package/contracts/shared/Component.sol +281 -0
  399. package/contracts/shared/ComponentService.sol +581 -0
  400. package/contracts/shared/ComponentServiceManager.sol +35 -0
  401. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  402. package/contracts/shared/ERC165.sol +27 -0
  403. package/contracts/shared/IComponent.sol +70 -0
  404. package/contracts/shared/IComponentService.sol +102 -0
  405. package/contracts/shared/IInstanceLinkedComponent.sol +50 -0
  406. package/contracts/shared/IKeyValueStore.sol +54 -0
  407. package/contracts/shared/ILifecycle.sol +29 -0
  408. package/contracts/shared/INftOwnable.sol +23 -0
  409. package/contracts/shared/IPolicyHolder.sol +45 -0
  410. package/contracts/shared/IRegisterable.sol +15 -0
  411. package/contracts/shared/IRegistryLinked.sol +11 -0
  412. package/contracts/shared/IService.sol +25 -0
  413. package/contracts/shared/InitializableCustom.sol +177 -0
  414. package/contracts/shared/InstanceLinkedComponent.sol +151 -0
  415. package/contracts/shared/KeyValueStore.sol +131 -0
  416. package/contracts/shared/Lifecycle.sol +77 -0
  417. package/contracts/shared/NftIdSet.sol +65 -0
  418. package/contracts/shared/NftOwnable.sol +107 -0
  419. package/contracts/shared/PolicyHolder.sol +102 -0
  420. package/contracts/shared/Registerable.sol +75 -0
  421. package/contracts/shared/RegistryLinked.sol +43 -0
  422. package/contracts/shared/Service.sol +82 -0
  423. package/contracts/shared/TokenHandler.sol +58 -0
  424. package/contracts/staking/IStaking.sol +167 -0
  425. package/contracts/staking/IStakingService.sol +160 -0
  426. package/contracts/staking/StakeManagerLib.sol +231 -0
  427. package/contracts/staking/Staking.sol +510 -0
  428. package/contracts/staking/StakingLifecycle.sol +23 -0
  429. package/contracts/staking/StakingManager.sol +50 -0
  430. package/contracts/staking/StakingReader.sol +183 -0
  431. package/contracts/staking/StakingService.sol +411 -0
  432. package/contracts/staking/StakingServiceManager.sol +44 -0
  433. package/contracts/staking/StakingStore.sol +605 -0
  434. package/contracts/staking/TargetManagerLib.sol +207 -0
  435. package/contracts/type/AddressSet.sol +58 -0
  436. package/contracts/type/Amount.sol +128 -0
  437. package/contracts/{types → type}/Blocknumber.sol +21 -3
  438. package/contracts/type/ClaimId.sol +75 -0
  439. package/contracts/type/DistributorType.sol +55 -0
  440. package/contracts/type/Fee.sol +66 -0
  441. package/contracts/type/Key32.sol +50 -0
  442. package/contracts/type/NftId.sol +78 -0
  443. package/contracts/type/NftIdSet.sol +62 -0
  444. package/contracts/type/ObjectType.sol +271 -0
  445. package/contracts/type/PayoutId.sol +82 -0
  446. package/contracts/type/Referral.sol +89 -0
  447. package/contracts/type/RequestId.sol +75 -0
  448. package/contracts/type/RiskId.sol +43 -0
  449. package/contracts/type/RoleId.sol +174 -0
  450. package/contracts/type/Seconds.sol +81 -0
  451. package/contracts/type/Selector.sol +102 -0
  452. package/contracts/type/StateId.sol +135 -0
  453. package/contracts/type/String.sol +53 -0
  454. package/contracts/{types → type}/Timestamp.sol +41 -7
  455. package/contracts/type/UFixed.sol +332 -0
  456. package/contracts/type/Version.sol +110 -0
  457. package/contracts/upgradeability/IVersionable.sol +53 -0
  458. package/contracts/upgradeability/ProxyManager.sol +198 -0
  459. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +14 -0
  460. package/contracts/upgradeability/Versionable.sol +59 -0
  461. package/package.json +21 -8
  462. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  463. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  464. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  465. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  466. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  467. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  468. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  469. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  470. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  471. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -213
  472. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  473. package/artifacts/contracts/components/Product.sol/Product.json +0 -231
  474. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  475. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  476. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  477. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  478. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  480. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  482. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  484. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  485. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  486. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  487. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  488. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  489. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  490. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  491. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  492. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  493. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  494. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  496. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  498. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  499. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  500. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  501. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  502. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  503. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  504. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  505. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  506. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  507. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
  508. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  509. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  510. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  511. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  512. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  513. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  514. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  515. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  516. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  517. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  518. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  519. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  520. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  521. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  522. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  523. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  524. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  525. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  526. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  527. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  528. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  529. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  530. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  531. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  532. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  533. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  534. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  535. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  536. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  537. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  538. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  539. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  540. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  541. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  542. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  543. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  544. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  545. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  546. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  547. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  548. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  549. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  550. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  551. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  552. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  553. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  554. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -174
  555. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  556. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  557. package/contracts/components/Component.sol +0 -60
  558. package/contracts/components/IPool.sol +0 -9
  559. package/contracts/components/IProduct.sol +0 -9
  560. package/contracts/components/Pool.sol +0 -22
  561. package/contracts/components/Product.sol +0 -55
  562. package/contracts/experiment/errors/Require.sol +0 -38
  563. package/contracts/experiment/errors/Revert.sol +0 -44
  564. package/contracts/experiment/inheritance/A.sol +0 -53
  565. package/contracts/experiment/inheritance/B.sol +0 -28
  566. package/contracts/experiment/inheritance/C.sol +0 -34
  567. package/contracts/experiment/inheritance/IA.sol +0 -13
  568. package/contracts/experiment/inheritance/IB.sol +0 -10
  569. package/contracts/experiment/inheritance/IC.sol +0 -12
  570. package/contracts/experiment/types/TypeA.sol +0 -47
  571. package/contracts/experiment/types/TypeB.sol +0 -29
  572. package/contracts/instance/access/Access.sol +0 -165
  573. package/contracts/instance/access/IAccess.sol +0 -63
  574. package/contracts/instance/component/ComponentModule.sol +0 -213
  575. package/contracts/instance/component/IComponent.sol +0 -73
  576. package/contracts/instance/policy/IPolicy.sol +0 -51
  577. package/contracts/instance/policy/PolicyModule.sol +0 -91
  578. package/contracts/instance/pool/IPoolModule.sol +0 -29
  579. package/contracts/instance/pool/PoolModule.sol +0 -73
  580. package/contracts/instance/product/IProductService.sol +0 -36
  581. package/contracts/instance/product/ProductService.sol +0 -112
  582. package/contracts/registry/IChainNft.sol +0 -21
  583. package/contracts/types/ChainId.sol +0 -38
  584. package/contracts/types/NftId.sol +0 -51
  585. package/contracts/types/UFixed.sol +0 -205
@@ -1,209 +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 {IChainNft} from "./IChainNft.sol";
5
- import {IRegistry, IRegistryLinked, IRegisterable} from "./IRegistry.sol";
6
- import {NftId, toNftId} from "../types/NftId.sol";
7
- import {NftIdLib} from "../types/NftId.sol";
57
+ NftId public immutable _protocolNftId;
58
+ NftId public immutable _registryNftId;
59
+ NftId public _stakingNftId;
8
60
 
9
- contract RegistryLinked is IRegistryLinked {
10
- IRegistry internal _registry;
61
+ address public _tokenRegistryAddress;
62
+ address public _stakingAddress;
63
+ ReleaseRegistry public _releaseRegistry;
11
64
 
12
- constructor(address registry) {
13
- _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
+ _;
14
76
  }
15
77
 
16
- function getRegistry() external view override returns (IRegistry registry) {
17
- return _registry;
78
+
79
+ modifier onlyReleaseRegistry() {
80
+ if(msg.sender != address(_releaseRegistry)) {
81
+ revert ErrorRegistryCallerNotReleaseRegistry();
82
+ }
83
+ _;
18
84
  }
19
- }
20
85
 
21
- abstract contract Registerable is RegistryLinked, IRegisterable {
22
- using NftIdLib for NftId;
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));
23
94
 
24
- address private _initialOwner;
95
+ // initial registry setup
96
+ _protocolNftId = _registerProtocol();
97
+ _registryNftId = _registerRegistry();
25
98
 
26
- constructor(address registry) RegistryLinked(registry) {
27
- _initialOwner = msg.sender;
99
+ // set object types and object parent relations
100
+ _setupValidCoreTypesAndCombinations();
28
101
  }
29
102
 
30
- // getType, getData and register need to be implemented by concrete contract
31
103
 
32
- function isRegisterable() external pure override returns (bool) {
33
- return true;
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()
113
+ {
114
+ _releaseRegistry = ReleaseRegistry(releaseRegistry);
115
+ _tokenRegistryAddress = tokenRegistry;
116
+ _stakingAddress = staking;
117
+
118
+ _stakingNftId = _registerStaking();
34
119
  }
35
120
 
36
- function getInitialOwner() public view override returns (address deployer) {
37
- return _initialOwner;
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
+ }
142
+
143
+ nftId = _register(info);
38
144
  }
39
145
 
40
- function isRegistered() public view override returns (bool) {
41
- NftId nftId = _registry.getNftId(address(this));
42
- return nftId.gtz();
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);
43
192
  }
44
193
 
45
- function getNftId() public view override returns (NftId nftId) {
46
- return _registry.getNftId(address(this));
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);
47
216
  }
48
217
 
49
- function getOwner() public view override returns (address owner) {
50
- NftId id = _registry.getNftId(address(this));
51
- owner = _registry.getOwner(id);
52
- return owner != address(0) ? owner : _initialOwner;
218
+
219
+ /// @dev earliest GIF major version
220
+ function getInitialVersion() external view returns (VersionPart) {
221
+ return _releaseRegistry.getInitialVersion();
53
222
  }
54
- }
55
223
 
56
- contract Registry is IRegistry {
57
- using NftIdLib for NftId;
58
- string public constant EMPTY_URI = "";
224
+ /// @dev next GIF release version to be released
225
+ function getNextVersion() external view returns (VersionPart) {
226
+ return _releaseRegistry.getNextVersion();
227
+ }
59
228
 
60
- mapping(NftId nftId => RegistryInfo info) private _info;
61
- mapping(NftId nftId => address owner) private _owner;
62
- mapping(address object => NftId nftId) private _nftIdByAddress;
229
+ /// @dev latest active GIF release version
230
+ function getLatestVersion() external view returns (VersionPart) {
231
+ return _releaseRegistry.getLatestVersion();
232
+ }
233
+
234
+ function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
235
+ return _releaseRegistry.getReleaseInfo(version);
236
+ }
237
+
238
+ function getObjectCount() external view returns (uint256) {
239
+ return _chainNft.totalSupply();
240
+ }
241
+
242
+ function getNftId() external view returns (NftId nftId) {
243
+ return _registryNftId;
244
+ }
245
+
246
+ function getProtocolNftId() external view returns (NftId nftId) {
247
+ return _protocolNftId;
248
+ }
249
+
250
+ function getNftId(address object) external view returns (NftId id) {
251
+ return _nftIdByAddress[object];
252
+ }
253
+
254
+ function ownerOf(NftId nftId) public view returns (address) {
255
+ return _chainNft.ownerOf(nftId.toInt());
256
+ }
257
+
258
+ function ownerOf(address contractAddress) public view returns (address) {
259
+ return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
260
+ }
261
+
262
+ function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
263
+ return _info[nftId];
264
+ }
265
+
266
+ function getObjectInfo(address object) external view returns (ObjectInfo memory) {
267
+ return _info[_nftIdByAddress[object]];
268
+ }
269
+
270
+ function isRegistered(NftId nftId) public view returns (bool) {
271
+ return _info[nftId].objectType.gtz();
272
+ }
273
+
274
+ function isRegistered(address object) external view returns (bool) {
275
+ return _nftIdByAddress[object].gtz();
276
+ }
63
277
 
64
- IChainNft private _chainNft;
278
+ function isRegisteredService(address object) external view returns (bool) {
279
+ return _info[_nftIdByAddress[object]].objectType == SERVICE();
280
+ }
281
+
282
+ function isRegisteredComponent(address object) external view returns (bool) {
283
+ NftId objectParentNftId = _info[_nftIdByAddress[object]].parentNftId;
284
+ return _info[objectParentNftId].objectType == INSTANCE();
285
+ }
65
286
 
66
- function initialize(address chainNft) external {
67
- require(
68
- address(_chainNft) == address(0),
69
- "ERROR:REG-001:ALREADY_INITIALIZED"
70
- );
71
- _chainNft = IChainNft(chainNft);
287
+ function isActiveRelease(VersionPart version) external view returns (bool)
288
+ {
289
+ return _releaseRegistry.isActiveRelease(version);
72
290
  }
73
291
 
74
- function TOKEN() public pure override returns (uint256) {
75
- return 30;
292
+ function getStakingAddress() external view returns (address staking) {
293
+ //return getObjectInfo(_stakingNftId).objectAddress;
294
+ //return _info[_stakingNftId].objectAddress;
295
+ return _stakingAddress;
76
296
  }
77
297
 
78
- function INSTANCE() public pure override returns (uint256) {
79
- return 40;
298
+ function getTokenRegistryAddress() external view returns (address tokenRegistry) {
299
+ return _tokenRegistryAddress;
80
300
  }
81
301
 
82
- function PRODUCT() public pure override returns (uint256) {
83
- return 50;
302
+ function getServiceAddress(
303
+ ObjectType serviceDomain,
304
+ VersionPart releaseVersion
305
+ ) external view returns (address service)
306
+ {
307
+ service = _service[releaseVersion][serviceDomain];
84
308
  }
85
309
 
86
- function ORACLE() public pure override returns (uint256) {
87
- return 60;
310
+ function getReleaseRegistryAddress() external view returns (address) {
311
+ return address(_releaseRegistry);
88
312
  }
89
313
 
90
- function POOL() public pure override returns (uint256) {
91
- return 70;
314
+ function getChainNftAddress() external view override returns (address) {
315
+ return address(_chainNft);
92
316
  }
93
317
 
94
- function POLICY() public pure override returns (uint256) {
95
- return 80;
318
+ function getRegistryAdminAddress() external view returns (address) {
319
+ return address(_admin);
96
320
  }
97
321
 
98
- function BUNDLE() public pure override returns (uint256) {
99
- return 90;
322
+ function getAuthority() external view returns (address) {
323
+ return _admin.authority();
100
324
  }
101
325
 
102
- function register(
103
- address objectAddress
104
- ) external override returns (NftId nftId) {
105
- require(
106
- _nftIdByAddress[objectAddress].eqz(),
107
- "ERROR:REG-002:ALREADY_REGISTERED"
108
- );
326
+ function getOwner() public view returns (address owner) {
327
+ return ownerOf(address(this));
328
+ }
109
329
 
110
- IRegisterable registerable = IRegisterable(objectAddress);
111
- require(
112
- registerable.isRegisterable(),
113
- "ERROR:REG-003:NOT_REGISTERABLE"
114
- );
330
+ // IERC165
115
331
 
116
- // check parent exists (for objects not instances)
117
- if (registerable.getType() != INSTANCE()) {
118
- RegistryInfo memory parentInfo = _info[
119
- registerable.getParentNftId()
120
- ];
121
- require(parentInfo.nftId.gtz(), "ERROR:REG-004:PARENT_NOT_FOUND");
122
- // check validity of parent relation, valid relations are
123
- // policy -> product, bundle -> pool, product -> instance, pool -> instance
332
+ function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
333
+ if(interfaceId == type(IERC165).interfaceId || interfaceId == type(IRegistry).interfaceId) {
334
+ return true;
124
335
  }
125
336
 
126
- uint256 mintedTokenId = _chainNft.mint(
127
- registerable.getInitialOwner(),
128
- EMPTY_URI
129
- );
130
- nftId = toNftId(mintedTokenId);
131
-
132
- RegistryInfo memory info = RegistryInfo(
133
- nftId,
134
- registerable.getParentNftId(),
135
- registerable.getType(),
136
- objectAddress,
137
- registerable.getInitialOwner()
138
- );
337
+ return false;
338
+ }
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);
139
374
 
375
+ uint256 tokenId = _chainNft.getNextTokenId();
376
+ nftId = NftIdLib.toNftId(tokenId);
377
+ info.nftId = nftId;
140
378
  _info[nftId] = info;
141
- _nftIdByAddress[objectAddress] = nftId;
142
379
 
143
- // add logging
380
+ if(objectAddress > address(0)) {
381
+ if(_nftIdByAddress[objectAddress].gtz()) {
382
+ revert ErrorRegistryContractAlreadyRegistered(objectAddress);
383
+ }
384
+
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);
144
397
  }
145
398
 
146
- function registerObjectForInstance(
147
- NftId parentNftId,
148
- uint256 objectType,
149
- address initialOwner
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
150
408
  )
151
- external
152
- override
153
- returns (
154
- // TODO add onlyRegisteredInstance
155
- NftId nftId
156
- )
409
+ internal
410
+ pure
411
+ returns (address interceptor)
157
412
  {
158
- // TODO add more validation
159
- require(
160
- objectType == POLICY() || objectType == BUNDLE(),
161
- "ERROR:REG-005:TYPE_INVALID"
162
- );
163
-
164
- uint256 mintedTokenId = _chainNft.mint(initialOwner, EMPTY_URI);
165
- nftId = toNftId(mintedTokenId);
166
-
167
- RegistryInfo memory info = RegistryInfo(
168
- nftId,
169
- parentNftId,
170
- objectType,
171
- address(0),
172
- initialOwner
173
- );
413
+ // no intercepting calls for stakes
414
+ if (objectType == STAKE()) {
415
+ return address(0);
416
+ }
174
417
 
175
- _info[nftId] = info;
418
+ if (objectAddress == address(0)) {
419
+ if (parentIsInterceptor) {
420
+ return parentObjectAddress;
421
+ } else {
422
+ return address(0);
423
+ }
424
+ }
176
425
 
177
- // add logging
178
- }
426
+ if (isInterceptor) {
427
+ return objectAddress;
428
+ }
179
429
 
180
- function getObjectCount() external view override returns (uint256) {
181
- return _chainNft.totalSupply();
430
+ return address(0);
182
431
  }
183
432
 
184
- function getNftId(
185
- address object
186
- ) external view override returns (NftId id) {
187
- return _nftIdByAddress[object];
188
- }
433
+ // Internals called only in constructor
189
434
 
190
- function isRegistered(
191
- address object
192
- ) external view override returns (bool) {
193
- return _nftIdByAddress[object].gtz();
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);
194
454
  }
195
455
 
196
- function getInfo(
197
- NftId nftId
198
- ) external view override returns (RegistryInfo memory info) {
199
- return _info[nftId];
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);
200
488
  }
201
489
 
202
- function getOwner(NftId nftId) external view override returns (address) {
203
- return _chainNft.ownerOf(nftId.toInt());
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);
204
532
  }
205
533
 
206
- function getNftAddress() external view override returns (address nft) {
207
- return address(_chainNft);
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
538
+ {
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;
571
+
572
+ // staking
573
+ _coreObjectCombinations[STAKE()][PROTOCOL()] = true;
574
+ _coreObjectCombinations[STAKE()][INSTANCE()] = true;
208
575
  }
209
576
  }