@etherisc/gif-next 0.0.2-72dc555-736 → 0.0.2-7340474-070

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 (621) hide show
  1. package/README.md +72 -14
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +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 +435 -701
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +453 -164
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +426 -3013
  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 +649 -336
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +626 -297
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +367 -97
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3598 -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} +38 -2
  36. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  38. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
  40. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  41. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -112
  42. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  44. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  45. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  47. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  48. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  49. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  50. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  51. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
  52. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  53. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  54. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  55. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  56. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  57. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  58. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  60. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  61. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  62. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  63. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  64. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  66. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  67. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +310 -358
  68. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  69. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
  70. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  71. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  72. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  73. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  74. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  75. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  76. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  78. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  79. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  80. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  82. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  83. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  84. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  86. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  87. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +236 -190
  88. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  89. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  90. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  91. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -0
  92. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  93. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +266 -278
  94. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  95. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
  96. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  97. package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → product/IProductService.sol/IProductService.json} +124 -166
  98. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  99. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  100. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  102. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  103. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  104. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  106. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  107. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  108. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  109. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  110. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  112. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  113. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  114. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  115. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +407 -127
  116. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  117. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +395 -219
  118. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +129 -0
  120. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  121. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  122. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  123. package/artifacts/contracts/registry/Registry.sol/Registry.json +601 -180
  124. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  125. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
  126. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  127. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +477 -318
  128. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +337 -129
  130. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  131. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1218 -0
  132. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  133. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +171 -0
  134. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  135. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +187 -0
  136. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  137. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +351 -100
  138. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  139. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
  140. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  141. package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → shared/AccessManagerCustom.sol/AccessManagerCustom.json} +122 -11
  142. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  143. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
  144. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  145. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
  146. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
  148. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  149. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
  150. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  151. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  152. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  153. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
  154. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  155. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
  156. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  157. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +208 -209
  158. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  159. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  160. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
  162. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  163. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  164. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  165. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  166. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  167. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  168. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  169. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  170. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  171. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  172. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  173. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -11
  174. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  175. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  176. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  177. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  178. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  179. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  180. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
  182. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  183. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  184. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  185. package/artifacts/contracts/shared/IService.sol/IService.json +97 -172
  186. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  187. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  188. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  189. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  190. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  191. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  192. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  193. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  194. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  195. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  196. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  197. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  198. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  199. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
  200. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  201. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  202. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  203. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -62
  204. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  205. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
  206. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  207. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  208. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  209. package/artifacts/contracts/shared/Service.sol/Service.json +201 -162
  210. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  211. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  212. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  213. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  214. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  216. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  217. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  218. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  219. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  220. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  221. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  222. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  223. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  224. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  225. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  226. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  227. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  228. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  230. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  232. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2261 -0
  234. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  235. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  236. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  237. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  238. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  239. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  240. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  241. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  242. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  243. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  244. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  245. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  246. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  248. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  249. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  250. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  252. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  253. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  254. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
  256. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  258. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  260. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  262. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  264. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
  266. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  268. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  270. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  272. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  274. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  276. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  278. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  279. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  280. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  281. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  282. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  283. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  284. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  285. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  286. package/contracts/distribution/Distribution.sol +261 -0
  287. package/contracts/distribution/DistributionService.sol +297 -0
  288. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  289. package/contracts/distribution/IDistributionComponent.sol +66 -0
  290. package/contracts/distribution/IDistributionService.sol +81 -0
  291. package/contracts/instance/BundleManager.sol +126 -0
  292. package/contracts/instance/IInstance.sol +72 -26
  293. package/contracts/instance/IInstanceService.sol +82 -15
  294. package/contracts/instance/Instance.sol +182 -362
  295. package/contracts/instance/InstanceAdmin.sol +331 -0
  296. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  297. package/contracts/instance/InstanceReader.sol +167 -81
  298. package/contracts/instance/InstanceService.sol +380 -124
  299. package/contracts/instance/InstanceServiceManager.sol +12 -25
  300. package/contracts/instance/InstanceStore.sol +269 -0
  301. package/contracts/instance/base/BalanceStore.sol +123 -0
  302. package/contracts/instance/base/Cloneable.sol +28 -0
  303. package/contracts/instance/base/ObjectCounter.sol +21 -0
  304. package/contracts/instance/base/ObjectManager.sol +80 -0
  305. package/contracts/instance/module/IAccess.sol +29 -21
  306. package/contracts/instance/module/IBundle.sol +8 -8
  307. package/contracts/instance/module/IComponents.sol +52 -0
  308. package/contracts/instance/module/IDistribution.sol +7 -4
  309. package/contracts/instance/module/IPolicy.sol +56 -17
  310. package/contracts/instance/module/IRisk.sol +1 -1
  311. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  312. package/contracts/oracle/IOracle.sol +20 -0
  313. package/contracts/oracle/IOracleComponent.sol +32 -0
  314. package/contracts/oracle/IOracleService.sol +65 -0
  315. package/contracts/oracle/Oracle.sol +145 -0
  316. package/contracts/oracle/OracleService.sol +278 -0
  317. package/contracts/oracle/OracleServiceManager.sol +42 -0
  318. package/contracts/pool/BundleService.sol +296 -0
  319. package/contracts/pool/BundleServiceManager.sol +42 -0
  320. package/contracts/pool/IBundleService.sol +106 -0
  321. package/contracts/pool/IPoolComponent.sol +112 -0
  322. package/contracts/pool/IPoolService.sol +150 -0
  323. package/contracts/pool/Pool.sol +299 -0
  324. package/contracts/pool/PoolService.sol +452 -0
  325. package/contracts/pool/PoolServiceManager.sol +42 -0
  326. package/contracts/product/ApplicationService.sol +254 -0
  327. package/contracts/product/ApplicationServiceManager.sol +38 -0
  328. package/contracts/product/ClaimService.sol +442 -0
  329. package/contracts/product/ClaimServiceManager.sol +38 -0
  330. package/contracts/product/IApplicationService.sol +62 -0
  331. package/contracts/product/IClaimService.sol +99 -0
  332. package/contracts/product/IPolicyService.sol +78 -0
  333. package/contracts/product/IPricingService.sol +39 -0
  334. package/contracts/product/IProductComponent.sol +42 -0
  335. package/contracts/product/IProductService.sol +33 -0
  336. package/contracts/product/PolicyService.sol +475 -0
  337. package/contracts/product/PolicyServiceManager.sol +42 -0
  338. package/contracts/product/PricingService.sol +300 -0
  339. package/contracts/product/PricingServiceManager.sol +42 -0
  340. package/contracts/product/Product.sol +377 -0
  341. package/contracts/product/ProductService.sol +124 -0
  342. package/contracts/product/ProductServiceManager.sol +42 -0
  343. package/contracts/registry/ChainNft.sol +15 -0
  344. package/contracts/registry/IRegistry.sol +75 -30
  345. package/contracts/registry/IRegistryService.sol +47 -28
  346. package/contracts/registry/IServiceAuthorization.sol +35 -0
  347. package/contracts/registry/ITransferInterceptor.sol +1 -0
  348. package/contracts/registry/Registry.sol +384 -246
  349. package/contracts/registry/RegistryAdmin.sol +333 -0
  350. package/contracts/registry/RegistryService.sol +114 -206
  351. package/contracts/registry/RegistryServiceManager.sol +24 -51
  352. package/contracts/registry/ReleaseManager.sol +527 -0
  353. package/contracts/registry/ServiceAuthorization.sol +86 -0
  354. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  355. package/contracts/registry/TokenRegistry.sol +261 -57
  356. package/contracts/shared/AccessAdmin.sol +759 -0
  357. package/contracts/{instance/AccessManagerSimple.sol → shared/AccessManagerCustom.sol} +281 -232
  358. package/contracts/shared/AccessManagerExtended.sol +481 -0
  359. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  360. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  361. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  362. package/contracts/shared/Component.sol +281 -0
  363. package/contracts/shared/ComponentService.sol +617 -0
  364. package/contracts/shared/ComponentServiceManager.sol +35 -0
  365. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  366. package/contracts/shared/ERC165.sol +15 -13
  367. package/contracts/shared/IAccessAdmin.sol +168 -0
  368. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  369. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  370. package/contracts/shared/IComponent.sol +70 -0
  371. package/contracts/shared/IComponentService.sol +102 -0
  372. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  373. package/contracts/{instance/base → shared}/IKeyValueStore.sol +15 -11
  374. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  375. package/contracts/shared/INftOwnable.sol +13 -12
  376. package/contracts/shared/IPolicyHolder.sol +45 -0
  377. package/contracts/shared/IRegisterable.sol +4 -6
  378. package/contracts/shared/IRegistryLinked.sol +11 -0
  379. package/contracts/shared/IService.sol +15 -5
  380. package/contracts/shared/IVersionable.sol +5 -48
  381. package/contracts/shared/InitializableCustom.sol +177 -0
  382. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  383. package/contracts/shared/KeyValueStore.sol +127 -0
  384. package/contracts/{instance/base → shared}/Lifecycle.sol +37 -7
  385. package/contracts/shared/NftIdSetManager.sol +65 -0
  386. package/contracts/shared/NftOwnable.sol +59 -86
  387. package/contracts/shared/PolicyHolder.sol +102 -0
  388. package/contracts/shared/ProxyManager.sol +131 -26
  389. package/contracts/shared/Registerable.sol +26 -41
  390. package/contracts/shared/RegistryLinked.sol +43 -0
  391. package/contracts/shared/Service.sol +57 -29
  392. package/contracts/shared/TokenHandler.sol +37 -6
  393. package/contracts/shared/Versionable.sol +4 -92
  394. package/contracts/staking/IStaking.sol +168 -0
  395. package/contracts/staking/IStakingService.sol +153 -0
  396. package/contracts/staking/StakeManagerLib.sol +231 -0
  397. package/contracts/staking/Staking.sol +513 -0
  398. package/contracts/staking/StakingManager.sol +54 -0
  399. package/contracts/staking/StakingReader.sol +187 -0
  400. package/contracts/staking/StakingService.sol +411 -0
  401. package/contracts/staking/StakingServiceManager.sol +44 -0
  402. package/contracts/staking/StakingStore.sol +613 -0
  403. package/contracts/staking/TargetManagerLib.sol +207 -0
  404. package/contracts/{types → type}/AddressSet.sol +1 -1
  405. package/contracts/type/Amount.sol +128 -0
  406. package/contracts/{types → type}/Blocknumber.sol +21 -3
  407. package/contracts/type/ClaimId.sol +75 -0
  408. package/contracts/{types → type}/DistributorType.sol +2 -2
  409. package/contracts/{types → type}/Fee.sol +33 -23
  410. package/contracts/{types → type}/NftId.sol +21 -15
  411. package/contracts/type/NftIdSet.sol +62 -0
  412. package/contracts/type/ObjectType.sol +241 -0
  413. package/contracts/type/PayoutId.sol +82 -0
  414. package/contracts/{types → type}/Referral.sol +5 -1
  415. package/contracts/type/RequestId.sol +75 -0
  416. package/contracts/{types → type}/RiskId.sol +1 -1
  417. package/contracts/type/RoleId.sol +201 -0
  418. package/contracts/type/Seconds.sol +81 -0
  419. package/contracts/type/Selector.sol +102 -0
  420. package/contracts/{types → type}/StateId.sol +34 -4
  421. package/contracts/type/String.sol +53 -0
  422. package/contracts/{types → type}/Timestamp.sol +23 -14
  423. package/contracts/{types → type}/UFixed.sol +1 -0
  424. package/contracts/{types → type}/Version.sol +2 -1
  425. package/package.json +5 -5
  426. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  427. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
  428. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  429. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -618
  430. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  431. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  432. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  433. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  434. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  435. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  436. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  437. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  438. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  439. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -782
  440. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  441. package/artifacts/contracts/components/Product.sol/Product.json +0 -719
  442. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  443. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  444. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  445. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  446. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  447. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  448. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  449. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  450. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  451. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  452. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  453. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  454. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  455. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  456. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  457. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  458. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  459. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  460. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  461. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  462. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  463. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  464. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  465. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  466. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  467. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  468. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  469. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  470. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  471. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  472. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  473. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  474. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  475. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  476. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  477. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  478. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  479. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  480. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  481. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  482. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  483. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  484. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  485. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  486. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
  487. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  488. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  489. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  490. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  491. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  492. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  493. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  494. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  495. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  496. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  497. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  498. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  499. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  500. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  501. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
  502. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  503. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -444
  504. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  505. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  506. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  507. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  508. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  509. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  510. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -839
  511. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  512. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -448
  513. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  514. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1058
  515. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  516. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -448
  517. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  518. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  519. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  520. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  521. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  522. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  523. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  524. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  525. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  526. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  527. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  528. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  529. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  530. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  531. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  532. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  533. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  534. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  535. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  536. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  537. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  538. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  539. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  540. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  541. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  542. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  543. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  544. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  545. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  546. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  547. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  548. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  549. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  550. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  551. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  552. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  553. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  554. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  555. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  556. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  557. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  558. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  559. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  560. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  561. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  562. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  563. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  564. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  565. package/contracts/components/BaseComponent.sol +0 -91
  566. package/contracts/components/Distribution.sol +0 -159
  567. package/contracts/components/IBaseComponent.sol +0 -25
  568. package/contracts/components/IDistributionComponent.sol +0 -44
  569. package/contracts/components/IPoolComponent.sol +0 -62
  570. package/contracts/components/IProductComponent.sol +0 -35
  571. package/contracts/components/Pool.sol +0 -242
  572. package/contracts/components/Product.sol +0 -285
  573. package/contracts/experiment/cloning/Cloner.sol +0 -47
  574. package/contracts/experiment/errors/Require.sol +0 -38
  575. package/contracts/experiment/errors/Revert.sol +0 -44
  576. package/contracts/experiment/inheritance/A.sol +0 -53
  577. package/contracts/experiment/inheritance/B.sol +0 -28
  578. package/contracts/experiment/inheritance/C.sol +0 -34
  579. package/contracts/experiment/inheritance/IA.sol +0 -13
  580. package/contracts/experiment/inheritance/IB.sol +0 -10
  581. package/contracts/experiment/inheritance/IC.sol +0 -12
  582. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  583. package/contracts/experiment/statemachine/ISM.sol +0 -25
  584. package/contracts/experiment/statemachine/SM.sol +0 -57
  585. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  586. package/contracts/experiment/types/TypeA.sol +0 -47
  587. package/contracts/experiment/types/TypeB.sol +0 -29
  588. package/contracts/instance/AccessManagedSimple.sol +0 -115
  589. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  590. package/contracts/instance/InstanceAccessManager.sol +0 -288
  591. package/contracts/instance/base/ComponentServiceBase.sol +0 -124
  592. package/contracts/instance/base/IInstanceBase.sol +0 -23
  593. package/contracts/instance/base/KeyValueStore.sol +0 -172
  594. package/contracts/instance/module/ISetup.sol +0 -44
  595. package/contracts/instance/module/ITreasury.sol +0 -23
  596. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  597. package/contracts/instance/service/DistributionService.sol +0 -88
  598. package/contracts/instance/service/DistributionServiceManager.sol +0 -54
  599. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  600. package/contracts/instance/service/IDistributionService.sol +0 -12
  601. package/contracts/instance/service/IPoolService.sol +0 -37
  602. package/contracts/instance/service/IProductService.sol +0 -107
  603. package/contracts/instance/service/PoolService.sol +0 -194
  604. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  605. package/contracts/instance/service/ProductService.sol +0 -548
  606. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  607. package/contracts/shared/ContractDeployerLib.sol +0 -72
  608. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  609. package/contracts/test/TestFee.sol +0 -25
  610. package/contracts/test/TestRegisterable.sol +0 -18
  611. package/contracts/test/TestRoleId.sol +0 -14
  612. package/contracts/test/TestService.sol +0 -24
  613. package/contracts/test/TestToken.sol +0 -26
  614. package/contracts/test/TestVersion.sol +0 -44
  615. package/contracts/test/TestVersionable.sol +0 -17
  616. package/contracts/types/ChainId.sol +0 -38
  617. package/contracts/types/NftIdSet.sol +0 -60
  618. package/contracts/types/NumberId.sol +0 -52
  619. package/contracts/types/ObjectType.sol +0 -152
  620. package/contracts/types/RoleId.sol +0 -89
  621. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -2,143 +2,393 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
