@etherisc/gif-next 0.0.2-a5cf039-146 → 0.0.2-a6ce659-551

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 (614) hide show
  1. package/README.md +94 -16
  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 +1378 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -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 +827 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +709 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +560 -246
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +494 -146
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +432 -2978
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +726 -308
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +701 -205
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +404 -78
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3597 -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/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +31 -8
  36. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  38. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  40. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
  42. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -112
  44. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  46. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  47. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  48. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  50. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  51. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  52. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  53. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
  54. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  55. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  56. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  57. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  58. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  60. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  61. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  62. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  64. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  65. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  66. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  68. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  69. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +310 -358
  70. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  71. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
  72. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  73. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  74. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  75. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  76. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  77. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  78. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  79. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  80. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  81. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  82. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  83. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  84. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  85. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  86. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  88. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  89. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +236 -190
  90. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  91. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  92. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  93. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -0
  94. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  95. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +266 -278
  96. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  97. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
  98. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  99. package/artifacts/contracts/{instance/base/IService.sol/IService.json → product/IProductService.sol/IProductService.json} +145 -166
  100. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  101. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  102. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  104. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  105. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  106. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  107. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  108. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  109. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  110. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  111. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  112. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  113. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  114. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  115. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  116. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  117. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +521 -59
  118. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  119. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +451 -200
  120. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  121. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  122. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  123. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  124. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  125. package/artifacts/contracts/registry/Registry.sol/Registry.json +828 -311
  126. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  127. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
  128. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  129. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +530 -339
  130. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  131. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +346 -129
  132. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  133. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  134. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  135. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1211 -0
  136. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  137. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  138. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  139. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +206 -0
  140. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  141. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  142. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  143. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
  144. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  145. package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → shared/AccessManagerCustom.sol/AccessManagerCustom.json} +122 -11
  146. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  147. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
  148. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  149. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
  150. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  151. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
  152. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  153. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
  154. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  155. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  156. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  157. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
  158. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  159. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
  160. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  161. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +235 -164
  162. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  163. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  164. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  165. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
  166. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  167. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  168. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  169. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  170. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  171. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  172. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  173. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  174. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  175. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  176. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  177. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  178. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  179. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  180. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  181. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  182. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  183. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  184. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  185. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
  186. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  187. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  188. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  189. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IService.sol/IService.json} +107 -75
  190. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  191. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  192. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  193. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  194. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  195. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  196. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  197. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +547 -0
  198. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  199. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  200. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  201. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  202. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  203. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
  204. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  205. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  206. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  207. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -62
  208. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  209. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
  210. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  211. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  212. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  213. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/Service.sol/Service.json} +198 -172
  214. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  215. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  216. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  217. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  218. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  220. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  221. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  222. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  223. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  224. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  225. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  226. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  227. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  228. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  230. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  232. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  234. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  236. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  238. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  240. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  241. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  242. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  243. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  244. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  245. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  246. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  248. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  250. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  251. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  252. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  254. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  255. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  256. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  258. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  259. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  260. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
  262. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  264. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  266. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  268. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  269. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  270. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
  272. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  274. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  276. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  278. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  279. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  280. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  282. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  284. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  285. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  286. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  287. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  288. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  289. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  290. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  292. package/contracts/distribution/Distribution.sol +261 -0
  293. package/contracts/distribution/DistributionService.sol +297 -0
  294. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  295. package/contracts/distribution/IDistributionComponent.sol +66 -0
  296. package/contracts/distribution/IDistributionService.sol +81 -0
  297. package/contracts/instance/BundleManager.sol +126 -0
  298. package/contracts/instance/IInstance.sol +75 -16
  299. package/contracts/instance/IInstanceService.sol +89 -9
  300. package/contracts/instance/Instance.sol +183 -362
  301. package/contracts/instance/InstanceAdmin.sol +331 -0
  302. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  303. package/contracts/instance/InstanceReader.sol +172 -70
  304. package/contracts/instance/InstanceService.sol +385 -73
  305. package/contracts/instance/InstanceServiceManager.sol +12 -24
  306. package/contracts/instance/InstanceStore.sol +272 -0
  307. package/contracts/instance/base/BalanceStore.sol +123 -0
  308. package/contracts/instance/base/Cloneable.sol +28 -0
  309. package/contracts/instance/base/ObjectCounter.sol +21 -0
  310. package/contracts/instance/base/ObjectLifecycle.sol +99 -0
  311. package/contracts/instance/base/ObjectManager.sol +80 -0
  312. package/contracts/instance/module/IAccess.sol +29 -21
  313. package/contracts/instance/module/IBundle.sol +8 -7
  314. package/contracts/instance/module/IComponents.sol +52 -0
  315. package/contracts/instance/module/IDistribution.sol +7 -4
  316. package/contracts/instance/module/IPolicy.sol +56 -17
  317. package/contracts/instance/module/IRisk.sol +1 -1
  318. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  319. package/contracts/oracle/IOracle.sol +20 -0
  320. package/contracts/oracle/IOracleComponent.sol +32 -0
  321. package/contracts/oracle/IOracleService.sol +65 -0
  322. package/contracts/oracle/Oracle.sol +145 -0
  323. package/contracts/oracle/OracleService.sol +278 -0
  324. package/contracts/oracle/OracleServiceManager.sol +42 -0
  325. package/contracts/pool/BundleService.sol +296 -0
  326. package/contracts/pool/BundleServiceManager.sol +42 -0
  327. package/contracts/pool/IBundleService.sol +106 -0
  328. package/contracts/pool/IPoolComponent.sol +112 -0
  329. package/contracts/pool/IPoolService.sol +150 -0
  330. package/contracts/pool/Pool.sol +299 -0
  331. package/contracts/pool/PoolService.sol +452 -0
  332. package/contracts/pool/PoolServiceManager.sol +42 -0
  333. package/contracts/product/ApplicationService.sol +254 -0
  334. package/contracts/product/ApplicationServiceManager.sol +38 -0
  335. package/contracts/product/ClaimService.sol +442 -0
  336. package/contracts/product/ClaimServiceManager.sol +38 -0
  337. package/contracts/product/IApplicationService.sol +62 -0
  338. package/contracts/product/IClaimService.sol +99 -0
  339. package/contracts/product/IPolicyService.sol +78 -0
  340. package/contracts/product/IPricingService.sol +39 -0
  341. package/contracts/product/IProductComponent.sol +42 -0
  342. package/contracts/product/IProductService.sol +33 -0
  343. package/contracts/product/PolicyService.sol +475 -0
  344. package/contracts/product/PolicyServiceManager.sol +42 -0
  345. package/contracts/product/PricingService.sol +300 -0
  346. package/contracts/product/PricingServiceManager.sol +42 -0
  347. package/contracts/product/Product.sol +377 -0
  348. package/contracts/product/ProductService.sol +124 -0
  349. package/contracts/product/ProductServiceManager.sol +42 -0
  350. package/contracts/registry/ChainNft.sol +15 -0
  351. package/contracts/registry/IRegistry.sol +79 -12
  352. package/contracts/registry/IRegistryService.sol +54 -20
  353. package/contracts/registry/IServiceAuthorization.sol +38 -0
  354. package/contracts/registry/ITransferInterceptor.sol +1 -0
  355. package/contracts/registry/Registry.sol +403 -244
  356. package/contracts/registry/RegistryAdmin.sol +333 -0
  357. package/contracts/registry/RegistryService.sol +124 -297
  358. package/contracts/registry/RegistryServiceManager.sol +25 -36
  359. package/contracts/registry/ReleaseLifecycle.sol +28 -0
  360. package/contracts/registry/ReleaseManager.sol +523 -0
  361. package/contracts/registry/ServiceAuthorization.sol +90 -0
  362. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  363. package/contracts/registry/TokenRegistry.sol +315 -0
  364. package/contracts/shared/AccessAdmin.sol +759 -0
  365. package/contracts/{instance/AccessManagerSimple.sol → shared/AccessManagerCustom.sol} +281 -232
  366. package/contracts/shared/AccessManagerExtended.sol +481 -0
  367. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  368. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  369. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  370. package/contracts/shared/Component.sol +281 -0
  371. package/contracts/shared/ComponentService.sol +620 -0
  372. package/contracts/shared/ComponentServiceManager.sol +35 -0
  373. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  374. package/contracts/shared/ERC165.sol +15 -9
  375. package/contracts/shared/IAccessAdmin.sol +168 -0
  376. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  377. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  378. package/contracts/shared/IComponent.sol +70 -0
  379. package/contracts/shared/IComponentService.sol +102 -0
  380. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  381. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  382. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  383. package/contracts/shared/INftOwnable.sol +13 -12
  384. package/contracts/shared/IPolicyHolder.sol +45 -0
  385. package/contracts/shared/IRegisterable.sol +4 -6
  386. package/contracts/shared/IRegistryLinked.sol +11 -0
  387. package/contracts/shared/IService.sol +25 -0
  388. package/contracts/shared/IVersionable.sol +5 -48
  389. package/contracts/shared/InitializableCustom.sol +177 -0
  390. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  391. package/contracts/shared/KeyValueStore.sol +131 -0
  392. package/contracts/shared/Lifecycle.sol +67 -0
  393. package/contracts/shared/NftIdSetManager.sol +65 -0
  394. package/contracts/shared/NftOwnable.sol +60 -89
  395. package/contracts/shared/PolicyHolder.sol +102 -0
  396. package/contracts/shared/ProxyManager.sol +131 -26
  397. package/contracts/shared/Registerable.sol +26 -40
  398. package/contracts/shared/RegistryLinked.sol +43 -0
  399. package/contracts/shared/Service.sol +83 -0
  400. package/contracts/shared/TokenHandler.sol +37 -6
  401. package/contracts/shared/Versionable.sol +4 -92
  402. package/contracts/staking/IStaking.sol +168 -0
  403. package/contracts/staking/IStakingService.sol +153 -0
  404. package/contracts/staking/StakeManagerLib.sol +231 -0
  405. package/contracts/staking/Staking.sol +513 -0
  406. package/contracts/staking/StakingLifecycle.sol +24 -0
  407. package/contracts/staking/StakingManager.sol +54 -0
  408. package/contracts/staking/StakingReader.sol +187 -0
  409. package/contracts/staking/StakingService.sol +411 -0
  410. package/contracts/staking/StakingServiceManager.sol +44 -0
  411. package/contracts/staking/StakingStore.sol +615 -0
  412. package/contracts/staking/TargetManagerLib.sol +207 -0
  413. package/contracts/{types → type}/AddressSet.sol +1 -1
  414. package/contracts/type/Amount.sol +128 -0
  415. package/contracts/{types → type}/Blocknumber.sol +21 -3
  416. package/contracts/type/ClaimId.sol +75 -0
  417. package/contracts/{types → type}/DistributorType.sol +2 -2
  418. package/contracts/{types → type}/Fee.sol +33 -23
  419. package/contracts/{types → type}/NftId.sol +21 -15
  420. package/contracts/type/NftIdSet.sol +62 -0
  421. package/contracts/type/ObjectType.sol +241 -0
  422. package/contracts/type/PayoutId.sol +82 -0
  423. package/contracts/{types → type}/Referral.sol +5 -1
  424. package/contracts/type/RequestId.sol +75 -0
  425. package/contracts/{types → type}/RiskId.sol +1 -1
  426. package/contracts/type/RoleId.sol +201 -0
  427. package/contracts/type/Seconds.sol +81 -0
  428. package/contracts/type/Selector.sol +102 -0
  429. package/contracts/{types → type}/StateId.sol +38 -4
  430. package/contracts/type/String.sol +53 -0
  431. package/contracts/{types → type}/Timestamp.sol +23 -14
  432. package/contracts/{types → type}/UFixed.sol +1 -0
  433. package/contracts/{types → type}/Version.sol +6 -2
  434. package/package.json +8 -5
  435. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  436. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  437. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -610
  438. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  439. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -267
  440. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  441. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  442. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  443. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  444. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  445. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  446. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  447. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -774
  448. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  449. package/artifacts/contracts/components/Product.sol/Product.json +0 -754
  450. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  451. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  452. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  453. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  454. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  455. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  456. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  457. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  458. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  459. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  460. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  461. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  462. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  463. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  464. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  465. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  466. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  467. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  468. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  469. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  470. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  471. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  472. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  473. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  474. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  475. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  476. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  477. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  478. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  480. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  482. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  484. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  485. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  486. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  487. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  488. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  489. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  490. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  491. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  492. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  493. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -930
  494. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  495. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  496. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  497. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  498. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  499. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  500. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  501. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  502. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  503. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  504. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  505. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  506. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  507. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  508. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  509. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  510. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  511. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  512. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  513. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  514. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  515. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  516. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  517. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  518. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  519. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  520. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  521. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  522. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  523. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  524. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  525. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  526. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  527. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  528. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  529. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  530. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  531. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  532. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  533. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  534. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  535. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  536. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  537. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  538. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  539. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  540. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  541. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  542. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  543. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  544. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  545. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  546. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  547. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  548. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  549. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  550. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  551. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  552. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  553. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  554. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  555. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  556. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  557. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  558. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  559. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  560. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  561. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  562. package/contracts/components/BaseComponent.sol +0 -86
  563. package/contracts/components/Distribution.sol +0 -166
  564. package/contracts/components/IBaseComponent.sol +0 -24
  565. package/contracts/components/IDistributionComponent.sol +0 -43
  566. package/contracts/components/IPoolComponent.sol +0 -62
  567. package/contracts/components/IProductComponent.sol +0 -35
  568. package/contracts/components/Pool.sol +0 -259
  569. package/contracts/components/Product.sol +0 -297
  570. package/contracts/experiment/cloning/Cloner.sol +0 -47
  571. package/contracts/experiment/errors/Require.sol +0 -38
  572. package/contracts/experiment/errors/Revert.sol +0 -44
  573. package/contracts/experiment/inheritance/A.sol +0 -53
  574. package/contracts/experiment/inheritance/B.sol +0 -28
  575. package/contracts/experiment/inheritance/C.sol +0 -34
  576. package/contracts/experiment/inheritance/IA.sol +0 -13
  577. package/contracts/experiment/inheritance/IB.sol +0 -10
  578. package/contracts/experiment/inheritance/IC.sol +0 -12
  579. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  580. package/contracts/experiment/statemachine/ISM.sol +0 -25
  581. package/contracts/experiment/statemachine/SM.sol +0 -57
  582. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  583. package/contracts/experiment/types/TypeA.sol +0 -47
  584. package/contracts/experiment/types/TypeB.sol +0 -29
  585. package/contracts/instance/AccessManagedSimple.sol +0 -122
  586. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  587. package/contracts/instance/InstanceAccessManager.sol +0 -288
  588. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  589. package/contracts/instance/base/IInstanceBase.sol +0 -23
  590. package/contracts/instance/base/IService.sol +0 -15
  591. package/contracts/instance/base/KeyValueStore.sol +0 -172
  592. package/contracts/instance/base/Lifecycle.sol +0 -100
  593. package/contracts/instance/base/ServiceBase.sol +0 -44
  594. package/contracts/instance/module/ISetup.sol +0 -43
  595. package/contracts/instance/module/ITreasury.sol +0 -23
  596. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  597. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  598. package/contracts/instance/service/IDistributionService.sol +0 -12
  599. package/contracts/instance/service/IPoolService.sol +0 -37
  600. package/contracts/instance/service/IProductService.sol +0 -107
  601. package/contracts/shared/ContractDeployerLib.sol +0 -72
  602. package/contracts/test/TestFee.sol +0 -25
  603. package/contracts/test/TestRegisterable.sol +0 -18
  604. package/contracts/test/TestRoleId.sol +0 -14
  605. package/contracts/test/TestService.sol +0 -26
  606. package/contracts/test/TestToken.sol +0 -26
  607. package/contracts/test/TestVersion.sol +0 -44
  608. package/contracts/test/TestVersionable.sol +0 -17
  609. package/contracts/types/ChainId.sol +0 -38
  610. package/contracts/types/NftIdSet.sol +0 -60
  611. package/contracts/types/NumberId.sol +0 -52
  612. package/contracts/types/ObjectType.sol +0 -152
  613. package/contracts/types/RoleId.sol +0 -82
  614. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -1,265 +1,167 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
