@etherisc/gif-next 0.0.2-d5522f6-712 → 0.0.2-d59d51e-694

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