+ import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
+
7
+ import {Amount} from "../type/Amount.sol";
8
+ import {BundleManager} from "./BundleManager.sol";
9
+ import {ChainNft} from "../registry/ChainNft.sol";
10
+ import {NftId} from "../type/NftId.sol";
11
+ import {RoleId} from "../type/RoleId.sol";
12
+ import {SecondsLib} from "../type/Seconds.sol";
13
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
14
+ import {ADMIN_ROLE, INSTANCE_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, APPLICATION_SERVICE_ROLE, POLICY_SERVICE_ROLE, CLAIM_SERVICE_ROLE, BUNDLE_SERVICE_ROLE, INSTANCE_ROLE} from "../type/RoleId.sol";
15
+ import {ObjectType, INSTANCE, BUNDLE, APPLICATION, CLAIM, DISTRIBUTION, INSTANCE, POLICY, POOL, PRODUCT, REGISTRY, STAKING} from "../type/ObjectType.sol";
16
+
17
+ import {Service} from "../shared/Service.sol";
18
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
19
+ import {IService} from "../shared/IService.sol";
20
+ import {AccessManagerExtendedInitializeable} from "../shared/AccessManagerExtendedInitializeable.sol";
21
+
22
+ import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
23
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
24
+ import {IProductComponent} from "../product/IProductComponent.sol";
25
+
26
+ import {IRegistry} from "../registry/IRegistry.sol";
27
+ import {IRegistryService} from "../registry/IRegistryService.sol";
28
+ import {IStakingService} from "../staking/IStakingService.sol";
29
+ import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
5
30
 
