@etherisc/gif-next 0.0.2-def25d4-556 → 0.0.2-e026265-044

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