4
  import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
6
- import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
7
- import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+ // import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
8
6
 
9
7
  import {IRegistry} from "./IRegistry.sol";
10
8
  import {IInstance} from "../instance/IInstance.sol";
11
9
 
12
- import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
13
- // import {IComponent, IComponentModule} from "../../contracts/instance/module/component/IComponent.sol";
14
- // import {IPool} from "../../contracts/instance/module/pool/IPoolModule.sol";
15
- import {IBaseComponent} from "../../contracts/components/IBaseComponent.sol";
16
- import {IPoolComponent} from "../../contracts/components/IPoolComponent.sol";
17
- import {IProductComponent} from "../../contracts/components/IProductComponent.sol";
18
- import {IDistributionComponent} from "../../contracts/components/IDistributionComponent.sol";
10
+ import {IComponent} from "../../contracts/shared/IComponent.sol";
11
+ import {IPoolComponent} from "../../contracts/pool/IPoolComponent.sol";
12
+ import {IProductComponent} from "../../contracts/product/IProductComponent.sol";
13
+ import {IDistributionComponent} from "../../contracts/distribution/IDistributionComponent.sol";
19
14
 
20
15
  import {IVersionable} from "../../contracts/shared/IVersionable.sol";
21
16
  import {Versionable} from "../../contracts/shared/Versionable.sol";