6
- import {AccessManagerSimple} from "./AccessManagerSimple.sol";
7
- import {InstanceAccessManager} from "./InstanceAccessManager.sol";
8
31
  import {Instance} from "./Instance.sol";
32
+ import {IInstance} from "./IInstance.sol";
33
+ import {InstanceAdmin} from "./InstanceAdmin.sol";
9
34
  import {IInstanceService} from "./IInstanceService.sol";
10
35
  import {InstanceReader} from "./InstanceReader.sol";
11
- import {IRegistry} from "../registry/IRegistry.sol";
12
- import {Registry} from "../registry/Registry.sol";
13
- import {RegistryService} from "../registry/RegistryService.sol";
14
- import {Service} from "../../contracts/shared/Service.sol";
15
- import {IService} from "../shared/IService.sol";
16
- import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
17
- import {NftId, NftIdLib, zeroNftId} from "../../contracts/types/NftId.sol";
18
- import {RoleId} from "../types/RoleId.sol";
19
- import {VersionLib} from "../types/Version.sol";
20
- import {ADMIN_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE} from "../types/RoleId.sol";
36
+ import {InstanceStore} from "./InstanceStore.sol";
37
+ import {InstanceAuthorizationsLib} from "./InstanceAuthorizationsLib.sol";
38
+ import {Seconds} from "../type/Seconds.sol";
39
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
21
40
 
