@etherisc/gif-next 0.0.2-bd7444a → 0.0.2-bdb55c6-577

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 (536) hide show
  1. package/README.md +360 -8
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1349 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +818 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +975 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +814 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +294 -514
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +650 -0
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +490 -585
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1701 -0
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1053 -0
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +734 -0
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3642 -0
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  35. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +190 -0
  36. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  38. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  40. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  41. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  42. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  43. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  44. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  45. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
  46. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  47. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  48. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  49. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  50. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  51. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  52. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  53. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  54. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  55. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +10 -0
  56. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  57. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  58. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +662 -0
  60. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  61. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  62. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  63. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +997 -0
  64. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +718 -0
  66. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  67. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1105 -0
  68. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  69. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +746 -0
  70. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  71. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +690 -0
  72. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  73. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
  74. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  75. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1065 -0
  76. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  77. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  78. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  79. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1432 -0
  80. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +738 -0
  82. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  83. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +834 -0
  84. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
  86. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  87. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1278 -0
  88. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  89. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +810 -0
  90. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  91. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +499 -0
  92. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  93. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +759 -0
  94. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  95. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +707 -0
  96. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  97. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +536 -0
  98. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  99. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
  100. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  101. package/artifacts/contracts/product/IProductService.sol/IProductService.json +387 -0
  102. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  103. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1146 -0
  104. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +754 -0
  106. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  107. package/artifacts/contracts/product/PricingService.sol/PricingService.json +983 -0
  108. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  109. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +778 -0
  110. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  111. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  112. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  113. package/artifacts/contracts/product/ProductService.sol/ProductService.json +679 -0
  114. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +694 -0
  116. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  117. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +252 -2
  118. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +703 -76
  120. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  121. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1110 -0
  122. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  123. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  124. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  125. package/artifacts/contracts/registry/Registry.sol/Registry.json +1008 -125
  126. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  127. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
  128. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  129. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1415 -0
  130. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  131. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +709 -0
  132. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  133. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1292 -0
  134. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
  135. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
  136. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  137. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  138. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  139. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  140. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  141. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  142. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  144. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  145. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
  146. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
  148. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  149. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  150. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  151. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1490 -0
  152. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +792 -0
  154. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  155. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +526 -0
  156. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  157. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  158. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  159. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  160. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  162. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  163. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  164. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  165. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +867 -0
  166. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  167. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  168. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  169. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +468 -0
  170. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  171. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +115 -0
  172. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  173. package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +42 -77
  174. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  175. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  176. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  177. package/artifacts/contracts/{instance/pool/PoolModule.sol/PoolModule.json → shared/IRegisterable.sol/IRegisterable.json} +98 -79
  178. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  179. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +11 -11
  180. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  181. package/artifacts/contracts/shared/IService.sol/IService.json +333 -0
  182. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  183. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
  184. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  185. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  186. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  187. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  188. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  189. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  190. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  191. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  192. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  193. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  194. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  195. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  196. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  197. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  198. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  199. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +617 -0
  200. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  201. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +353 -0
  202. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  203. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  204. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  205. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +260 -218
  206. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  207. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  208. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  209. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  210. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  211. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
  212. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  213. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  214. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  215. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +993 -0
  216. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  217. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +444 -0
  218. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  219. package/artifacts/contracts/staking/Staking.sol/Staking.json +2045 -0
  220. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  221. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +777 -0
  222. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  223. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  224. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  225. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1324 -0
  226. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  227. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +726 -0
  228. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2189 -0
  230. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  231. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  232. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  233. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  234. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  235. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  236. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  237. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  238. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  239. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  240. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  241. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  242. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  243. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  244. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  245. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  246. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  248. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  249. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  250. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +105 -0
  252. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  254. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  256. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  258. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  260. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +156 -0
  262. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  264. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +92 -0
  266. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  268. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
  270. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +479 -0
  272. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  274. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  276. package/contracts/distribution/Distribution.sol +261 -0
  277. package/contracts/distribution/DistributionService.sol +298 -0
  278. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  279. package/contracts/distribution/IDistributionComponent.sol +66 -0
  280. package/contracts/distribution/IDistributionService.sol +81 -0
  281. package/contracts/instance/BundleManager.sol +126 -0
  282. package/contracts/instance/IInstance.sol +77 -15
  283. package/contracts/instance/IInstanceService.sol +81 -0
  284. package/contracts/instance/Instance.sol +217 -45
  285. package/contracts/instance/InstanceAdmin.sol +331 -0
  286. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  287. package/contracts/instance/InstanceReader.sol +390 -0
  288. package/contracts/instance/InstanceService.sol +362 -0
  289. package/contracts/instance/InstanceServiceManager.sol +44 -0
  290. package/contracts/instance/InstanceStore.sol +281 -0
  291. package/contracts/instance/base/BalanceStore.sol +118 -0
  292. package/contracts/instance/base/Cloneable.sol +51 -0
  293. package/contracts/instance/base/ObjectCounter.sol +21 -0
  294. package/contracts/instance/base/ObjectManager.sol +82 -0
  295. package/contracts/instance/module/IAccess.sol +46 -0
  296. package/contracts/instance/module/IBundle.sol +20 -0
  297. package/contracts/instance/module/IComponents.sol +52 -0
  298. package/contracts/instance/module/IDistribution.sol +42 -0
  299. package/contracts/instance/module/IPolicy.sol +84 -0
  300. package/contracts/instance/module/IRisk.sol +11 -0
  301. package/contracts/mock/Dip.sol +26 -0
  302. package/contracts/oracle/IOracle.sol +20 -0
  303. package/contracts/oracle/IOracleComponent.sol +32 -0
  304. package/contracts/oracle/IOracleService.sol +65 -0
  305. package/contracts/oracle/Oracle.sol +145 -0
  306. package/contracts/oracle/OracleService.sol +277 -0
  307. package/contracts/oracle/OracleServiceManager.sol +42 -0
  308. package/contracts/pool/BundleService.sol +296 -0
  309. package/contracts/pool/BundleServiceManager.sol +42 -0
  310. package/contracts/pool/IBundleService.sol +106 -0
  311. package/contracts/pool/IPoolComponent.sol +112 -0
  312. package/contracts/pool/IPoolService.sol +150 -0
  313. package/contracts/pool/Pool.sol +299 -0
  314. package/contracts/pool/PoolService.sol +453 -0
  315. package/contracts/pool/PoolServiceManager.sol +42 -0
  316. package/contracts/product/ApplicationService.sol +254 -0
  317. package/contracts/product/ApplicationServiceManager.sol +38 -0
  318. package/contracts/product/ClaimService.sol +442 -0
  319. package/contracts/product/ClaimServiceManager.sol +38 -0
  320. package/contracts/product/IApplicationService.sol +62 -0
  321. package/contracts/product/IClaimService.sol +99 -0
  322. package/contracts/product/IPolicyService.sol +78 -0
  323. package/contracts/product/IPricingService.sol +39 -0
  324. package/contracts/product/IProductComponent.sol +42 -0
  325. package/contracts/product/IProductService.sol +33 -0
  326. package/contracts/product/PolicyService.sol +475 -0
  327. package/contracts/product/PolicyServiceManager.sol +42 -0
  328. package/contracts/product/PricingService.sol +301 -0
  329. package/contracts/product/PricingServiceManager.sol +42 -0
  330. package/contracts/product/Product.sol +377 -0
  331. package/contracts/product/ProductService.sol +124 -0
  332. package/contracts/product/ProductServiceManager.sol +42 -0
  333. package/contracts/registry/ChainNft.sol +152 -108
  334. package/contracts/registry/IRegistry.sol +103 -49
  335. package/contracts/registry/IRegistryService.sol +69 -0
  336. package/contracts/registry/ITransferInterceptor.sol +7 -0
  337. package/contracts/registry/Registry.sol +513 -119
  338. package/contracts/registry/RegistryAdmin.sol +237 -0
  339. package/contracts/registry/RegistryService.sol +266 -0
  340. package/contracts/registry/RegistryServiceManager.sol +58 -0
  341. package/contracts/registry/ReleaseManager.sol +600 -0
  342. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  343. package/contracts/registry/TokenRegistry.sol +315 -0
  344. package/contracts/shared/AccessManagerCustom.sol +736 -0
  345. package/contracts/shared/AccessManagerExtended.sol +470 -0
  346. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  347. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  348. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  349. package/contracts/shared/Component.sol +281 -0
  350. package/contracts/shared/ComponentService.sol +618 -0
  351. package/contracts/shared/ComponentServiceManager.sol +35 -0
  352. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  353. package/contracts/shared/ERC165.sol +27 -0
  354. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  355. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  356. package/contracts/shared/IComponent.sol +70 -0
  357. package/contracts/shared/IComponentService.sol +102 -0
  358. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  359. package/contracts/shared/IKeyValueStore.sol +53 -0
  360. package/contracts/shared/ILifecycle.sol +30 -0
  361. package/contracts/shared/INftOwnable.sol +23 -0
  362. package/contracts/shared/IPolicyHolder.sol +45 -0
  363. package/contracts/shared/IRegisterable.sol +15 -0
  364. package/contracts/shared/IRegistryLinked.sol +11 -0
  365. package/contracts/shared/IService.sol +18 -0
  366. package/contracts/shared/IVersionable.sol +53 -0
  367. package/contracts/shared/InitializableCustom.sol +177 -0
  368. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  369. package/contracts/shared/KeyValueStore.sol +127 -0
  370. package/contracts/shared/Lifecycle.sol +130 -0
  371. package/contracts/shared/NftIdSetManager.sol +65 -0
  372. package/contracts/shared/NftOwnable.sol +107 -0
  373. package/contracts/shared/PolicyHolder.sol +102 -0
  374. package/contracts/shared/ProxyManager.sol +199 -0
  375. package/contracts/shared/Registerable.sol +75 -0
  376. package/contracts/shared/RegistryLinked.sol +43 -0
  377. package/contracts/shared/Service.sol +77 -0
  378. package/contracts/shared/TokenHandler.sol +58 -0
  379. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  380. package/contracts/shared/Versionable.sol +59 -0
  381. package/contracts/staking/IStaking.sol +168 -0
  382. package/contracts/staking/IStakingService.sol +149 -0
  383. package/contracts/staking/StakeManagerLib.sol +179 -0
  384. package/contracts/staking/Staking.sol +551 -0
  385. package/contracts/staking/StakingManager.sol +54 -0
  386. package/contracts/staking/StakingReader.sol +187 -0
  387. package/contracts/staking/StakingService.sol +406 -0
  388. package/contracts/staking/StakingServiceManager.sol +45 -0
  389. package/contracts/staking/StakingStore.sol +572 -0
  390. package/contracts/staking/TargetManagerLib.sol +207 -0
  391. package/contracts/type/AddressSet.sol +58 -0
  392. package/contracts/type/Amount.sol +128 -0
  393. package/contracts/type/Blocknumber.sol +136 -0
  394. package/contracts/type/ClaimId.sol +75 -0
  395. package/contracts/type/DistributorType.sol +55 -0
  396. package/contracts/type/Fee.sol +66 -0
  397. package/contracts/type/Key32.sol +50 -0
  398. package/contracts/type/NftId.sol +78 -0
  399. package/contracts/type/NftIdSet.sol +62 -0
  400. package/contracts/type/ObjectType.sol +168 -0
  401. package/contracts/type/PayoutId.sol +82 -0
  402. package/contracts/type/Referral.sol +89 -0
  403. package/contracts/type/RequestId.sol +75 -0
  404. package/contracts/type/RiskId.sol +43 -0
  405. package/contracts/type/RoleId.sol +146 -0
  406. package/contracts/type/Seconds.sol +81 -0
  407. package/contracts/type/StateId.sol +135 -0
  408. package/contracts/type/Timestamp.sol +136 -0
  409. package/contracts/type/UFixed.sol +326 -0
  410. package/contracts/type/Version.sol +108 -0
  411. package/package.json +23 -7
  412. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  413. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  414. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  415. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  416. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  417. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  418. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  419. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  420. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  421. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -213
  422. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  423. package/artifacts/contracts/components/Product.sol/Product.json +0 -231
  424. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  425. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  426. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  427. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  428. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  429. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  430. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  431. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  432. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  433. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  434. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  435. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  436. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  437. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  438. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  439. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  440. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  441. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  442. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  443. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  444. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  445. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  446. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  447. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  448. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  449. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  450. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  451. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  452. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  453. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  454. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  455. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  456. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  457. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
  458. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  459. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  460. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  461. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  462. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  463. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  464. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  465. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  466. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  467. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  468. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  469. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  470. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  471. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  472. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  473. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  474. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  475. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  476. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  477. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  478. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  479. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  480. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  481. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  482. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  483. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  484. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  485. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  486. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  487. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  488. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  489. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  490. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  491. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  492. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  493. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  494. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  495. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  496. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  497. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  498. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  499. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  500. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  501. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  502. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  503. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -174
  504. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  505. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -440
  506. package/contracts/components/Component.sol +0 -62
  507. package/contracts/components/IPool.sol +0 -9
  508. package/contracts/components/IProduct.sol +0 -12
  509. package/contracts/components/Pool.sol +0 -29
  510. package/contracts/components/Product.sol +0 -66
  511. package/contracts/experiment/errors/Require.sol +0 -33
  512. package/contracts/experiment/errors/Revert.sol +0 -39
  513. package/contracts/experiment/inheritance/A.sol +0 -56
  514. package/contracts/experiment/inheritance/B.sol +0 -23
  515. package/contracts/experiment/inheritance/C.sol +0 -28
  516. package/contracts/experiment/inheritance/IA.sol +0 -18
  517. package/contracts/experiment/inheritance/IB.sol +0 -9
  518. package/contracts/experiment/inheritance/IC.sol +0 -11
  519. package/contracts/experiment/types/TypeA.sol +0 -42
  520. package/contracts/experiment/types/TypeB.sol +0 -24
  521. package/contracts/instance/access/Access.sol +0 -218
  522. package/contracts/instance/access/IAccess.sol +0 -83
  523. package/contracts/instance/component/ComponentModule.sol +0 -248
  524. package/contracts/instance/component/IComponent.sol +0 -95
  525. package/contracts/instance/policy/IPolicy.sol +0 -66
  526. package/contracts/instance/policy/PolicyModule.sol +0 -107
  527. package/contracts/instance/pool/IPoolModule.sol +0 -41
  528. package/contracts/instance/pool/PoolModule.sol +0 -86
  529. package/contracts/instance/product/IProductService.sol +0 -46
  530. package/contracts/instance/product/ProductService.sol +0 -108
  531. package/contracts/registry/IChainNft.sol +0 -18
  532. package/contracts/types/Blocknumber.sol +0 -60
  533. package/contracts/types/ChainId.sol +0 -30
  534. package/contracts/types/NftId.sol +0 -35
  535. package/contracts/types/Timestamp.sol +0 -55
  536. package/contracts/types/UFixed.sol +0 -207