22
17
  import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
23
18
 
24
- import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/types/RoleId.sol";
25
- import {ObjectType, REGISTRY, TOKEN, SERVICE, PRODUCT, ORACLE, POOL, TOKEN, INSTANCE, DISTRIBUTION, POLICY, BUNDLE} from "../../contracts/types/ObjectType.sol";
26
- import {StateId, ACTIVE, PAUSED} from "../../contracts/types/StateId.sol";
27
- import {NftId, NftIdLib, zeroNftId} from "../../contracts/types/NftId.sol";
28
- import {Fee, FeeLib} from "../../contracts/types/Fee.sol";
29
- import {Version, VersionPart, VersionLib} from "../../contracts/types/Version.sol";
19
+ import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/type/RoleId.sol";
20
+ import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE, STAKING, PRICE} from "../../contracts/type/ObjectType.sol";
21
+ import {StateId, ACTIVE, PAUSED} from "../../contracts/type/StateId.sol";
22
+ import {NftId, NftIdLib} from "../../contracts/type/NftId.sol";
23
+ import {Fee, FeeLib} from "../../contracts/type/Fee.sol";
24
+ import {Version, VersionPart, VersionLib} from "../../contracts/type/Version.sol";
30
25
 
31
- import {ServiceBase} from "../../contracts/instance/base/ServiceBase.sol";
32
- import {IService} from "../../contracts/instance/base/IService.sol";
26
+ import {Service} from "../shared/Service.sol";
27
+ import {IService} from "../shared/IService.sol";
33
28
  import {IRegistryService} from "./IRegistryService.sol";