22
- contract InstanceService is Service, IInstanceService {
23
41
 
24
- address internal _registryAddress;
25
- address internal _accessManagerMaster;
26
- address internal _instanceMaster;
27
- address internal _instanceReaderMaster;
42
+ contract InstanceService is
43
+ Service,
44
+ IInstanceService
45
+ {
28
46
 
29
47
  // TODO update to real hash when instance is stable
30
48
  bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
31
- string public constant NAME = "InstanceService";
49
+
50
+ IRegistryService internal _registryService;
51
+ IStakingService internal _stakingService;
52
+
53
+ address internal _masterAccessManager;
54
+ address internal _masterInstanceAdmin;
55
+ address internal _masterInstance;
56
+ address internal _masterInstanceReader;
57
+ address internal _masterInstanceBundleManager;
58
+ address internal _masterInstanceStore;
59
+
60
+
61
+ modifier onlyInstance() {
62
+ address instanceAddress = msg.sender;
63
+ NftId instanceNftId = getRegistry().getNftId(msg.sender);
64
+ if (instanceNftId.eqz()) {
65
+ revert ErrorInstanceServiceNotRegistered(instanceAddress);
66
+ }
67
+
68
+ ObjectType objectType = getRegistry().getObjectInfo(instanceNftId).objectType;
69
+ if (objectType != INSTANCE()) {
70
+ revert ErrorInstanceServiceNotInstance(instanceAddress, objectType);
71
+ }
72
+
73
+ VersionPart instanceVersion = IInstance(instanceAddress).getMajorVersion();
74
+ if (instanceVersion != getVersion().toMajorPart()) {
75
+ revert ErrorInstanceServiceInstanceVersionMismatch(instanceAddress, instanceVersion);
76
+ }
77
+
78
+ _;
79
+ }
80
+
81
+
82
+ modifier onlyInstanceOwner(NftId instanceNftId) {
83
+ if(msg.sender != getRegistry().ownerOf(instanceNftId)) {
84
+ revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
85
+ }
86
+ _;
87
+ }
88
+
89
+ // TODO check component - service - instance version match
90
+ modifier onlyComponent() {
91
+ if (! getRegistry().isRegisteredComponent(msg.sender)) {
92
+ revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
93
+ }
94
+ _;
95
+ }
32
96
 
33
97
  function createInstanceClone()
34
98
  external
35
99
  returns (
36
- AccessManagerSimple clonedAccessManager,
37
100
  Instance clonedInstance,
38
- NftId instanceNftId,
39
- InstanceReader clonedInstanceReader
101
+ NftId clonedInstanceNftId
40
102
  )
41
103
  {
42
104
  address instanceOwner = msg.sender;
43
- Registry registry = Registry(_registryAddress);
44
- NftId registryNftId = registry.getNftId(_registryAddress);
45
- address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
46
- RegistryService registryService = RegistryService(registryServiceAddress);
47
-
48
- // initially set the authority of the access managar to this (being the instance service).
49
- // This will allow the instance service to bootstrap the authorizations of the instance
50
- // and then transfer the ownership of the access manager to the instance owner once everything is setup
51
- clonedAccessManager = AccessManagerSimple(Clones.clone(_accessManagerMaster));
105
+ AccessManagerExtendedInitializeable clonedAccessManager = AccessManagerExtendedInitializeable(
106
+ Clones.clone(_masterAccessManager));
107
+
108
+ // initially grants ADMIN_ROLE to this (being the instance service).
109
+ // This will allow the instance service to bootstrap the authorizations of the instance.
110
+ // Instance service will renounce ADMIN_ROLE when bootstraping is finished
52
111
  clonedAccessManager.initialize(address(this));
53
112
 
54
- clonedInstance = Instance(Clones.clone(_instanceMaster));
55
- clonedInstance.initialize(address(clonedAccessManager), _registryAddress, registryNftId, msg.sender);
56
- ( IRegistry.ObjectInfo memory info, ) = registryService.registerInstance(clonedInstance);
57
- instanceNftId = info.nftId;
113
+ clonedInstance = Instance(Clones.clone(_masterInstance));
114
+ clonedInstance.initialize(
115
+ address(clonedAccessManager),
116
+ address(getRegistry()),
117
+ instanceOwner);
118
+ // initialize and set before instance reader
119
+ InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
120
+ clonedInstanceStore.initialize(address(clonedInstance));
121
+ clonedInstance.setInstanceStore(clonedInstanceStore);
58
122
 
59
- clonedInstanceReader = InstanceReader(Clones.clone(address(_instanceReaderMaster)));
60
- clonedInstanceReader.initialize(_registryAddress, instanceNftId);
123
+ InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
124
+ clonedInstanceReader.initialize(address(clonedInstance));
125
+ clonedInstance.setInstanceReader(clonedInstanceReader);
61
126
 
62
- _grantInitialAuthorizations(clonedAccessManager, clonedInstance);
127
+ BundleManager clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
128
+ clonedBundleManager.initialize(address(clonedInstance));
129
+ clonedInstance.setBundleManager(clonedBundleManager);
63
130
 
64
- clonedInstance.setInstanceReader(clonedInstanceReader);
65
-
66
- // to complete setup switch instance ownership to the instance owner
67
- // TODO: use a role less powerful than admin, maybe INSTANCE_ADMIN (does not exist yet)
68
- clonedAccessManager.grantRole(ADMIN_ROLE().toInt(), instanceOwner, 0);
69
- clonedAccessManager.revokeRole(ADMIN_ROLE().toInt(), address(this));
131
+ InstanceAdmin clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
132
+ clonedAccessManager.grantRole(ADMIN_ROLE().toInt(), address(clonedInstanceAdmin), 0);
133
+ clonedInstanceAdmin.initialize(address(clonedInstance));
134
+ clonedInstance.setInstanceAdmin(clonedInstanceAdmin);
70
135
 
71
- emit LogInstanceCloned(address(clonedAccessManager), address(clonedInstance), address(clonedInstanceReader), instanceNftId);
72
- }
136
+ // TODO amend setters with instance specific , policy manager ...
73
137
 
74
- function _grantInitialAuthorizations(AccessManagerSimple clonedAccessManager, Instance clonedInstance) internal {
75
- address distributionServiceAddress = _registry.getServiceAddress("DistributionService", VersionLib.toVersion(3, 0, 0).toMajorPart());
76
- clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE().toInt(), distributionServiceAddress, 0);
77
- bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](2);
78
- instanceDistributionServiceSelectors[0] = clonedInstance.createDistributionSetup.selector;
79
- instanceDistributionServiceSelectors[1] = clonedInstance.updateDistributionSetup.selector;
80
- clonedAccessManager.setTargetFunctionRole(
81
- address(clonedInstance),
82
- instanceDistributionServiceSelectors,
83
- DISTRIBUTION_SERVICE_ROLE().toInt());
84
-
85
- address poolServiceAddress = _registry.getServiceAddress("PoolService", VersionLib.toVersion(3, 0, 0).toMajorPart());
86
- clonedAccessManager.grantRole(POOL_SERVICE_ROLE().toInt(), address(poolServiceAddress), 0);
87
- bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
88
- instancePoolServiceSelectors[0] = clonedInstance.createPoolSetup.selector;
89
- instancePoolServiceSelectors[1] = clonedInstance.updatePoolSetup.selector;
90
- instancePoolServiceSelectors[2] = clonedInstance.createBundle.selector;
91
- instancePoolServiceSelectors[3] = clonedInstance.updateBundle.selector;
92
- clonedAccessManager.setTargetFunctionRole(
138
+ // TODO library does external calls -> but it is registry and access manager -> find out is it best practice
139
+ InstanceAuthorizationsLib.grantInitialAuthorizations(
140
+ clonedAccessManager,
141
+ clonedInstanceAdmin,
142
+ clonedInstance,
143
+ clonedBundleManager,
144
+ clonedInstanceStore,
145
+ instanceOwner,
146
+ getRegistry(),
147
+ getVersion().toMajorPart());
148
+
149
+ clonedAccessManager.renounceRole(ADMIN_ROLE().toInt(), address(this));
150
+
151
+ // register new instance with registry
152
+ IRegistry.ObjectInfo memory info = _registryService.registerInstance(clonedInstance, instanceOwner);
153
+ clonedInstanceNftId = info.nftId;
154
+
155
+ // create corresponding staking target
156
+ _stakingService.createInstanceTarget(
157
+ clonedInstanceNftId,
158
+ TargetManagerLib.getDefaultLockingPeriod(),
159
+ TargetManagerLib.getDefaultRewardRate());
160
+
161
+ emit LogInstanceCloned(
162
+ address(clonedAccessManager),
163
+ address(clonedInstanceAdmin),
93
164
  address(clonedInstance),
94
- instancePoolServiceSelectors,
95
- POOL_SERVICE_ROLE().toInt());
165
+ address(clonedInstanceStore),
166
+ address(clonedBundleManager),
167
+ address(clonedInstanceReader),
168
+ clonedInstanceNftId);
169
+ }
170
+
171
+
172
+ function setStakingLockingPeriod(Seconds stakeLockingPeriod)
173
+ external
174
+ virtual
175
+ onlyInstance()
176
+ {
177
+ NftId instanceNftId = getRegistry().getNftId(msg.sender);
178
+ _stakingService.setInstanceLockingPeriod(
179
+ instanceNftId,
180
+ stakeLockingPeriod);
181
+ }
182
+
183
+
184
+ function setStakingRewardRate(UFixed rewardRate)
185
+ external
186
+ virtual
187
+ onlyInstance()
188
+ {
189
+ NftId instanceNftId = getRegistry().getNftId(msg.sender);
190
+ _stakingService.setInstanceRewardRate(
191
+ instanceNftId,
192
+ rewardRate);
193
+ }
194
+
195
+
196
+ function refillStakingRewardReserves(address rewardProvider, Amount dipAmount)
197
+ external
198
+ virtual
199
+ onlyInstance()
200
+ {
201
+ NftId instanceNftId = getRegistry().getNftId(msg.sender);
202
+ _stakingService.refillInstanceRewardReserves(
203
+ instanceNftId,
204
+ rewardProvider,
205
+ dipAmount);
206
+ }
207
+
96
208
 
