@etherisc/gif-next 0.0.2-7e569a6-522 → 0.0.2-7e8dbef-751

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 (594) hide show
  1. package/README.md +10 -14
  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 +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +68 -54
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +268 -1576
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +296 -211
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +455 -2542
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +661 -341
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +477 -373
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +368 -107
  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/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +6 -1
  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 +1 -1
  41. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +25 -150
  42. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  44. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  45. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  47. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  48. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  49. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  50. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  51. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
  52. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  53. package/artifacts/contracts/{components/IPoolComponent.sol/IPoolComponent.json → oracle/IOracleComponent.sol/IOracleComponent.json} +280 -336
  54. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  55. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +578 -0
  56. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  57. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  58. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +921 -0
  60. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  61. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +722 -0
  62. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  63. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1105 -0
  64. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +746 -0
  66. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  67. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +260 -285
  68. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  69. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/IPoolComponent.sol/IPoolComponent.json} +448 -310
  70. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  71. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1065 -0
  72. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  73. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  74. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  75. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1432 -0
  76. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +738 -0
  78. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  79. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +834 -0
  80. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
  82. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  83. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1278 -0
  84. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +810 -0
  86. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  87. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +203 -235
  88. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  89. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +759 -0
  90. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  91. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +244 -303
  92. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  93. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +263 -221
  94. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  95. package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +358 -312
  96. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  97. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IProductService.sol/IProductService.json} +116 -170
  98. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  99. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1146 -0
  100. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +754 -0
  102. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  103. package/artifacts/contracts/product/PricingService.sol/PricingService.json +983 -0
  104. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +778 -0
  106. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  107. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → product/Product.sol/Product.json} +865 -216
  108. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  109. package/artifacts/contracts/product/ProductService.sol/ProductService.json +679 -0
  110. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +694 -0
  112. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  113. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  114. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  115. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +203 -21
  116. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  117. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +349 -220
  118. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  119. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  120. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  121. package/artifacts/contracts/registry/Registry.sol/Registry.json +440 -36
  122. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  123. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
  124. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  125. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +480 -265
  126. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +340 -95
  128. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  129. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +834 -89
  130. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
  131. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
  132. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  133. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +349 -82
  134. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  135. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  136. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  137. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  138. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  139. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  140. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  141. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
  142. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
  144. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  145. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → shared/Component.sol/Component.json} +330 -283
  146. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  147. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1490 -0
  148. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +792 -0
  150. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  151. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +171 -248
  152. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  153. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  154. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  155. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  156. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  157. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  158. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  159. package/artifacts/contracts/{components/IDistributionComponent.sol/IDistributionComponent.json → shared/IComponent.sol/IComponent.json} +213 -230
  160. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +867 -0
  162. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  163. package/artifacts/contracts/{components/Component.sol/Component.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +210 -161
  164. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  165. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -11
  166. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  167. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  168. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  169. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  170. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  171. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  172. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  173. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -30
  174. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  175. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  176. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  177. package/artifacts/contracts/shared/IService.sol/IService.json +75 -158
  178. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  180. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  181. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  182. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  183. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  184. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  185. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  186. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  187. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  188. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  189. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  190. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  191. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +108 -35
  192. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  193. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  194. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  195. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -75
  196. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +131 -60
  198. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  199. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  200. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  201. package/artifacts/contracts/shared/Service.sol/Service.json +178 -160
  202. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  203. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  204. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  205. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  206. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  207. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  208. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  209. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  210. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  211. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +993 -0
  212. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  213. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +444 -0
  214. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  215. package/artifacts/contracts/staking/Staking.sol/Staking.json +2045 -0
  216. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  217. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +777 -0
  218. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  219. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  220. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  221. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1324 -0
  222. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  223. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +726 -0
  224. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  225. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2189 -0
  226. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  227. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  228. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  229. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  230. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  231. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  232. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  233. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  234. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  235. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  236. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  237. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  238. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  239. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  240. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  241. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  242. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  243. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  244. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  245. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  246. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +105 -0
  248. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  250. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  252. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  254. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  255. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  256. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  257. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  258. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  260. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  261. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  262. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  263. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
  264. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  265. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  266. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  267. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  268. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  269. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  270. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  271. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  272. package/contracts/distribution/Distribution.sol +261 -0
  273. package/contracts/distribution/DistributionService.sol +298 -0
  274. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  275. package/contracts/distribution/IDistributionComponent.sol +66 -0
  276. package/contracts/distribution/IDistributionService.sol +81 -0
  277. package/contracts/instance/BundleManager.sol +15 -14
  278. package/contracts/instance/IInstance.sol +56 -46
  279. package/contracts/instance/IInstanceService.sol +58 -17
  280. package/contracts/instance/Instance.sol +145 -178
  281. package/contracts/instance/InstanceAdmin.sol +331 -0
  282. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  283. package/contracts/instance/InstanceReader.sol +159 -62
  284. package/contracts/instance/InstanceService.sol +244 -246
  285. package/contracts/instance/InstanceServiceManager.sol +12 -22
  286. package/contracts/instance/InstanceStore.sol +281 -0
  287. package/contracts/instance/base/BalanceStore.sol +118 -0
  288. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +8 -3
  289. package/contracts/instance/base/ObjectCounter.sol +21 -0
  290. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +12 -14
  291. package/contracts/instance/module/IAccess.sol +19 -21
  292. package/contracts/instance/module/IBundle.sol +8 -8
  293. package/contracts/instance/module/IComponents.sol +52 -0
  294. package/contracts/instance/module/IDistribution.sol +7 -4
  295. package/contracts/instance/module/IPolicy.sol +56 -17
  296. package/contracts/instance/module/IRisk.sol +1 -1
  297. package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
  298. package/contracts/oracle/IOracle.sol +20 -0
  299. package/contracts/oracle/IOracleComponent.sol +32 -0
  300. package/contracts/oracle/IOracleService.sol +48 -0
  301. package/contracts/oracle/Oracle.sol +145 -0
  302. package/contracts/oracle/OracleService.sol +221 -0
  303. package/contracts/oracle/OracleServiceManager.sol +42 -0
  304. package/contracts/pool/BundleService.sol +296 -0
  305. package/contracts/pool/BundleServiceManager.sol +42 -0
  306. package/contracts/pool/IBundleService.sol +106 -0
  307. package/contracts/pool/IPoolComponent.sol +112 -0
  308. package/contracts/pool/IPoolService.sol +150 -0
  309. package/contracts/pool/Pool.sol +299 -0
  310. package/contracts/pool/PoolService.sol +453 -0
  311. package/contracts/pool/PoolServiceManager.sol +42 -0
  312. package/contracts/product/ApplicationService.sol +254 -0
  313. package/contracts/product/ApplicationServiceManager.sol +38 -0
  314. package/contracts/product/ClaimService.sol +442 -0
  315. package/contracts/product/ClaimServiceManager.sol +38 -0
  316. package/contracts/product/IApplicationService.sol +62 -0
  317. package/contracts/product/IClaimService.sol +93 -0
  318. package/contracts/product/IPolicyService.sol +78 -0
  319. package/contracts/product/IPricingService.sol +39 -0
  320. package/contracts/product/IProductComponent.sol +42 -0
  321. package/contracts/product/IProductService.sol +33 -0
  322. package/contracts/product/PolicyService.sol +475 -0
  323. package/contracts/product/PolicyServiceManager.sol +42 -0
  324. package/contracts/product/PricingService.sol +301 -0
  325. package/contracts/product/PricingServiceManager.sol +42 -0
  326. package/contracts/product/Product.sol +377 -0
  327. package/contracts/product/ProductService.sol +124 -0
  328. package/contracts/product/ProductServiceManager.sol +42 -0
  329. package/contracts/registry/ChainNft.sol +16 -1
  330. package/contracts/registry/IRegistry.sol +47 -21
  331. package/contracts/registry/IRegistryService.sol +42 -38
  332. package/contracts/registry/ITransferInterceptor.sol +1 -0
  333. package/contracts/registry/Registry.sol +221 -97
  334. package/contracts/registry/RegistryAdmin.sol +237 -0
  335. package/contracts/registry/RegistryService.sol +108 -104
  336. package/contracts/registry/RegistryServiceManager.sol +22 -26
  337. package/contracts/registry/ReleaseManager.sol +458 -191
  338. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  339. package/contracts/registry/TokenRegistry.sol +263 -60
  340. package/contracts/shared/AccessManagerCustom.sol +736 -0
  341. package/contracts/shared/AccessManagerExtended.sol +470 -0
  342. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  343. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  344. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  345. package/contracts/shared/Component.sol +281 -0
  346. package/contracts/shared/ComponentService.sol +618 -0
  347. package/contracts/shared/ComponentServiceManager.sol +35 -0
  348. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  349. package/contracts/shared/ERC165.sol +15 -13
  350. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  351. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  352. package/contracts/shared/IComponent.sol +70 -0
  353. package/contracts/shared/IComponentService.sol +102 -0
  354. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  355. package/contracts/{instance/base → shared}/IKeyValueStore.sol +15 -11
  356. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  357. package/contracts/shared/INftOwnable.sol +13 -12
  358. package/contracts/shared/IPolicyHolder.sol +45 -0
  359. package/contracts/shared/IRegisterable.sol +3 -3
  360. package/contracts/shared/IRegistryLinked.sol +11 -0
  361. package/contracts/shared/IService.sol +7 -5
  362. package/contracts/shared/IVersionable.sol +5 -48
  363. package/contracts/shared/InitializableCustom.sol +177 -0
  364. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  365. package/contracts/shared/KeyValueStore.sol +127 -0
  366. package/contracts/{instance/base → shared}/Lifecycle.sol +35 -7
  367. package/contracts/shared/NftIdSetManager.sol +65 -0
  368. package/contracts/shared/NftOwnable.sol +59 -91
  369. package/contracts/shared/PolicyHolder.sol +102 -0
  370. package/contracts/shared/ProxyManager.sol +131 -26
  371. package/contracts/shared/Registerable.sol +19 -30
  372. package/contracts/shared/RegistryLinked.sol +43 -0
  373. package/contracts/shared/Service.sol +38 -21
  374. package/contracts/shared/TokenHandler.sol +37 -6
  375. package/contracts/shared/Versionable.sol +4 -92
  376. package/contracts/staking/IStaking.sol +168 -0
  377. package/contracts/staking/IStakingService.sol +149 -0
  378. package/contracts/staking/StakeManagerLib.sol +179 -0
  379. package/contracts/staking/Staking.sol +551 -0
  380. package/contracts/staking/StakingManager.sol +54 -0
  381. package/contracts/staking/StakingReader.sol +187 -0
  382. package/contracts/staking/StakingService.sol +406 -0
  383. package/contracts/staking/StakingServiceManager.sol +45 -0
  384. package/contracts/staking/StakingStore.sol +572 -0
  385. package/contracts/staking/TargetManagerLib.sol +207 -0
  386. package/contracts/{types → type}/AddressSet.sol +1 -1
  387. package/contracts/type/Amount.sol +128 -0
  388. package/contracts/{types → type}/Blocknumber.sol +21 -3
  389. package/contracts/type/ClaimId.sol +75 -0
  390. package/contracts/{types → type}/DistributorType.sol +2 -2
  391. package/contracts/{types → type}/Fee.sol +33 -23
  392. package/contracts/{types → type}/NftId.sol +21 -15
  393. package/contracts/{types → type}/NftIdSet.sol +2 -2
  394. package/contracts/{types → type}/ObjectType.sol +32 -16
  395. package/contracts/type/PayoutId.sol +82 -0
  396. package/contracts/{types → type}/Referral.sol +5 -1
  397. package/contracts/type/RequestId.sol +75 -0
  398. package/contracts/{types → type}/RiskId.sol +1 -1
  399. package/contracts/type/RoleId.sol +146 -0
  400. package/contracts/type/Seconds.sol +81 -0
  401. package/contracts/{types → type}/StateId.sol +30 -4
  402. package/contracts/{types → type}/Timestamp.sol +18 -13
  403. package/contracts/{types → type}/UFixed.sol +1 -0
  404. package/contracts/{types → type}/Version.sol +2 -1
  405. package/package.json +3 -3
  406. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  407. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  408. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  409. package/artifacts/contracts/components/IComponent.sol/IComponent.json +0 -455
  410. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  411. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  412. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  413. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  414. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  415. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  416. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  417. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  418. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  419. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  420. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  421. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  422. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  423. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  424. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  425. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  426. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  427. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  428. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  429. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  430. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  431. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  432. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  433. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  434. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  435. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  436. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  437. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  438. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  439. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  440. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  441. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  442. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  443. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  444. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  445. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  446. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  447. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  448. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  449. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  450. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  451. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  452. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  453. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  454. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  455. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  456. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1034
  457. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  458. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  459. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  460. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  461. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  462. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  463. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  464. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  465. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  466. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  467. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  468. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  469. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1102
  470. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  471. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -449
  472. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  473. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -772
  474. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  475. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -437
  476. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  477. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  478. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  479. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  480. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  481. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  482. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1227
  483. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  484. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -505
  485. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  486. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -806
  487. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  488. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -437
  489. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  490. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -856
  491. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  492. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -437
  493. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  494. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  495. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  496. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  497. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  498. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  499. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  500. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -313
  501. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  502. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  503. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  504. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -608
  505. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  506. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  507. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  508. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  509. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  510. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  511. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  512. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  513. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  514. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  515. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  516. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  517. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  518. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  519. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  520. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  521. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  522. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  523. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  524. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  525. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  526. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  527. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  528. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  529. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  530. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  531. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  532. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  533. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  534. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  535. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  536. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  537. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  538. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  539. package/contracts/components/Component.sol +0 -222
  540. package/contracts/components/Distribution.sol +0 -144
  541. package/contracts/components/IComponent.sol +0 -43
  542. package/contracts/components/IDistributionComponent.sol +0 -47
  543. package/contracts/components/IPoolComponent.sol +0 -70
  544. package/contracts/components/IProductComponent.sol +0 -39
  545. package/contracts/components/Pool.sol +0 -241
  546. package/contracts/components/Product.sol +0 -258
  547. package/contracts/experiment/cloning/Cloner.sol +0 -47
  548. package/contracts/experiment/errors/Require.sol +0 -38
  549. package/contracts/experiment/errors/Revert.sol +0 -44
  550. package/contracts/experiment/inheritance/A.sol +0 -53
  551. package/contracts/experiment/inheritance/B.sol +0 -28
  552. package/contracts/experiment/inheritance/C.sol +0 -34
  553. package/contracts/experiment/inheritance/IA.sol +0 -13
  554. package/contracts/experiment/inheritance/IB.sol +0 -10
  555. package/contracts/experiment/inheritance/IC.sol +0 -12
  556. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  557. package/contracts/experiment/statemachine/ISM.sol +0 -25
  558. package/contracts/experiment/statemachine/SM.sol +0 -57
  559. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  560. package/contracts/experiment/types/TypeA.sol +0 -47
  561. package/contracts/experiment/types/TypeB.sol +0 -29
  562. package/contracts/instance/InstanceAccessManager.sol +0 -298
  563. package/contracts/instance/base/ComponentService.sol +0 -134
  564. package/contracts/instance/base/KeyValueStore.sol +0 -172
  565. package/contracts/instance/module/ISetup.sol +0 -46
  566. package/contracts/instance/module/ITreasury.sol +0 -23
  567. package/contracts/instance/service/BundleService.sol +0 -293
  568. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  569. package/contracts/instance/service/DistributionService.sol +0 -106
  570. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  571. package/contracts/instance/service/IBundleService.sol +0 -44
  572. package/contracts/instance/service/IDistributionService.sol +0 -12
  573. package/contracts/instance/service/IPolicyService.sol +0 -94
  574. package/contracts/instance/service/IPoolService.sol +0 -20
  575. package/contracts/instance/service/IProductService.sol +0 -40
  576. package/contracts/instance/service/PolicyService.sol +0 -538
  577. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  578. package/contracts/instance/service/PoolService.sol +0 -109
  579. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  580. package/contracts/instance/service/ProductService.sol +0 -232
  581. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  582. package/contracts/registry/RegistryAccessManager.sol +0 -216
  583. package/contracts/shared/ContractDeployerLib.sol +0 -72
  584. package/contracts/test/TestFee.sol +0 -25
  585. package/contracts/test/TestRegisterable.sol +0 -18
  586. package/contracts/test/TestRoleId.sol +0 -14
  587. package/contracts/test/TestService.sol +0 -25
  588. package/contracts/test/TestVersion.sol +0 -44
  589. package/contracts/test/TestVersionable.sol +0 -17
  590. package/contracts/test/Usdc.sol +0 -26
  591. package/contracts/types/ChainId.sol +0 -38
  592. package/contracts/types/NumberId.sol +0 -52
  593. package/contracts/types/RoleId.sol +0 -90
  594. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -1,16 +1,21 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
4
6
 
5
- import {NftId, toNftId, zeroNftId} from "../types/NftId.sol";
6
- import {VersionPart} from "../types/Version.sol";
7
- import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, ORACLE, POOL, POLICY, BUNDLE} from "../types/ObjectType.sol";
7
+ import {InitializableCustom} from "../shared/InitializableCustom.sol";
8
8
 