34
29
  import {Registry} from "./Registry.sol";
35
- import {ChainNft} from "./ChainNft.sol";
36
30
 
37
31
  contract RegistryService is
38
- AccessManagedUpgradeable,
39
- ServiceBase,
32
+ Service,
40
33
  IRegistryService
41
34
  {
42
35
  using NftIdLib for NftId;
43
36
 
44
- error SelfRegistration();
45
- error NotRegistryOwner();
46
-
47
- error NotToken();
48
- error NotService();
49
- error NotInstance();
50
- error NotProduct();
51
- error NotPool();
52
- error NotDistribution();
53
-
54
- error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
55
- error NotRegisterableOwner(address expectedOwner);
56
- error RegisterableOwnerIsZero();
57
- error RegisterableOwnerIsRegistered();
58
- error InvalidInitialOwner(address initialOwner);
59
- error InvalidAddress(address registerableAddress);
60
-
61
-
62
- // Initial value for constant variable has to be compile-time constant
63
- // TODO define types as constants?
64
- //ObjectType public constant SERVICE_TYPE = REGISTRY();
65
- string public constant NAME = "RegistryService";
66
-
67
37
  // TODO update to real hash when registry is stable
68
38
  bytes32 public constant REGISTRY_CREATION_CODE_HASH = bytes32(0);
69
39
 
70
- address public constant NFT_LOCK_ADDRESS = address(0x1);
71
-
72
- /// @dev
73
- // msg.sender - ONLY registry owner
74
- // CAN NOT register itself
75
- // CAN NOT register IRegisterable address
76
- // CAN register ONLY valid object-parent types combinations for TOKEN
77
- // IMPORTANT: MUST NOT call untrusted contract inbetween calls to registry/instance (trusted contracts)
78
- // motivation: registry/instance state may change during external call
79
- // TODO it may be usefull to have transferable token nft in order to delist token, make it invalid for new beginings
80
- // TODO: MUST prohibit registration of precompiles addresses
81
- function registerToken(address tokenAddress)
82
- external
83
- returns(NftId nftId)
84
- {
85
- if(msg.sender == tokenAddress) {
86
- revert SelfRegistration();
87
- }
88
-
89
- // MUST not revert if no ERC165 support
90
- if(tokenAddress.code.length == 0 ||
91
- ERC165Checker.supportsInterface(tokenAddress, type(IRegisterable).interfaceId)) {
92
- revert NotToken();
93
- }
94
-
95
- NftId registryNftId = _registry.getNftId(address(_registry));
40
+ // from Versionable
96
41
 
97
- if(msg.sender != _registry.ownerOf(registryNftId)) {
98
- revert NotRegistryOwner();
99
- }
42
+ /// @dev top level initializer
43
+ function _initialize(
44
+ address owner,
45
+ bytes memory data
46
+ )
47
+ internal
48
+ virtual override
49
+ initializer()
50
+ {
51
+ (
52
+ address registryAddress,
53
+ address initialAuthority
54
+ ) = abi.decode(data, (address, address));
100
55
 
101
- IRegistry.ObjectInfo memory info = IRegistry.ObjectInfo(
102
- zeroNftId(), // any value
103
- registryNftId, // parent nft id
104
- TOKEN(),
105
- false, // isInterceptor
106
- tokenAddress,
107
- NFT_LOCK_ADDRESS,
108
- "" // any value
109
- );
110
-
111
- nftId = _registry.register(info);
56
+ initializeService(registryAddress, initialAuthority, owner);
57
+ registerInterface(type(IRegistryService).interfaceId);
112
58
  }
113
59
 
114
- /// @dev
115
- // msg.sender - ONLY registry owner
116
- // CAN NOT register itself
117
- // CAN register ONLY valid object-parent types combinations for SERVICE
118
- // CAN register ONLY IRegisterable address he owns
119
- // IMPORTANT: MUST NOT check owner before calling external contract
120
- function registerService(IService service)
121
- external
122
- // TODO restrict access - registryService.registerService must use accessmanager for checking permissions as
123
- // services are not always owned by registry owner - actually only registry service is owned by registry owner
124
60
 
61
+ function registerStaking(IRegisterable staking, address owner)
62
+ external
63
+ virtual
64
+ restricted()
125
65
  returns(
126
- IRegistry.ObjectInfo memory info,
127
- bytes memory data
128
- )
66
+ IRegistry.ObjectInfo memory info
67
+ )
129
68
  {
130
-
131
- // CAN revert if no ERC165 support -> will revert with empty message
132
- if(!service.supportsInterface(type(IService).interfaceId)) {
133
- revert NotService();
134
- }
135
-
136
- (
137
- info,
138
- data
139
- ) = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
140
-
141
- info.nftId = _registry.register(info);
142
- service.linkToRegisteredNftId();
143
- return (
144
- info,
145
- data
146
- );
69
+ info = _getAndVerifyContractInfo(staking, STAKING(), owner);
70
+ info.nftId = getRegistry().register(info);
147
71
  }
148
72
 
149
- // If msg.sender is approved service:
150
- // 1) add owner arg (service MUST pass it's msg.sender as owner)
151
- // 2) check service allowance
152
- // 3) comment self registrstion check
153
- //function registerInstance(IRegisterable instance, address owner)
154
- function registerInstance(IRegisterable instance)
73
+
74
+ function registerInstance(IRegisterable instance, address owner)
155
75
  external
76
+ virtual
77
+ restricted
156
78
  returns(
157
- IRegistry.ObjectInfo memory info,
158
- bytes memory data
79
+ IRegistry.ObjectInfo memory info
159
80
  )
160
81
  {
161
82
  if(!instance.supportsInterface(type(IInstance).interfaceId)) {
162
- revert NotInstance();
83
+ revert ErrorRegistryServiceNotInstance(address(instance));
163
84
  }
164
85
 
165
- (
166
- info,
167
- data
168
- ) = _getAndVerifyContractInfo(instance, INSTANCE(), msg.sender);
86
+ info = _getAndVerifyContractInfo(instance, INSTANCE(), owner);
87
+ info.nftId = getRegistry().register(info);
169
88
 
170
- info.nftId = _registry.register(info);
171
89
  instance.linkToRegisteredNftId(); // asume safe
172
-
173
- return (
174
- info,
175
- data
176
- );
177
90
  }
178
91
 
179
- function registerProduct(IBaseComponent product, address owner)
92
+ function registerProduct(IComponent product, address owner)
180
93
  external
181
94
  restricted
182
95
  returns(
183
- IRegistry.ObjectInfo memory info,
184
- bytes memory data
96
+ IRegistry.ObjectInfo memory info
185
97
  )
186
98
  {
187
99
  // CAN revert if no ERC165 support -> will revert with empty message
188
100
  if(!product.supportsInterface(type(IProductComponent).interfaceId)) {
189
- revert NotProduct();
101
+ revert ErrorRegistryServiceNotProduct(address(product));
190
102
  }
191
103
 
192
- (
193
- info,
194
- data
195
- ) = _getAndVerifyContractInfo(product, PRODUCT(), owner);
196
-
197
- NftId serviceNftId = _registry.getNftId(msg.sender);
104
+ info = _getAndVerifyContractInfo(product, PRODUCT(), owner);
105
+ info.nftId = getRegistry().register(info);
106
+ }
198
107
 
199
- info.nftId = _registry.register(info);
200
- // TODO unsafe, let component or its owner derive nftId latter, when state assumptions and modifications of GIF contracts are finished
201
- product.linkToRegisteredNftId();
108
+ function registerComponent(
109
+ IComponent component,
110
+ ObjectType objectType,
111
+ address initialOwner
112
+ )
113
+ external
114
+ restricted
115
+ returns(
116
+ IRegistry.ObjectInfo memory info
117
+ )
118
+ {
119
+ // CAN revert if no ERC165 support -> will revert with empty message
120
+ if(!component.supportsInterface(type(IComponent).interfaceId)) {
121
+ revert ErrorRegistryServiceNotComponent(address(component));
122
+ }
202
123
 
203
- return (
204
- info,
205
- data
206
- );
124
+ info = _getAndVerifyContractInfo(component, objectType, initialOwner);
125
+ info.nftId = getRegistry().register(info);
207
126
  }
208
127
 
209
- function registerPool(IBaseComponent pool, address owner)
128
+ function registerPool(IComponent pool, address owner)
210
129
  external
211
130
  restricted
212
131
  returns(
213
- IRegistry.ObjectInfo memory info,
214
- bytes memory data
132
+ IRegistry.ObjectInfo memory info
215
133
  )
216
134
  {
217
135
  if(!pool.supportsInterface(type(IPoolComponent).interfaceId)) {
218
- revert NotPool();
136
+ revert ErrorRegistryServiceNotPool(address(pool));
219
137
  }
220
138
 
221
- (
222
- info,
223
- data
224
- ) = _getAndVerifyContractInfo(pool, POOL(), owner);
225
-
226
- NftId serviceNftId = _registry.getNftId(msg.sender);
227
-
228
- info.nftId = _registry.register(info);
229
- pool.linkToRegisteredNftId();
230
-
231
- return (
232
- info,
233
- data
234
- );
139
+ info = _getAndVerifyContractInfo(pool, POOL(), owner);
140
+ info.nftId = getRegistry().register(info);
235
141
  }
236
142
 
237
- function registerDistribution(IBaseComponent distribution, address owner)
143
+ function registerDistribution(IComponent distribution, address owner)
238
144
  external
239
145
  restricted
240
146
  returns(
241
- IRegistry.ObjectInfo memory info,
242
- bytes memory data
147
+ IRegistry.ObjectInfo memory info
243
148
  )
244
149
  {
245
150
  if(!distribution.supportsInterface(type(IDistributionComponent).interfaceId)) {
246
- revert NotDistribution();
151
+ revert ErrorRegistryServiceNotDistribution(address(distribution));
247
152
  }
248
153
 
249
- (
250
- info,
251
- data
252
- ) = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
253
-
254
- NftId serviceNftId = _registry.getNftId(msg.sender);
255
-
256
- info.nftId = _registry.register(info);
257
- distribution.linkToRegisteredNftId();
154
+ info = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
155
+ info.nftId = getRegistry().register(info);
156
+ }
258
157
 
259
- return (
260
- info,
261
- data
262
- );
158
+ function registerDistributor(IRegistry.ObjectInfo memory info)
159
+ external
160
+ restricted
161
+ returns(NftId nftId)
162
+ {
163
+ _verifyObjectInfo(info, DISTRIBUTOR());
164
+ nftId = getRegistry().register(info);
263
165
  }
264
166
 
265
167
  function registerPolicy(IRegistry.ObjectInfo memory info)
@@ -267,11 +169,8 @@ contract RegistryService is
267
169
  restricted
268
170
  returns(NftId nftId)
269
171
  {
270
- NftId senderNftId = _registry.getNftId(msg.sender);
271
-
272
172
  _verifyObjectInfo(info, POLICY());
273
-
274
- nftId = _registry.register(info);
173
+ nftId = getRegistry().register(info);
275
174
  }
276
175
 
277
176
  function registerBundle(IRegistry.ObjectInfo memory info)
@@ -279,161 +178,89 @@ contract RegistryService is
279
178
  restricted
280
179
  returns(NftId nftId)
281
180
  {
282
-
283
- NftId senderNftId = _registry.getNftId(msg.sender);
284
-
285
181
  _verifyObjectInfo(info, BUNDLE());
286
-
287
- nftId = _registry.register(info);
288
- }
289
-
290
-
291
- // From IService
292
- function getName() public pure override(IService, ServiceBase) returns(string memory) {
293
- return NAME;
182
+ nftId = getRegistry().register(info);
294
183
  }
295
- //function getType() public pure override(IService, ServiceBase) returns(ObjectType serviceType) {
296
- // return SERVICE_TYPE;
297
- //}
298
-
299
-
300
- // from Versionable
301
184
 
302
- /// @dev top level initializer
303
- // 1) registry is non upgradeable -> don't need a proxy and uses constructor !
304
- // 2) deploy registry service first -> from its initialization func it is easier to deploy registry then vice versa
305
- // 3) deploy registry -> pass registry service address as constructor argument
306
- // registry is getting instantiated and locked to registry service address forever
307
- function _initialize(
308
- address owner,
309
- bytes memory data
310
- )
311
- internal
312
- initializer
313
- virtual override
185
+ function registerStake(IRegistry.ObjectInfo memory info)
186
+ external
187
+ restricted
188
+ returns(NftId nftId)
314
189
  {
315
- (
316
- address initialAuthority,
317
- bytes memory registryByteCodeWithInitCode
318
- ) = abi.decode(data, (address, bytes));
319
-
320
- __AccessManaged_init(initialAuthority);
321
-
322
- bytes memory encodedConstructorArguments = abi.encode(
323
- owner,
324
- getMajorVersion());
325
-
326
- bytes memory registryCreationCode = ContractDeployerLib.getCreationCode(
327
- registryByteCodeWithInitCode,
328
- encodedConstructorArguments);
329
-
330
- IRegistry registry = IRegistry(ContractDeployerLib.deploy(
331
- registryCreationCode,
332
- REGISTRY_CREATION_CODE_HASH));
333
-
334
- NftId registryNftId = registry.getNftId(address(registry));
335
-
336
- _initializeServiceBase(address(registry), registryNftId, owner);
337
-
338
- // TODO why do registry service proxy need to keep its nftId??? -> no registryServiceNftId checks in implementation
339
- // if they are -> use registry address to obtain owner of registry service nft (works the same with any registerable and(or) implementation)
340
- linkToRegisteredNftId();
341
- _registerInterface(type(IRegistryService).interfaceId);
190
+ _verifyObjectInfo(info, STAKE());
191
+ nftId = getRegistry().register(info);
342
192
  }
343
193
 
344
- // parent check done in registry because of approve()
194
+ // Internal
195
+
345
196
  function _getAndVerifyContractInfo(
346
197
  IRegisterable registerable,
347
198
  ObjectType expectedType, // assume can be valid only
348
- address expectedOwner // assume can be 0
199
+ address expectedOwner // assume can be 0 when given by other service
349
200
  )
350
201
  internal
351
202
  view
352
203
  returns(
353
- IRegistry.ObjectInfo memory info,
354
- bytes memory data
204
+ IRegistry.ObjectInfo memory info
355
205
  )
356
206
  {
357
- (
358
- info,
359
- data
360
- ) = registerable.getInitialInfo();
361
- info.objectAddress = address(registerable);
207
+ info = registerable.getInitialInfo();
208
+
209
+ if(info.objectAddress != address(registerable)) {
210
+ revert ErrorRegistryServiceRegisterableAddressInvalid(registerable, info.objectAddress);
211
+ }
362
212
 
363
213
  if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
364
- revert UnexpectedRegisterableType(expectedType, info.objectType);
214
+ revert ErrorRegistryServiceRegisterableTypeInvalid(registerable, expectedType, info.objectType);
365
215
  }
366
216
 
367
217
  address owner = info.initialOwner;
368
218
 
369
219
  if(owner != expectedOwner) { // registerable owner protection
370
- revert NotRegisterableOwner(expectedOwner);
220
+ revert ErrorRegistryServiceRegisterableOwnerInvalid(registerable, expectedOwner, owner);
371
221
  }
372
222
 
373
223
  if(owner == address(registerable)) {
374
- revert SelfRegistration();
224
+ revert ErrorRegistryServiceRegisterableSelfRegistration(registerable);
375
225
  }
376
226
 
377
227
  if(owner == address(0)) {
378
- revert RegisterableOwnerIsZero();
228
+ revert ErrorRegistryServiceRegisterableOwnerZero(registerable);
379
229
  }
380
230
 
381
231
  if(getRegistry().isRegistered(owner)) {
382
- revert RegisterableOwnerIsRegistered();
232
+ revert ErrorRegistryServiceRegisterableOwnerRegistered(registerable, owner);
383
233
  }
384
-
385
- /*NftId parentNftId = info.parentNftId;
386
- IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
387
-
388
- if(parentInfo.objectType != parentType) { // parent registration + type
389
- revert InvalidParent(parentNftId);
390
- }*/
391
-
392
- return(
393
- info,
394
- data
395
- );
396
234
  }