209
+ function withdrawStakingRewardReserves(Amount dipAmount)
210
+ external
211
+ virtual
212
+ onlyInstance()
213
+ returns (Amount newBalance)
214
+ {
215
+ NftId instanceNftId = getRegistry().getNftId(msg.sender);
216
+ _stakingService.withdrawInstanceRewardReserves(
217
+ instanceNftId,
218
+ dipAmount);
97
219
  }
98
220
 
99
- function setAccessManagerMaster(address accessManagerMaster) external {
100
- require(
101
- _accessManagerMaster == address(0),
102
- "ERROR:CRD-001:ACCESS_MANAGER_MASTER_ALREADY_SET");
103
- _accessManagerMaster = accessManagerMaster;
221
+
222
+ function setComponentLocked(bool locked)
223
+ external
224
+ virtual
225
+ onlyComponent()
226
+ {
227
+ // checks
228
+ address componentAddress = msg.sender;
229
+
230
+ if (!IInstanceLinkedComponent(componentAddress).supportsInterface(type(IInstanceLinkedComponent).interfaceId)) {
231
+ revert ErrorInstanceServiceComponentNotInstanceLinked(componentAddress);
232
+ }
233
+
234
+ IRegistry registry = getRegistry();
235
+ NftId instanceNftId = registry.getObjectInfo(componentAddress).parentNftId;
236
+
237
+ IInstance instance = IInstance(
238
+ registry.getObjectInfo(
239
+ instanceNftId).objectAddress);
240
+
241
+ // no revert in case already locked
242
+ instance.getInstanceAdmin().setTargetLockedByService(
243
+ componentAddress,
244
+ locked);
104
245
  }
105
246
 
106
- function setInstanceMaster(address instanceMaster) external {
107
- require(
108
- _instanceMaster == address(0),
109
- "ERROR:CRD-002:INSTANCE_MASTER_ALREADY_SET");
110
- _instanceMaster = instanceMaster;
247
+
248
+ function getMasterInstanceReader() external view returns (address) {
249
+ return _masterInstanceReader;
111
250
  }
112
251
 
113
- function setInstanceReaderMaster(address instanceReaderMaster) external {
114
- require(
115
- _instanceReaderMaster == address(0),
116
- "ERROR:CRD-003:INSTANCE_READER_MASTER_ALREADY_SET");
117
- _instanceReaderMaster = instanceReaderMaster;
252
+ function setAndRegisterMasterInstance(address instanceAddress)
253
+ external
254
+ onlyOwner
255
+ returns(NftId masterInstanceNftId)
256
+ {
257
+ if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
258
+ if(_masterAccessManager != address(0)) { revert ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet(); }
259
+ if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
260
+ if(_masterInstanceBundleManager != address(0)) { revert ErrorInstanceServiceMasterBundleManagerAlreadySet(); }
261
+
262
+ if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
263
+
264
+ IInstance instance = IInstance(instanceAddress);
265
+ InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
266
+ address instanceAdminAddress = address(instanceAdmin);
267
+ InstanceReader instanceReader = instance.getInstanceReader();
268
+ address instanceReaderAddress = address(instanceReader);
269
+ BundleManager bundleManager = instance.getBundleManager();
270
+ address bundleManagerAddress = address(bundleManager);
271
+ InstanceStore instanceStore = instance.getInstanceStore();
272
+ address instanceStoreAddress = address(instanceStore);
273
+
274
+ if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
275
+ if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
276
+ if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleManagerZero(); }
277
+ if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
278
+
279
+ if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
280
+ if(bundleManager.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleManagerAuthorityMismatch(); }
281
+ if(instanceStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
282
+ if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
283
+ if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
284
+
285
+ _masterAccessManager = instance.authority();
286
+ _masterInstanceAdmin = instanceAdminAddress;
287
+ _masterInstance = instanceAddress;
288
+ _masterInstanceReader = instanceReaderAddress;
289
+ _masterInstanceBundleManager = bundleManagerAddress;
290
+ _masterInstanceStore = instanceStoreAddress;
291
+
292
+ IInstance masterInstance = IInstance(_masterInstance);
293
+ IRegistry.ObjectInfo memory info = _registryService.registerInstance(masterInstance, getOwner());
294
+ masterInstanceNftId = info.nftId;
118
295
  }
119
296
 
120
- function getInstanceReaderMaster() external view returns (address) {
121
- return _instanceReaderMaster;
297
+ function upgradeMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
298
+ if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
299
+ if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
300
+ if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
301
+
302
+ InstanceReader instanceReader = InstanceReader(instanceReaderAddress);
303
+ if(instanceReader.getInstance() != IInstance(_masterInstance)) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch(); }
304
+
305
+ _masterInstanceReader = instanceReaderAddress;
122
306
  }
123
307
 
124
- function getInstanceMaster() external view returns (address) {
125
- return _instanceMaster;
308
+ function upgradeInstanceReader(NftId instanceNftId)
309
+ external
310
+ onlyInstanceOwner(instanceNftId)
311
+ {
312
+ IRegistry registry = getRegistry();
313
+ IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
314
+ Instance instance = Instance(instanceInfo.objectAddress);
315
+
316
+ InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
317
+ upgradedInstanceReaderClone.initialize(address(instance));
318
+ instance.setInstanceReader(upgradedInstanceReaderClone);
126
319
  }
127
320
 
128
- function getAccessManagerMaster() external view returns (address) {
129
- return _accessManagerMaster;
321
+
322
+ function createGifTarget(
323
+ NftId instanceNftId,
324
+ address targetAddress,
325
+ string memory targetName,
326
+ bytes4[][] memory selectors,
327
+ RoleId[] memory roles
328
+ )
329
+ external
330
+ virtual
331
+ restricted()
332
+ {
333
+ _createGifTarget(
334
+ instanceNftId,
335
+ targetAddress,
336
+ targetName,
337
+ roles,
338
+ selectors
339
+ );
130
340
  }
131
341
 
132
- // From IService
133
- function getName() public pure override(IService, Service) returns(string memory) {
134
- return NAME;
342
+
343
+ function createComponentTarget(
344
+ NftId instanceNftId,
345
+ address targetAddress,
346
+ string memory targetName,
347
+ bytes4[][] memory selectors,
348
+ RoleId[] memory roles
349
+ )
350
+ external
351
+ virtual
352
+ restricted()
353
+ {
354
+ _createGifTarget(
355
+ instanceNftId,
356
+ targetAddress,
357
+ targetName,
358
+ roles,
359
+ selectors
360
+ );
361
+ }
362
+
363
+
364
+ /// all gif targets MUST be children of instanceNftId
365
+ function _createGifTarget(
366
+ NftId instanceNftId,
367
+ address targetAddress,
368
+ string memory targetName,
369
+ RoleId[] memory roles,
370
+ bytes4[][] memory selectors
371
+ )
372
+ internal
373
+ virtual
374
+ {
375
+ // TODO instanceAdmin will check target instance match anyway
376
+ (
377
+ IInstance instance, // or instanceInfo
378
+ // or targetInfo
379
+ ) = _validateInstanceAndComponent(instanceNftId, targetAddress);
380
+
381
+ InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
382
+ instanceAdmin.createGifTarget(targetAddress, targetName);
383
+ // set proposed target config
384
+ // TODO restriction: gif targets are set only once and only here?
385
+ // assume config is a mix of gif and custom roles and no further configuration by INSTANCE_OWNER_ROLE is ever needed?
386
+ for(uint roleIdx = 0; roleIdx < roles.length; roleIdx++) {
387
+ instanceAdmin.setTargetFunctionRoleByService(targetName, selectors[roleIdx], roles[roleIdx]);
388
+ }
135
389
  }
136
390
 
137
391
  /// @dev top level initializer
138
- // 1) registry is non upgradeable -> don't need a proxy and uses constructor !
139
- // 2) deploy registry service first -> from its initialization func it is easier to deploy registry then vice versa
140
- // 3) deploy registry -> pass registry service address as constructor argument
141
- // registry is getting instantiated and locked to registry service address forever
142
392
  function _initialize(
143
393
  address owner,
144
394
  bytes memory data
@@ -147,37 +397,43 @@ contract InstanceService is Service, IInstanceService {
147
397
  initializer
148
398
  virtual override
149
399
  {
150
- // bytes memory encodedConstructorArguments = abi.encode(
151
- // _registryAddress);
152
-
153
- // bytes memory instanceCreationCode = ContractDeployerLib.getCreationCode(
154
- // instanceByteCodeWithInitCode,
155
- // encodedConstructorArguments);
156
-
157
- // address instanceAddress = ContractDeployerLib.deploy(
158
- // instanceCreationCode,
159
- // INSTANCE_CREATION_CODE_HASH);
160
-
161
- address initialOwner = address(0);
162
- (_registryAddress, initialOwner) = abi.decode(data, (address, address));
163
- // TODO while InstanceService is not deployed in InstanceServiceManager constructor
164
- // owner is InstanceServiceManager deployer
165
- _initializeService(_registryAddress, owner);
166
-
167
- _registerInterface(type(IService).interfaceId);
168
- _registerInterface(type(IInstanceService).interfaceId);
400
+ (
401
+ address registryAddress,,
402
+ //address managerAddress
403
+ address authority
404
+ ) = abi.decode(data, (address, address, address));
405
+
406
+ initializeService(registryAddress, authority, owner);
407
+
408
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
409
+ _stakingService = IStakingService(_getServiceAddress(STAKING()));
410
+
411
+ registerInterface(type(IInstanceService).interfaceId);
169
412
  }
170
413
 
171
- function hasRole(address account, RoleId role, NftId instanceNftId) external view returns (bool) {
172
- IRegistry.ObjectInfo memory instanceObjectInfo = getRegistry().getObjectInfo(instanceNftId);
173
- address instanceAddress = instanceObjectInfo.objectAddress;
174
- Instance instance = Instance(instanceAddress);
175
- AccessManagerSimple accessManager = AccessManagerSimple(instance.authority());
176
- (bool isMember, uint32 executionDelay) = accessManager.hasRole(role.toInt(), account);
177
- if (executionDelay > 0) {
178
- return false;
179
- }
180
- return isMember;
414
+
415
+ function _validateInstanceAndComponent(NftId instanceNftId, address componentAddress)
416
+ internal
417
+ view
418
+ returns (IInstance instance, NftId componentNftId)
419
+ {
420
+ IRegistry registry = getRegistry();
421
+ IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
422
+ if(instanceInfo.objectType != INSTANCE()) {
423
+ revert ErrorInstanceServiceNotInstanceNftId(instanceNftId);
424
+ }
425
+
426
+ IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
427
+ if(componentInfo.parentNftId != instanceNftId) {
428
+ revert ErrorInstanceServiceInstanceComponentMismatch(instanceNftId, componentInfo.nftId);
429
+ }
430
+
431
+ instance = Instance(instanceInfo.objectAddress);
432
+ componentNftId = componentInfo.nftId;
181
433
  }
182
- }
183
434
 
435
+ // From IService
436
+ function _getDomain() internal pure override returns(ObjectType) {
437
+ return INSTANCE();
438
+ }
439
+ }
@@ -7,42 +7,29 @@ import {ProxyManager} from "../shared/ProxyManager.sol";
7
7
  import {InstanceService} from "./InstanceService.sol";
8
8
  import {Registry} from "../registry/Registry.sol";
9
9
  import {RegistryService} from "../registry/RegistryService.sol";
10
- import {VersionLib} from "../types/Version.sol";
10
+ import {REGISTRY} from "../type/ObjectType.sol";
11
11
 
12
12
  contract InstanceServiceManager is ProxyManager {
13
13
 
14
14
  InstanceService private _instanceService;
15
15
 
16
- /// @dev initializes proxy manager with instance service implementation and deploys instance
16
+ /// @dev initializes proxy manager with instance service implementation
17
17
  constructor(
18
- address registryAddress
19
- )
20
- ProxyManager()
18
+ address authority,
19
+ address registryAddress,
20
+ bytes32 salt
21
+ )
22
+ ProxyManager(registryAddress)
21
23
  {
22
- InstanceService instSrv = new InstanceService();
24
+ InstanceService instSrv = new InstanceService{salt: salt}();
23
25
  // bytes memory initCode = type(InstanceService).creationCode;
24
- bytes memory data = abi.encode(registryAddress, address(this));
25
- IVersionable versionable = deploy(
26
+ bytes memory data = abi.encode(registryAddress, address(this), authority);
27
+ IVersionable versionable = deployDetermenistic(
26
28
  address(instSrv),
27
- data);
29
+ data,
30
+ salt);
28
31
 
29
32
  _instanceService = InstanceService(address(versionable));
30
-
31
- Registry registry = Registry(registryAddress);
32
- address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
33
- RegistryService registryService = RegistryService(registryServiceAddress);
34
- // TODO this must have a role or own nft to register service
35
- //registryService.registerService(_instanceService);
36
- // RegistryService registryService = _instanceService.getRegistryService();
37
-
38
- // TODO no nft to link yet
39
- // link ownership of instance service manager ot nft owner of instance service
40
- //_linkToNftOwnable(
41
- // address(registryAddress),
42
- // address(_instanceService));
43
-
44
- // implies that after this constructor call only upgrade functionality is available
45
- _isDeployed = true;
46
33
  }
47
34
 
48
35
  //--- view functions ----------------------------------------------------//