@etherisc/gif-next 0.0.2-bb7b80e-316 → 0.0.2-bc0a9a8-101

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