397
235
 
398
- // parent checks done in registry because of approve()
399
236
  function _verifyObjectInfo(
400
237
  IRegistry.ObjectInfo memory info,
401
- ObjectType objectType
238
+ ObjectType expectedType
402
239
  )
403
240
  internal
404
241
  view
405
242
  {
406
243
  if(info.objectAddress > address(0)) {
407
- revert InvalidAddress(info.objectAddress);
244
+ revert ErrorRegistryServiceObjectAddressNotZero(info.objectType);
408
245
  }
409
246
 
410
- if(
411
- getRegistry().isRegistered(info.initialOwner) ||
412
- info.initialOwner == address(0)) {
413
- // TODO non registered address can register object(e.g. POLICY()) and then transfer associated nft to registered contract
414
- // what are motivations to do so?
415
- // at least registered contract can not register objects by itself, SERVICE,
416
- revert InvalidInitialOwner(info.initialOwner);
247
+ if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
248
+ revert ErrorRegistryServiceObjectTypeInvalid(expectedType, info.objectType);
417
249
  }
418
250
 
419
- // can catch all 3 if check that initialOwner is not registered
420
- /*if(info.initialOwner == msg.sender) {
421
- revert InitialOwnerIsParent();
422
- }
251
+ address owner = info.initialOwner;
423
252
 
424
- if(info.initialOwner == address(this)) {
425
- revert InitialOwnerIsService();
253
+ if(owner == address(0)) {
254
+ revert ErrorRegistryServiceObjectOwnerZero(info.objectType);
426
255
  }
427
256
 
428
- if(info.initialOwner == address(getRegistry())) {
429
- revert InitialOwnerIsRegistry();
430
- }*/
431
-
432
- /*NftId parentNftId = info.parentNftId;
433
- IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
257
+ if(getRegistry().isRegistered(owner)) {
258
+ revert ErrorRegistryServiceObjectOwnerRegistered(info.objectType, owner);
259
+ }
260
+ }
434
261
 
435
- if(parentInfo.objectType != parentType) { // parent registration + type
436
- revert InvalidParent(parentNftId);
437
- }*/
262
+ // From IService
263
+ function _getDomain() internal override pure returns(ObjectType serviceDomain) {
264
+ return REGISTRY();
438
265
  }
439
- }
266
+ }
@@ -1,51 +1,48 @@
1
- // SPDX-License-Identifier: UNLICENSED
1
+ // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
5
-
6
- import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
7
-
8
- import {Registry} from "./Registry.sol";
9
4
  import {IVersionable} from "../shared/IVersionable.sol";