@@ -1,182 +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, TOKEN, 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 {ReleaseManager} from "./ReleaseManager.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
+ contract Registry is
31
+ InitializableCustom,
32
+ IRegistry
33
+ {
34
+ address public NFT_LOCK_ADDRESS = address(0x1);
35
+ uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
36
+ uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
37
+ string public constant EMPTY_URI = "";
38
+
39
+ mapping(NftId nftId => ObjectInfo info) private _info;
40
+ mapping(address object => NftId nftId) private _nftIdByAddress;
41
+
42
+ mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
43
+
44
+ mapping(ObjectType objectType => bool) private _coreTypes;
45
+
46
+ mapping(ObjectType objectType => mapping(
47
+ ObjectType parentType => bool)) private _coreContractCombinations;
48
+
49
+ mapping(ObjectType objectType => mapping(
50
+ ObjectType parentType => bool)) private _coreObjectCombinations;
51
+
52
+ RegistryAdmin public immutable _admin;
53
+ ChainNft public immutable _chainNft;
3
54
 
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";
55
+ NftId public immutable _protocolNftId;
56
+ NftId public immutable _registryNftId;
57
+ NftId public _stakingNftId;
8
58
 
9
- contract RegistryLinked is IRegistryLinked {
59
+ address public _tokenRegistryAddress;
60
+ address public _stakingAddress;
61
+ ReleaseManager public _releaseManager;
10
62
 
11
- IRegistry internal _registry;
12
-
13
- constructor(address registry) {
14
- _registry = IRegistry(registry);
63
+ modifier onlyRegistryService() {
64
+ if(!_releaseManager.isActiveRegistryService(msg.sender)) {
65
+ revert ErrorRegistryCallerNotRegistryService();
66
+ }
67
+ _;
15
68
  }
16
69
 
17
- function getRegistry() external view override returns(IRegistry registry) {
18
- return _registry;
70
+
71
+ modifier onlyReleaseManager() {
72
+ if(msg.sender != address(_releaseManager)) {
73
+ revert ErrorRegistryCallerNotReleaseManager();
74
+ }
75
+ _;
19
76
  }
20
77
 
21
- }
22
78
 
79
+ constructor(RegistryAdmin admin)
80
+ InitializableCustom()
81
+ {
82
+ _admin = admin;
83
+ // deploy NFT
84
+ _chainNft = new ChainNft(address(this));
23
85
 
24
- abstract contract Registerable is
25
- RegistryLinked,
26
- IRegisterable
27
- {
28
- using NftIdLib for NftId;
86
+ // initial registry setup
87
+ _protocolNftId = _registerProtocol();
88
+ _registryNftId = _registerRegistry();
89
+
90
+ // set object types and object parent relations
91
+ _setupValidCoreTypesAndCombinations();
92
+ }
29
93
 
30
- address private _initialOwner;
31
-
32
- constructor(address registry)
33
- RegistryLinked(registry)
94
+
95
+ /// @dev wires release manager and token to registry (this contract).
96
+ /// MUST be called by release manager.
97
+ function initialize(
98
+ address releaseManager,
99
+ address tokenRegistry,
100
+ address staking
101
+ )
102
+ external
103
+ initializer()
34
104
  {
35
- _initialOwner = msg.sender;
105
+ _releaseManager = ReleaseManager(releaseManager);
106
+ _tokenRegistryAddress = tokenRegistry;
107
+ _stakingAddress = staking;
108
+
109
+ _stakingNftId = _registerStaking();
36
110
  }
37
111
 
38
- // getType, getData and register need to be implemented by concrete contract
112
+ function registerService(
113
+ ObjectInfo memory info,
114
+ VersionPart version,
115
+ ObjectType domain
116
+ )
117
+ external
118
+ onlyReleaseManager
119
+ returns(NftId nftId)
120
+ {
121
+ address service = info.objectAddress;
122
+ /* must be guaranteed by release manager
123
+ if(service == address(0)) {
124
+ revert();
125
+ }
126
+
127
+ if(version.eqz()) {
128
+ revert();
129
+ }
130
+
131
+ if(info.objectType != SERVICE()) {
132
+ revert();
133
+ }
134
+ if(info.parentType != REGISTRY()) {
135
+ revert();
136
+ }
137
+ info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
138
+ */
139
+
140
+ if(domain.eqz()) {
141
+ revert ErrorRegistryDomainZero(service);
142
+ }
39
143
 
40
- function isRegisterable() external pure override returns(bool) {
41
- return true;
144
+ if(_service[version][domain] > address(0)) {
145
+ revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
146
+ }
147
+
148
+ _service[version][domain] = service;
149
+
150
+ nftId = _register(info);
151
+
152
+ emit LogServiceRegistration(version, domain);
42
153
  }
43
154
 
44
- function getInitialOwner() public view override returns(address deployer) {
45
- return _initialOwner;
155
+ function register(ObjectInfo memory info)
156
+ external
157
+ onlyRegistryService
158
+ returns(NftId nftId)
159
+ {
160
+ ObjectType objectType = info.objectType;
161
+ ObjectType parentType = _info[info.parentNftId].objectType;
162
+
163
+ // only valid core types combinations
164
+ if(info.objectAddress == address(0))
165
+ {
166
+ if(_coreObjectCombinations[objectType][parentType] == false) {
167
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
168
+ }
169
+ }
170
+ else
171
+ {
172
+ if(_coreContractCombinations[objectType][parentType] == false) {
173
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
174
+ }
175
+ }
176
+
177
+ nftId = _register(info);
46
178
  }
47
179
 
48
- function isRegistered() public view override returns(bool) {
49
- NftId nftId = _registry.getNftId(address(this));
50
- return nftId.gtz();
180
+ function registerWithCustomType(ObjectInfo memory info)
181
+ external
182
+ onlyRegistryService
183
+ returns(NftId nftId)
184
+ {
185
+ ObjectType objectType = info.objectType;
186
+ ObjectType parentType = _info[info.parentNftId].objectType;
187
+
188
+ if(_coreTypes[objectType]) {
189
+ revert ErrorRegistryCoreTypeRegistration();
190
+ }
191
+
192
+ if(
193
+ parentType == PROTOCOL() ||
194
+ parentType == REGISTRY() ||
195
+ parentType == SERVICE()
196
+ ) {
197
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
198
+ }
199
+
200
+ _register(info);
51
201
  }
52
202
 
53
- function getNftId() public view override returns(NftId nftId) {
54
- return _registry.getNftId(address(this));
203
+
204
+ /// @dev earliest GIF major version
205
+ function getInitialVersion() external view returns (VersionPart) {
206
+ return _releaseManager.getInitialVersion();
55
207
  }
56
208
 
57
- function getOwner() public view override returns(address owner) {
58
- NftId id = _registry.getNftId(address(this));
59
- owner = _registry.getOwner(id);
60
- return owner != address(0) ? owner : _initialOwner;
209
+ /// @dev next GIF release version to be released
210
+ function getNextVersion() external view returns (VersionPart) {
211
+ return _releaseManager.getNextVersion();
61
212
  }
62
213
 
63
- }
214
+ /// @dev latest active GIF release version
215
+ function getLatestVersion() external view returns (VersionPart) {
216
+ return _releaseManager.getLatestVersion();
217
+ }
64
218
 
65
- contract Registry is IRegistry {
66
- using NftIdLib for NftId;
67
- string public constant EMPTY_URI = "";
219
+ function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
220
+ return _releaseManager.getReleaseInfo(version);
221
+ }
68
222
 
69
- mapping(NftId nftId => RegistryInfo info) private _info;
70
- mapping(NftId nftId => address owner) private _owner;
71
- mapping(address object => NftId nftId) private _nftIdByAddress;
223
+ function getObjectCount() external view returns (uint256) {
224
+ return _chainNft.totalSupply();
225
+ }
72
226
 
73
- IChainNft private _chainNft;
227
+ function getNftId() external view returns (NftId nftId) {
228
+ return _registryNftId;
229
+ }
74
230
 
75
- function initialize(address chainNft) external {
76
- require(address(_chainNft) == address(0), "ERROR:REG-001:ALREADY_INITIALIZED");
77
- _chainNft = IChainNft(chainNft);
231
+ function getProtocolNftId() external view returns (NftId nftId) {
232
+ return _protocolNftId;
78
233
  }
79
234
 
80
- function TOKEN() public pure override returns(uint256) { return 30; }
81
- function INSTANCE() public pure override returns(uint256) { return 40; }
82
- function PRODUCT() public pure override returns(uint256) { return 50; }
83
- function ORACLE() public pure override returns(uint256) { return 60; }
84
- function POOL() public pure override returns(uint256) { return 70; }
85
- function POLICY() public pure override returns(uint256) { return 80; }
86
- function BUNDLE() public pure override returns(uint256) { return 90; }
235
+ function getNftId(address object) external view returns (NftId id) {
236
+ return _nftIdByAddress[object];
237
+ }
87
238
 
88
- function register(address objectAddress) external override returns(NftId nftId) {
89
- require(_nftIdByAddress[objectAddress].eqz(), "ERROR:REG-002:ALREADY_REGISTERED");
239
+ function ownerOf(NftId nftId) public view returns (address) {
240
+ return _chainNft.ownerOf(nftId.toInt());
241
+ }
90
242
 
91
- IRegisterable registerable = IRegisterable(objectAddress);
92
- require(registerable.isRegisterable(), "ERROR:REG-003:NOT_REGISTERABLE");
243
+ function ownerOf(address contractAddress) public view returns (address) {
244
+ return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
245
+ }
93
246
 
94
- // check parent exists (for objects not instances)
95
- if(registerable.getType() != INSTANCE()) {
96
- RegistryInfo memory parentInfo = _info[registerable.getParentNftId()];
97
- require(parentInfo.nftId.gtz(), "ERROR:REG-004:PARENT_NOT_FOUND");
98
- // check validity of parent relation, valid relations are
99
- // policy -> product, bundle -> pool, product -> instance, pool -> instance
100
- }
247
+ function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
248
+ return _info[nftId];
249
+ }
101
250
 
102
- uint256 mintedTokenId = _chainNft.mint(
103
- registerable.getInitialOwner(),
104
- EMPTY_URI);
105
- nftId = toNftId(mintedTokenId);
106
-
107
- RegistryInfo memory info = RegistryInfo(
108
- nftId,
109
- registerable.getParentNftId(),
110
- registerable.getType(),
111
- objectAddress,
112
- registerable.getInitialOwner()
113
- );
251
+ function getObjectInfo(address object) external view returns (ObjectInfo memory) {
252
+ return _info[_nftIdByAddress[object]];
253
+ }
114
254
 
115
- _info[nftId] = info;
116
- _nftIdByAddress[objectAddress] = nftId;
255
+ function isRegistered(NftId nftId) public view returns (bool) {
256
+ return _info[nftId].objectType.gtz();
257
+ }
117
258
 
118
- // add logging
259
+ function isRegistered(address object) external view returns (bool) {
260
+ return _nftIdByAddress[object].gtz();
119
261
  }
120
262
 
263
+ function isRegisteredService(address object) external view returns (bool) {
264
+ return _info[_nftIdByAddress[object]].objectType == SERVICE();
265
+ }
121
266
 
122
- function registerObjectForInstance(
123
- NftId parentNftId,
124
- uint256 objectType,
125
- address initialOwner
126
- )
127
- external
128
- override
129
- // TODO add onlyRegisteredInstance
130
- returns(NftId nftId)
267
+ function isRegisteredComponent(address object) external view returns (bool) {
268
+ NftId objectParentNftId = _info[_nftIdByAddress[object]].parentNftId;
269
+ return _info[objectParentNftId].objectType == INSTANCE();
270
+ }
271
+
272
+ function isActiveRelease(VersionPart version) external view returns (bool)
131
273
  {
132
- // TODO add more validation
133
- require(
134
- objectType == POLICY() || objectType == BUNDLE(),
135
- "ERROR:REG-005:TYPE_INVALID");
274
+ return _releaseManager.isActiveRelease(version);
275
+ }
136
276
 
137
- uint256 mintedTokenId = _chainNft.mint(
138
- initialOwner,
139
- EMPTY_URI);
140
- nftId = toNftId(mintedTokenId);
277
+ function getStakingAddress() external view returns (address staking) {
278
+ //return getObjectInfo(_stakingNftId).objectAddress;
279
+ //return _info[_stakingNftId].objectAddress;
280
+ return _stakingAddress;
281
+ }
141
282
 
142
- RegistryInfo memory info = RegistryInfo(
143
- nftId,
144
- parentNftId,
145
- objectType,
146
- address(0),
147
- initialOwner
148
- );
283
+ function getTokenRegistryAddress() external view returns (address tokenRegistry) {
284
+ return _tokenRegistryAddress;
285
+ }
149
286
 
150
- _info[nftId] = info;
287
+ function getServiceAddress(
288
+ ObjectType serviceDomain,
289
+ VersionPart releaseVersion
290
+ ) external view returns (address service)
291
+ {
292
+ service = _service[releaseVersion][serviceDomain];
293
+ }
151
294
 
152
- // add logging
295
+ function getReleaseAccessManagerAddress(VersionPart version) external view returns (address) {
296
+ return address(_releaseManager.getReleaseAccessManager(version));
153
297
  }
154
298
 
299
+ function getReleaseManagerAddress() external view returns (address) {
300
+ return address(_releaseManager);
301
+ }
155
302
 
156
- function getObjectCount() external view override returns(uint256) {
157
- return _chainNft.totalSupply();
303
+ function getChainNftAddress() external view override returns (address) {
304
+ return address(_chainNft);
158
305
  }
159
306
 
307
+ function getRegistryAdminAddress() external view returns (address) {
308
+ return address(_admin);
309
+ }
160
310
 
161
- function getNftId(address object) external view override returns(NftId id) {
162
- return _nftIdByAddress[object];
311
+ function getAuthority() external view returns (address) {
312
+ return _admin.authority();
163
313
  }
164
314
 
315
+ function getOwner() public view returns (address owner) {
316
+ return ownerOf(address(this));
317
+ }
165
318
 
166
- function isRegistered(address object) external view override returns(bool) {
167
- return _nftIdByAddress[object].gtz();
319
+ // IERC165
320
+
321
+ function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
322
+ if(interfaceId == type(IERC165).interfaceId || interfaceId == type(IRegistry).interfaceId) {
323
+ return true;
324
+ }
325
+
326
+ return false;
168
327
  }
169
328
 
329
+ // Internals
170
330
 
171
- function getInfo(NftId nftId) external view override returns(RegistryInfo memory info) {
172
- return _info[nftId];
331
+ /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
332
+ // TODO registration of precompile addresses
333
+ function _register(ObjectInfo memory info)
334
+ internal
335
+ returns(NftId nftId)
336
+ {
337
+ ObjectType objectType = info.objectType;
338
+ bool isInterceptor = info.isInterceptor;
339
+ address objectAddress = info.objectAddress;
340
+ address owner = info.initialOwner;
341
+
342
+ NftId parentNftId = info.parentNftId;
343
+ ObjectInfo memory parentInfo = _info[parentNftId];
344
+ ObjectType parentType = parentInfo.objectType; // see function header
345
+ address parentAddress = parentInfo.objectAddress;
346
+
347
+ // parent is contract -> need to check? -> check before minting
348
+ // special case: staking: to protocol possible as well
349
+ // special case: global registry nft as parent when not on mainnet -> global registry address is 0
350
+ // special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
351
+ // special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
352
+ if(objectType != STAKE()) {
353
+ if(parentAddress == address(0)) {
354
+ revert ErrorRegistryParentAddressZero();
355
+ }
356
+ }
357
+
358
+ address interceptorAddress = _getInterceptor(
359
+ isInterceptor,
360
+ objectType,
361
+ objectAddress,
362
+ parentInfo.isInterceptor,
363
+ parentAddress);
364
+
365
+ uint256 tokenId = _chainNft.getNextTokenId();
366
+ nftId = NftIdLib.toNftId(tokenId);
367
+ info.nftId = nftId;
368
+ _info[nftId] = info;
369
+
370
+ if(objectAddress > address(0)) {
371
+ if(_nftIdByAddress[objectAddress].gtz()) {
372
+ revert ErrorRegistryContractAlreadyRegistered(objectAddress);
373
+ }
374
+
375
+ _nftIdByAddress[objectAddress] = nftId;
376
+ }
377
+
378
+ emit LogRegistration(nftId, parentNftId, objectType, isInterceptor, objectAddress, owner);
379
+
380
+ // calls nft receiver(1) and interceptor(2)
381
+ uint256 mintedTokenId = _chainNft.mint(
382
+ owner,
383
+ interceptorAddress,
384
+ EMPTY_URI);
385
+
386
+ assert(mintedTokenId == tokenId);
173
387
  }
174
388
 
175
- function getOwner(NftId nftId) external view override returns(address) {
176
- return _chainNft.ownerOf(nftId.toInt());
389
+ /// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
390
+ /// special case: STAKES (parent may be any type) -> no intercept call
391
+ /// default case:
392
+ function _getInterceptor(
393
+ bool isInterceptor,
394
+ ObjectType objectType,
395
+ address objectAddress,
396
+ bool parentIsInterceptor,
397
+ address parentObjectAddress
398
+ )
399
+ internal
400
+ pure
401
+ returns (address interceptor)
402
+ {
403
+ // no intercepting calls for stakes
404
+ if (objectType == STAKE()) {
405
+ return address(0);
406
+ }
407
+
408
+ if (objectAddress == address(0)) {
409
+ if (parentIsInterceptor) {
410
+ return parentObjectAddress;
411
+ } else {
412
+ return address(0);
413
+ }
414
+ }
415
+
416
+ if (isInterceptor) {
417
+ return objectAddress;
418
+ }
419
+
420
+ return address(0);
177
421
  }
178
422
 
179
- function getNftAddress() external view override returns(address nft) {
180
- return address(_chainNft);
423
+ // Internals called only in constructor
424
+
425
+ /// @dev protocol registration used to anchor the dip ecosystem relations
426
+ function _registerProtocol()
427
+ private
428
+ returns (NftId protocolNftId)
429
+ {
430
+ uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
431
+ protocolNftId = NftIdLib.toNftId(protocolId);
432
+
433
+ _info[protocolNftId] = ObjectInfo({
434
+ nftId: protocolNftId,
435
+ parentNftId: NftIdLib.zero(),
436
+ objectType: PROTOCOL(),
437
+ isInterceptor: false,
438
+ objectAddress: address(0),
439
+ initialOwner: NFT_LOCK_ADDRESS,
440
+ data: ""
441
+ });
442
+
443
+ _chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
444
+ }
445
+
446
+ /// @dev registry registration
447
+ /// might also register the global registry when not on mainnet
448
+ function _registerRegistry()
449
+ private
450
+ returns (NftId registryNftId)
451
+ {
452
+ uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
453
+ registryNftId = NftIdLib.toNftId(registryId);
454
+ NftId parentNftId;
455
+
456
+ if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
457
+ {// we're not the global registry
458
+ _registerGlobalRegistry();
459
+ parentNftId = NftIdLib.toNftId(_chainNft.GLOBAL_REGISTRY_ID());
460
+ }
461
+ else
462
+ {// we are global registry
463
+ parentNftId = _protocolNftId;
464
+ }
465
+
466
+ _info[registryNftId] = ObjectInfo({
467
+ nftId: registryNftId,
468
+ parentNftId: parentNftId,
469
+ objectType: REGISTRY(),
470
+ isInterceptor: false,
471
+ objectAddress: address(this),
472
+ initialOwner: NFT_LOCK_ADDRESS,
473
+ data: ""
474
+ });
475
+
476
+ _nftIdByAddress[address(this)] = registryNftId;
477
+ _chainNft.mint(NFT_LOCK_ADDRESS, registryId);
478
+ }
479
+
480
+ /// @dev global registry registration for non mainnet registries
481
+ function _registerGlobalRegistry()
482
+ private
483
+ {
484
+ uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
485
+ NftId globalRegistryNftId = NftIdLib.toNftId(globalRegistryId);
486
+
487
+ _info[globalRegistryNftId] = ObjectInfo({
488
+ nftId: globalRegistryNftId,
489
+ parentNftId: NftIdLib.toNftId(_chainNft.PROTOCOL_NFT_ID()),
490
+ objectType: REGISTRY(),
491
+ isInterceptor: false,
492
+ objectAddress: address(0),
493
+ initialOwner: NFT_LOCK_ADDRESS,
494
+ data: ""
495
+ });
496
+
497
+ _chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
498
+ }
499
+ // depends on _registryNftId and _stakingAddress
500
+ function _registerStaking()
501
+ private
502
+ returns (NftId stakingNftId)
503
+ {
504
+ address stakingOwner = IRegisterable(_stakingAddress).getOwner();
505
+ uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
506
+ stakingNftId = NftIdLib.toNftId(stakingId);
507
+
508
+ _info[stakingNftId] = ObjectInfo({
509
+ nftId: stakingNftId,
510
+ parentNftId: _registryNftId,
511
+ objectType: STAKING(),
512
+ isInterceptor: false,
513
+ objectAddress: _stakingAddress,
514
+ initialOwner: stakingOwner,
515
+ data: ""
516
+ });
517
+
518
+ _nftIdByAddress[_stakingAddress] = stakingNftId;
519
+ // reverts if nftId was already minted
520
+ _chainNft.mint(stakingOwner, stakingId);
521
+ }
522
+
523
+ /// @dev defines which object - parent types relations are allowed to register
524
+ // IMPORTANT:
525
+ // 1) EACH object type MUST have only one parent type across ALL mappings
526
+ // 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
527
+ // 3) DO NOT use REGISTRY as object type
528
+ // 2) DO NOT use PROTOCOL and "ObjectTypeLib.zero"
529
+ function _setupValidCoreTypesAndCombinations()
530
+ private
531
+ {
532
+ _coreTypes[REGISTRY()] = true;
533
+ _coreTypes[SERVICE()] = true;
534
+ _coreTypes[TOKEN()] = true;
535
+ _coreTypes[INSTANCE()] = true;
536
+ _coreTypes[PRODUCT()] = true;
537
+ _coreTypes[POOL()] = true;
538
+ _coreTypes[DISTRIBUTION()] = true;
539
+ _coreTypes[DISTRIBUTOR()] = true;
540
+ _coreTypes[ORACLE()] = true;
541
+ _coreTypes[POLICY()] = true;
542
+ _coreTypes[BUNDLE()] = true;
543
+ _coreTypes[STAKING()] = true;
544
+ _coreTypes[STAKE()] = true;
545
+
546
+ uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
547
+ if(registryId == _chainNft.GLOBAL_REGISTRY_ID()) {
548
+ // we are global registry
549
+ // object is registry from different chain
550
+ // parent is global registry, this contract
551
+ _coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
552
+ //_coreObjectCombinations[REGISTRY()][REGISTRY()] = true;
553
+ } else {
554
+ // we are not global registry
555
+ // object is local registry, this contract
556
+ // parent is global registry, object with 0 address or registry from mainnet???
557
+ }
558
+ _coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
559
+ _coreContractCombinations[TOKEN()][REGISTRY()] = true;
560
+ //_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
561
+ _coreContractCombinations[INSTANCE()][REGISTRY()] = true;
562
+
563
+ _coreContractCombinations[PRODUCT()][INSTANCE()] = true;
564
+ _coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
565
+ _coreContractCombinations[ORACLE()][INSTANCE()] = true;
566
+ _coreContractCombinations[POOL()][INSTANCE()] = true;
567
+
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;
181
575
  }
182
576
  }