9
- import {ERC165} from "../shared/ERC165.sol";
9
+ import {NftId, NftIdLib} from "../type/NftId.sol";
10
+ import {VersionPart} from "../type/Version.sol";
11
+ import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, STAKING, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
10
12
 
11
13
  import {ChainNft} from "./ChainNft.sol";
12
14
  import {IRegistry} from "./IRegistry.sol";
15
+ import {IRegisterable} from "../shared/IRegisterable.sol";
13
16
  import {ReleaseManager} from "./ReleaseManager.sol";
17
+ import {TokenRegistry} from "./TokenRegistry.sol";
18
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
14
19
 
15
20
  // IMPORTANT
16
21
  // Each NFT minted by registry is accosiated with:
@@ -23,11 +28,12 @@ import {ReleaseManager} from "./ReleaseManager.sol";
23
28
  // 4) state object by regular service (POLICY, BUNDLE, STAKE)
24
29
 
25
30
  contract Registry is
26
- ERC165,
31
+ InitializableCustom,
27
32
  IRegistry
28
33
  {
29
- address public constant NFT_LOCK_ADDRESS = address(0x1);
34
+ address public NFT_LOCK_ADDRESS = address(0x1);
30
35
  uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
36
+ uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
31
37
  string public constant EMPTY_URI = "";
32
38
 
33
39
  mapping(NftId nftId => ObjectInfo info) private _info;
@@ -43,40 +49,64 @@ contract Registry is
43
49
  mapping(ObjectType objectType => mapping(
44
50
  ObjectType parentType => bool)) private _coreObjectCombinations;
45
51
 
46
- NftId private _registryNftId;
47
- ChainNft private _chainNft;
52
+ RegistryAdmin public immutable _admin;
53
+ ChainNft public immutable _chainNft;
48
54
 
49
- ReleaseManager private _releaseManager;
55
+ NftId public immutable _protocolNftId;
56
+ NftId public immutable _registryNftId;
57
+ NftId public _stakingNftId;
58
+
59
+ address public _tokenRegistryAddress;
60
+ address public _stakingAddress;
61
+ ReleaseManager public _releaseManager;
50
62
 
51
63
  modifier onlyRegistryService() {
52
64
  if(!_releaseManager.isActiveRegistryService(msg.sender)) {
53
- revert CallerNotRegistryService();
65
+ revert ErrorRegistryCallerNotRegistryService();
54
66
  }
55
67
  _;
56
68
  }
57
69
 
70
+
58
71
  modifier onlyReleaseManager() {
59
72
  if(msg.sender != address(_releaseManager)) {
60
- revert CallerNotReleaseManager();
73
+ revert ErrorRegistryCallerNotReleaseManager();
61
74
  }
62
75
  _;
63
76
  }
64
77
 
65
- constructor()
66
- {
67
- _releaseManager = ReleaseManager(msg.sender);
68
78
 
79
+ constructor(RegistryAdmin admin)
80
+ InitializableCustom()
81
+ {
82
+ _admin = admin;
69
83
  // deploy NFT
70
84
  _chainNft = new ChainNft(address(this));
71
85
 
72
86
  // initial registry setup
73
- _registerProtocol();
74
- _registerRegistry();
87
+ _protocolNftId = _registerProtocol();
88
+ _registryNftId = _registerRegistry();
75
89
 
76
90
  // set object types and object parent relations
77
91
  _setupValidCoreTypesAndCombinations();
92
+ }
93
+
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()
104
+ {
105
+ _releaseManager = ReleaseManager(releaseManager);
106
+ _tokenRegistryAddress = tokenRegistry;
107
+ _stakingAddress = staking;
78
108
 
79
- _registerInterface(type(IRegistry).interfaceId);
109
+ _stakingNftId = _registerStaking();
80
110
  }
81
111
 
82
112
  function registerService(
@@ -88,7 +118,16 @@ contract Registry is
88
118
  onlyReleaseManager
89
119
  returns(NftId nftId)
90
120
  {
121
+ address service = info.objectAddress;
91
122
  /* must be guaranteed by release manager
123
+ if(service == address(0)) {
124
+ revert();
125
+ }
126
+
127
+ if(version.eqz()) {
128
+ revert();
129
+ }
130
+
92
131
  if(info.objectType != SERVICE()) {
93
132
  revert();
94
133
  }
@@ -98,11 +137,15 @@ contract Registry is
98
137
  info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
99
138
  */
100
139
 
101
- if(_service[version][domain] > address(0)) {
102
- revert ServiceAlreadyRegistered(info.objectAddress);
140
+ if(domain.eqz()) {
141
+ revert ErrorRegistryDomainZero(service);
103
142
  }
104
143
 
105
- _service[version][domain] = info.objectAddress; // nftId;
144
+ if(_service[version][domain] > address(0)) {
145
+ revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
146
+ }
147
+
148
+ _service[version][domain] = service;
106
149
 
107
150
  nftId = _register(info);
108
151
 
@@ -117,23 +160,17 @@ contract Registry is
117
160
  ObjectType objectType = info.objectType;
118
161
  ObjectType parentType = _info[info.parentNftId].objectType;
119
162
 
120
- // TODO do not need it here -> SERVICE is no longer part of _coreContractCombinations
121
- // no service registrations
122
- if(objectType == SERVICE()) {
123
- revert ServiceRegistration();
124
- }
125
-
126
163
  // only valid core types combinations
127
164
  if(info.objectAddress == address(0))
128
165
  {
129
166
  if(_coreObjectCombinations[objectType][parentType] == false) {
130
- revert InvalidTypesCombination(objectType, parentType);
167
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
131
168
  }
132
169
  }
133
170
  else
134
171
  {
135
172
  if(_coreContractCombinations[objectType][parentType] == false) {
136
- revert InvalidTypesCombination(objectType, parentType);
173
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
137
174
  }
138
175
  }
139
176
 
@@ -149,16 +186,15 @@ contract Registry is
149
186
  ObjectType parentType = _info[info.parentNftId].objectType;
150
187
 
151
188
  if(_coreTypes[objectType]) {
152
- revert CoreTypeRegistration();
189
+ revert ErrorRegistryCoreTypeRegistration();
153
190
  }
154
191
 
155
192
  if(
156
-
157
193
  parentType == PROTOCOL() ||
158
194
  parentType == REGISTRY() ||
159
195
  parentType == SERVICE()
160
196
  ) {
161
- revert InvalidTypesCombination(objectType, parentType);
197
+ revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
162
198
  }
163
199
 
164
200
  _register(info);
@@ -170,13 +206,7 @@ contract Registry is
170
206
  return _releaseManager.getInitialVersion();
171
207
  }
172
208
 
173
- // TODO make distinction between active an not yet active version
174
- // need to be thought trough, not yet clear if necessary
175
- // need to answer question: what is the latest version during the upgrade process?
176
- // likely setting up a new gif version does not fit into a single tx
177
- // in this case we might want to have a period where the latest version is
178
- // in the process of being set up while the latest active version is 1 major release smaller
179
- /// @dev latest GIF major version (might not yet be active)
209
+ /// @dev next GIF release version to be released
180
210
  function getNextVersion() external view returns (VersionPart) {
181
211
  return _releaseManager.getNextVersion();
182
212
  }
@@ -190,7 +220,7 @@ contract Registry is
190
220
  return _releaseManager.getReleaseInfo(version);
191
221
  }
192
222
 
193
- function getObjectCount() external view override returns (uint256) {
223
+ function getObjectCount() external view returns (uint256) {
194
224
  return _chainNft.totalSupply();
195
225
  }
196
226
 
@@ -198,11 +228,15 @@ contract Registry is
198
228
  return _registryNftId;
199
229
  }
200
230
 
201
- function getNftId(address object) external view override returns (NftId id) {
231
+ function getProtocolNftId() external view returns (NftId nftId) {
232
+ return _protocolNftId;
233
+ }
234
+
235
+ function getNftId(address object) external view returns (NftId id) {
202
236
  return _nftIdByAddress[object];
203
237
  }
204
238
 
205
- function ownerOf(NftId nftId) public view override returns (address) {
239
+ function ownerOf(NftId nftId) public view returns (address) {
206
240
  return _chainNft.ownerOf(nftId.toInt());
207
241
  }
208
242
 
@@ -210,29 +244,44 @@ contract Registry is
210
244
  return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
211
245
  }
212
246
 
213
- function getObjectInfo(NftId nftId) external view override returns (ObjectInfo memory) {
247
+ function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
214
248
  return _info[nftId];
215
249
  }
216
250
 
217
- function getObjectInfo(address object) external view override returns (ObjectInfo memory) {
251
+ function getObjectInfo(address object) external view returns (ObjectInfo memory) {
218
252
  return _info[_nftIdByAddress[object]];
219
253
  }
220
254
 
221
- function isRegistered(NftId nftId) public view override returns (bool) {
255
+ function isRegistered(NftId nftId) public view returns (bool) {
222
256
  return _info[nftId].objectType.gtz();
223
257
  }
224
258
 
225
- function isRegistered(address object) external view override returns (bool) {
259
+ function isRegistered(address object) external view returns (bool) {
226
260
  return _nftIdByAddress[object].gtz();
227
261
  }
228
262
 
229
- function isRegisteredService(address object) external view override returns (bool) {
263
+ function isRegisteredService(address object) external view returns (bool) {
230
264
  return _info[_nftIdByAddress[object]].objectType == SERVICE();
231
265
  }
232
266
 
233
- function isValidRelease(VersionPart version) external view returns (bool)
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)
234
273
  {
235
- return _releaseManager.isValidRelease(version);
274
+ return _releaseManager.isActiveRelease(version);
275
+ }
276
+
277
+ function getStakingAddress() external view returns (address staking) {
278
+ //return getObjectInfo(_stakingNftId).objectAddress;
279
+ //return _info[_stakingNftId].objectAddress;
280
+ return _stakingAddress;
281
+ }
282
+
283
+ function getTokenRegistryAddress() external view returns (address tokenRegistry) {
284
+ return _tokenRegistryAddress;
236
285
  }
237
286
 
238
287
  function getServiceAddress(
@@ -240,20 +289,43 @@ contract Registry is
240
289
  VersionPart releaseVersion
241
290
  ) external view returns (address service)
242
291
  {
243
- // TODO how can I get service address while release is not validated/activated ?!! -> user will check validity of release on its own
244
- //if(_releaseManager.isValidRelease(releaseVersion)) {
245
- service = _service[releaseVersion][serviceDomain];
246
- //}
292
+ service = _service[releaseVersion][serviceDomain];
293
+ }
294
+
295
+ function getReleaseAccessManagerAddress(VersionPart version) external view returns (address) {
296
+ return address(_releaseManager.getReleaseAccessManager(version));
297
+ }
298
+
299
+ function getReleaseManagerAddress() external view returns (address) {
300
+ return address(_releaseManager);
301
+ }
302
+
303
+ function getChainNftAddress() external view override returns (address) {
304
+ return address(_chainNft);
247
305
  }
248
306
 
249
- function getChainNft() external view override returns (ChainNft) {
250
- return _chainNft;
307
+ function getRegistryAdminAddress() external view returns (address) {
308
+ return address(_admin);
309
+ }
310
+
311
+ function getAuthority() external view returns (address) {
312
+ return _admin.authority();
251
313
  }
252
314
 
253
315
  function getOwner() public view returns (address owner) {
254
316
  return ownerOf(address(this));
255
317
  }
256
318
 
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;
327
+ }
328
+
257
329
  // Internals
258
330
 
259
331
  /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
@@ -263,60 +335,76 @@ contract Registry is
263
335
  returns(NftId nftId)
264
336
  {
265
337
  ObjectType objectType = info.objectType;
338
+ bool isInterceptor = info.isInterceptor;
339
+ address objectAddress = info.objectAddress;
340
+ address owner = info.initialOwner;
341
+
266
342
  NftId parentNftId = info.parentNftId;
267
343
  ObjectInfo memory parentInfo = _info[parentNftId];
268
344
  ObjectType parentType = parentInfo.objectType; // see function header
269
345
  address parentAddress = parentInfo.objectAddress;
270
346
 
271
347
  // parent is contract -> need to check? -> check before minting
348
+ // special case: staking: to protocol possible as well
272
349
  // special case: global registry nft as parent when not on mainnet -> global registry address is 0
273
350
  // special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
274
351
  // special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
275
- if(parentAddress == address(0)) {
276
- revert ZeroParentAddress();
352
+ if(objectType != STAKE()) {
353
+ if(parentAddress == address(0)) {
354
+ revert ErrorRegistryParentAddressZero();
355
+ }
277
356
  }
278
357
 
279
- address interceptor = _getInterceptor(info.isInterceptor, info.objectAddress, parentInfo.isInterceptor, parentAddress);
358
+ address interceptorAddress = _getInterceptor(
359
+ isInterceptor,
360
+ objectType,
361
+ objectAddress,
362
+ parentInfo.isInterceptor,
363
+ parentAddress);
280
364
 
281
- // TODO does external call
282
- // compute next nftId, do all checks and stores, mint() at most end...
283
- uint256 mintedTokenId = _chainNft.mint(
284
- info.initialOwner,
285
- interceptor,
286
- EMPTY_URI);
287
- nftId = toNftId(mintedTokenId);
288
-
289
- // TODO move nftId out of info struct
290
- // getters by nftId -> return struct without nftId
291
- // getters by address -> return nftId AND struct
365
+ uint256 tokenId = _chainNft.getNextTokenId();
366
+ nftId = NftIdLib.toNftId(tokenId);
292
367
  info.nftId = nftId;
293
368
  _info[nftId] = info;
294
369
 
295
- if(info.objectAddress > address(0))
296
- {
297
- address contractAddress = info.objectAddress;
298
-
299
- if(_nftIdByAddress[contractAddress].gtz()) {
300
- revert ContractAlreadyRegistered(contractAddress);
370
+ if(objectAddress > address(0)) {
371
+ if(_nftIdByAddress[objectAddress].gtz()) {
372
+ revert ErrorRegistryContractAlreadyRegistered(objectAddress);
301
373
  }
302
374
 
303
- _nftIdByAddress[contractAddress] = nftId;
375
+ _nftIdByAddress[objectAddress] = nftId;
304
376
  }
305
377
 
306
- emit LogRegistration(nftId, parentNftId, objectType, info.isInterceptor, info.objectAddress, info.initialOwner);
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);
307
387
  }
308
388
 
309
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:
310
392
  function _getInterceptor(
311
393
  bool isInterceptor,
394
+ ObjectType objectType,
312
395
  address objectAddress,
313
396
  bool parentIsInterceptor,
314
397
  address parentObjectAddress
315
398
  )
316
399
  internal
317
- view
400
+ pure
318
401
  returns (address interceptor)
319
402
  {
403
+ // no intercepting calls for stakes
404
+ if (objectType == STAKE()) {
405
+ return address(0);
406
+ }
407
+
320
408
  if (objectAddress == address(0)) {
321
409
  if (parentIsInterceptor) {
322
410
  return parentObjectAddress;
@@ -337,13 +425,14 @@ contract Registry is
337
425
  /// @dev protocol registration used to anchor the dip ecosystem relations
338
426
  function _registerProtocol()
339
427
  private
428
+ returns (NftId protocolNftId)
340
429
  {
341
430
  uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
342
- NftId protocolNftId = toNftId(protocolId);
431
+ protocolNftId = NftIdLib.toNftId(protocolId);
343
432
 
344
433
  _info[protocolNftId] = ObjectInfo({
345
434
  nftId: protocolNftId,
346
- parentNftId: zeroNftId(),
435
+ parentNftId: NftIdLib.zero(),
347
436
  objectType: PROTOCOL(),
348
437
  isInterceptor: false,
349
438
  objectAddress: address(0),
@@ -358,19 +447,20 @@ contract Registry is
358
447
  /// might also register the global registry when not on mainnet
359
448
  function _registerRegistry()
360
449
  private
450
+ returns (NftId registryNftId)
361
451
  {
362
452
  uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
363
- NftId registryNftId = toNftId(registryId);
453
+ registryNftId = NftIdLib.toNftId(registryId);
364
454
  NftId parentNftId;
365
455
 
366
456
  if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
367
457
  {// we're not the global registry
368
458
  _registerGlobalRegistry();
369
- parentNftId = toNftId(_chainNft.GLOBAL_REGISTRY_ID());
459
+ parentNftId = NftIdLib.toNftId(_chainNft.GLOBAL_REGISTRY_ID());
370
460
  }
371
461
  else
372
462
  {// we are global registry
373
- parentNftId = toNftId(_chainNft.PROTOCOL_NFT_ID());
463
+ parentNftId = _protocolNftId;
374
464
  }
375
465
 
376
466
  _info[registryNftId] = ObjectInfo({
@@ -382,9 +472,8 @@ contract Registry is
382
472
  initialOwner: NFT_LOCK_ADDRESS,
383
473
  data: ""
384
474
  });
385
- _nftIdByAddress[address(this)] = registryNftId;
386
- _registryNftId = registryNftId;
387
475
 
476
+ _nftIdByAddress[address(this)] = registryNftId;
388
477
  _chainNft.mint(NFT_LOCK_ADDRESS, registryId);
389
478
  }
390
479
 
@@ -393,11 +482,11 @@ contract Registry is
393
482
  private
394
483
  {
395
484
  uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
396
- NftId globalRegistryNftId = toNftId(globalRegistryId);
485
+ NftId globalRegistryNftId = NftIdLib.toNftId(globalRegistryId);
397
486
 
398
487
  _info[globalRegistryNftId] = ObjectInfo({
399
488
  nftId: globalRegistryNftId,
400
- parentNftId: toNftId(_chainNft.PROTOCOL_NFT_ID()),
489
+ parentNftId: NftIdLib.toNftId(_chainNft.PROTOCOL_NFT_ID()),
401
490
  objectType: REGISTRY(),
402
491
  isInterceptor: false,
403
492
  objectAddress: address(0),
@@ -407,13 +496,36 @@ contract Registry is
407
496
 
408
497
  _chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
409
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
+ }
410
522
 
411
523
  /// @dev defines which object - parent types relations are allowed to register
412
524
  // IMPORTANT:
413
525
  // 1) EACH object type MUST have only one parent type across ALL mappings
414
526
  // 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
415
527
  // 3) DO NOT use REGISTRY as object type
416
- // 2) DO NOT use PROTOCOL and "zeroObjectType"
528
+ // 2) DO NOT use PROTOCOL and "ObjectTypeLib.zero"
417
529
  function _setupValidCoreTypesAndCombinations()
418
530
  private
419
531
  {
@@ -424,29 +536,41 @@ contract Registry is
424
536
  _coreTypes[PRODUCT()] = true;
425
537
  _coreTypes[POOL()] = true;
426
538
  _coreTypes[DISTRIBUTION()] = true;
539
+ _coreTypes[DISTRIBUTOR()] = true;
540
+ _coreTypes[ORACLE()] = true;
427
541
  _coreTypes[POLICY()] = true;
428
542
  _coreTypes[BUNDLE()] = true;
543
+ _coreTypes[STAKING()] = true;
429
544
  _coreTypes[STAKE()] = true;
430
-
431
- // registry as parent, ONLY registry owner
432
- //_coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
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
433
559
  _coreContractCombinations[TOKEN()][REGISTRY()] = true;
434
560
  //_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
435
-
436
- // registry as parent, ONLY approved
437
561
  _coreContractCombinations[INSTANCE()][REGISTRY()] = true;
438
562
 
439
- // instance as parent, ONLY approved
440
563
  _coreContractCombinations[PRODUCT()][INSTANCE()] = true;
441
564
  _coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
442
565
  _coreContractCombinations[ORACLE()][INSTANCE()] = true;
443
566
  _coreContractCombinations[POOL()][INSTANCE()] = true;
444
567
 
445
- // product as parent, ONLY approved
568
+ _coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
446
569
  _coreObjectCombinations[POLICY()][PRODUCT()] = true;
447
-
448
- // pool as parent, ONLY approved
449
570
  _coreObjectCombinations[BUNDLE()][POOL()] = true;
450
- _coreObjectCombinations[STAKE()][POOL()] = true;
571
+
572
+ // staking
573
+ _coreObjectCombinations[STAKE()][PROTOCOL()] = true;
574
+ _coreObjectCombinations[STAKE()][INSTANCE()] = true;
451
575
  }
452
576
  }