10
5
  import {ProxyManager} from "../shared/ProxyManager.sol";
11
6
  import {RegistryService} from "./RegistryService.sol";
12
7
 
13
-
14
8
  contract RegistryServiceManager is
15
9
  ProxyManager
16
10
  {
17
- bytes32 constant public ACCESS_MANAGER_CREATION_CODE_HASH = 0x0;
11
+ error ErrorRegistryAccessManagerAuthorityZero();
12
+ error ErrorRegistryAccessManagerRegistryZero();
18
13
 
19
- RegistryService private _registryService;
14
+ bytes32 constant public ACCESS_MANAGER_CREATION_CODE_HASH = 0x0;
20
15
 
21
- AccessManager private _accessManager;
16
+ RegistryService private immutable _registryService;
22
17
 
23
18
  /// @dev initializes proxy manager with registry service implementation and deploys registry
24
19
  constructor(
25
- address accessManager
26
- )
27
- ProxyManager()
20
+ address authority, // used by implementation
21
+ address registry, // used by implementation
22
+ bytes32 salt
23
+ )
24
+ ProxyManager(registry)
28
25
  {
29
- _accessManager = AccessManager(accessManager);
30
-
31
- bytes memory initializationData = abi.encode(accessManager, type(Registry).creationCode);
32
-
33
- IVersionable versionable = deploy(
34
- address(new RegistryService()),
35
- initializationData);
26
+ if(authority == address(0)) {
27
+ revert ErrorRegistryAccessManagerAuthorityZero();
28
+ }
29
+
30
+ if(registry == address(0)) {
31
+ revert ErrorRegistryAccessManagerRegistryZero();
32
+ }
33
+
34
+ RegistryService srv = new RegistryService{ salt: salt }();
35
+ bytes memory data = abi.encode(registry, authority);
36
+ IVersionable versionable = deployDetermenistic(
37
+ address(srv),
38
+ data,
39
+ salt);
36
40
 
37
41
  _registryService = RegistryService(address(versionable));
38
-
39
- // link ownership of registry service manager ot nft owner of registry service
40
- _linkToNftOwnable(
41
- address(_registryService.getRegistry()),
42
- address(_registryService));
43
-
44
- // implies that after this constructor call only upgrade functionality is available
45
- _isDeployed = true;
46
42
  }
47
43
 
48
44
  //--- view functions ----------------------------------------------------//
45
+
49
46
  function getRegistryService()
50
47
  external
51
48
  view
@@ -53,12 +50,4 @@ contract RegistryServiceManager is
53
50
  {
54
51
  return _registryService;
55
52
  }
56
-
57
- function getAccessManager()
58
- external
59
- view
60
- returns (AccessManager)
61
- {
62
- return _accessManager;
63
- }
64
53
  }