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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (614) hide show
  1. package/README.md +94 -16
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1378 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +975 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +827 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +709 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +560 -246
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +494 -146
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +432 -2978
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +726 -308
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +701 -205
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +404 -78
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3597 -0
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  35. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +31 -8
  36. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  38. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  40. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
  42. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -112
  44. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  46. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  47. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  48. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  50. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  51. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  52. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  53. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
  54. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  55. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  56. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  57. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  58. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  60. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  61. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  62. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  64. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  65. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  66. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  68. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  69. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +310 -358
  70. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  71. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
  72. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  73. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  74. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  75. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  76. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  77. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  78. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  79. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  80. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  81. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  82. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  83. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  84. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  85. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  86. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  88. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  89. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +236 -190
  90. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  91. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  92. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  93. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -0
  94. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  95. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +266 -278
  96. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  97. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
  98. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  99. package/artifacts/contracts/{instance/base/IService.sol/IService.json → product/IProductService.sol/IProductService.json} +145 -166
  100. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  101. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  102. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  104. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  105. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  106. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  107. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  108. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  109. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  110. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  111. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  112. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  113. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  114. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  115. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  116. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  117. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +521 -59
  118. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  119. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +451 -200
  120. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  121. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  122. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  123. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  124. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  125. package/artifacts/contracts/registry/Registry.sol/Registry.json +828 -311
  126. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  127. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
  128. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  129. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +530 -339
  130. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  131. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +346 -129
  132. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  133. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  134. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  135. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1211 -0
  136. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  137. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  138. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  139. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +206 -0
  140. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  141. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  142. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  143. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
  144. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  145. package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → shared/AccessManagerCustom.sol/AccessManagerCustom.json} +122 -11
  146. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  147. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
  148. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  149. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
  150. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  151. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
  152. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  153. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
  154. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  155. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  156. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  157. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
  158. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  159. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
  160. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  161. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +235 -164
  162. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  163. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  164. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  165. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
  166. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  167. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  168. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  169. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  170. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  171. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  172. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  173. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  174. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  175. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  176. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  177. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  178. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  179. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  180. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  181. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  182. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  183. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  184. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  185. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
  186. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  187. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  188. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  189. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IService.sol/IService.json} +107 -75
  190. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  191. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  192. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  193. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  194. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  195. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  196. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  197. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +547 -0
  198. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  199. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  200. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  201. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  202. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  203. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
  204. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  205. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  206. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  207. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -62
  208. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  209. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
  210. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  211. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  212. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  213. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/Service.sol/Service.json} +198 -172
  214. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  215. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  216. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  217. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  218. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  220. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  221. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  222. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  223. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  224. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  225. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  226. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  227. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  228. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  230. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  232. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  234. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  236. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  238. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  240. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  241. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  242. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  243. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  244. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  245. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  246. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  248. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  250. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  251. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  252. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  254. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  255. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  256. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  258. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  259. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  260. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
  262. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  264. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  266. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  268. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  269. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  270. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
  272. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  274. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  276. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  278. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  279. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  280. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  282. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  284. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  285. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  286. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  287. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  288. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  289. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  290. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  292. package/contracts/distribution/Distribution.sol +261 -0
  293. package/contracts/distribution/DistributionService.sol +297 -0
  294. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  295. package/contracts/distribution/IDistributionComponent.sol +66 -0
  296. package/contracts/distribution/IDistributionService.sol +81 -0
  297. package/contracts/instance/BundleManager.sol +126 -0
  298. package/contracts/instance/IInstance.sol +75 -16
  299. package/contracts/instance/IInstanceService.sol +89 -9
  300. package/contracts/instance/Instance.sol +183 -362
  301. package/contracts/instance/InstanceAdmin.sol +331 -0
  302. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  303. package/contracts/instance/InstanceReader.sol +172 -70
  304. package/contracts/instance/InstanceService.sol +385 -73
  305. package/contracts/instance/InstanceServiceManager.sol +12 -24
  306. package/contracts/instance/InstanceStore.sol +272 -0
  307. package/contracts/instance/base/BalanceStore.sol +123 -0
  308. package/contracts/instance/base/Cloneable.sol +28 -0
  309. package/contracts/instance/base/ObjectCounter.sol +21 -0
  310. package/contracts/instance/base/ObjectLifecycle.sol +99 -0
  311. package/contracts/instance/base/ObjectManager.sol +80 -0
  312. package/contracts/instance/module/IAccess.sol +29 -21
  313. package/contracts/instance/module/IBundle.sol +8 -7
  314. package/contracts/instance/module/IComponents.sol +52 -0
  315. package/contracts/instance/module/IDistribution.sol +7 -4
  316. package/contracts/instance/module/IPolicy.sol +56 -17
  317. package/contracts/instance/module/IRisk.sol +1 -1
  318. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  319. package/contracts/oracle/IOracle.sol +20 -0
  320. package/contracts/oracle/IOracleComponent.sol +32 -0
  321. package/contracts/oracle/IOracleService.sol +65 -0
  322. package/contracts/oracle/Oracle.sol +145 -0
  323. package/contracts/oracle/OracleService.sol +278 -0
  324. package/contracts/oracle/OracleServiceManager.sol +42 -0
  325. package/contracts/pool/BundleService.sol +296 -0
  326. package/contracts/pool/BundleServiceManager.sol +42 -0
  327. package/contracts/pool/IBundleService.sol +106 -0
  328. package/contracts/pool/IPoolComponent.sol +112 -0
  329. package/contracts/pool/IPoolService.sol +150 -0
  330. package/contracts/pool/Pool.sol +299 -0
  331. package/contracts/pool/PoolService.sol +452 -0
  332. package/contracts/pool/PoolServiceManager.sol +42 -0
  333. package/contracts/product/ApplicationService.sol +254 -0
  334. package/contracts/product/ApplicationServiceManager.sol +38 -0
  335. package/contracts/product/ClaimService.sol +442 -0
  336. package/contracts/product/ClaimServiceManager.sol +38 -0
  337. package/contracts/product/IApplicationService.sol +62 -0
  338. package/contracts/product/IClaimService.sol +99 -0
  339. package/contracts/product/IPolicyService.sol +78 -0
  340. package/contracts/product/IPricingService.sol +39 -0
  341. package/contracts/product/IProductComponent.sol +42 -0
  342. package/contracts/product/IProductService.sol +33 -0
  343. package/contracts/product/PolicyService.sol +475 -0
  344. package/contracts/product/PolicyServiceManager.sol +42 -0
  345. package/contracts/product/PricingService.sol +300 -0
  346. package/contracts/product/PricingServiceManager.sol +42 -0
  347. package/contracts/product/Product.sol +377 -0
  348. package/contracts/product/ProductService.sol +124 -0
  349. package/contracts/product/ProductServiceManager.sol +42 -0
  350. package/contracts/registry/ChainNft.sol +15 -0
  351. package/contracts/registry/IRegistry.sol +79 -12
  352. package/contracts/registry/IRegistryService.sol +54 -20
  353. package/contracts/registry/IServiceAuthorization.sol +38 -0
  354. package/contracts/registry/ITransferInterceptor.sol +1 -0
  355. package/contracts/registry/Registry.sol +403 -244
  356. package/contracts/registry/RegistryAdmin.sol +333 -0
  357. package/contracts/registry/RegistryService.sol +124 -297
  358. package/contracts/registry/RegistryServiceManager.sol +25 -36
  359. package/contracts/registry/ReleaseLifecycle.sol +28 -0
  360. package/contracts/registry/ReleaseManager.sol +523 -0
  361. package/contracts/registry/ServiceAuthorization.sol +90 -0
  362. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  363. package/contracts/registry/TokenRegistry.sol +315 -0
  364. package/contracts/shared/AccessAdmin.sol +759 -0
  365. package/contracts/{instance/AccessManagerSimple.sol → shared/AccessManagerCustom.sol} +281 -232
  366. package/contracts/shared/AccessManagerExtended.sol +481 -0
  367. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  368. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  369. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  370. package/contracts/shared/Component.sol +281 -0
  371. package/contracts/shared/ComponentService.sol +620 -0
  372. package/contracts/shared/ComponentServiceManager.sol +35 -0
  373. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  374. package/contracts/shared/ERC165.sol +15 -9
  375. package/contracts/shared/IAccessAdmin.sol +168 -0
  376. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  377. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  378. package/contracts/shared/IComponent.sol +70 -0
  379. package/contracts/shared/IComponentService.sol +102 -0
  380. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  381. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  382. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  383. package/contracts/shared/INftOwnable.sol +13 -12
  384. package/contracts/shared/IPolicyHolder.sol +45 -0
  385. package/contracts/shared/IRegisterable.sol +4 -6
  386. package/contracts/shared/IRegistryLinked.sol +11 -0
  387. package/contracts/shared/IService.sol +25 -0
  388. package/contracts/shared/IVersionable.sol +5 -48
  389. package/contracts/shared/InitializableCustom.sol +177 -0
  390. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  391. package/contracts/shared/KeyValueStore.sol +131 -0
  392. package/contracts/shared/Lifecycle.sol +67 -0
  393. package/contracts/shared/NftIdSetManager.sol +65 -0
  394. package/contracts/shared/NftOwnable.sol +60 -89
  395. package/contracts/shared/PolicyHolder.sol +102 -0
  396. package/contracts/shared/ProxyManager.sol +131 -26
  397. package/contracts/shared/Registerable.sol +26 -40
  398. package/contracts/shared/RegistryLinked.sol +43 -0
  399. package/contracts/shared/Service.sol +83 -0
  400. package/contracts/shared/TokenHandler.sol +37 -6
  401. package/contracts/shared/Versionable.sol +4 -92
  402. package/contracts/staking/IStaking.sol +168 -0
  403. package/contracts/staking/IStakingService.sol +153 -0
  404. package/contracts/staking/StakeManagerLib.sol +231 -0
  405. package/contracts/staking/Staking.sol +513 -0
  406. package/contracts/staking/StakingLifecycle.sol +24 -0
  407. package/contracts/staking/StakingManager.sol +54 -0
  408. package/contracts/staking/StakingReader.sol +187 -0
  409. package/contracts/staking/StakingService.sol +411 -0
  410. package/contracts/staking/StakingServiceManager.sol +44 -0
  411. package/contracts/staking/StakingStore.sol +615 -0
  412. package/contracts/staking/TargetManagerLib.sol +207 -0
  413. package/contracts/{types → type}/AddressSet.sol +1 -1
  414. package/contracts/type/Amount.sol +128 -0
  415. package/contracts/{types → type}/Blocknumber.sol +21 -3
  416. package/contracts/type/ClaimId.sol +75 -0
  417. package/contracts/{types → type}/DistributorType.sol +2 -2
  418. package/contracts/{types → type}/Fee.sol +33 -23
  419. package/contracts/{types → type}/NftId.sol +21 -15
  420. package/contracts/type/NftIdSet.sol +62 -0
  421. package/contracts/type/ObjectType.sol +241 -0
  422. package/contracts/type/PayoutId.sol +82 -0
  423. package/contracts/{types → type}/Referral.sol +5 -1
  424. package/contracts/type/RequestId.sol +75 -0
  425. package/contracts/{types → type}/RiskId.sol +1 -1
  426. package/contracts/type/RoleId.sol +201 -0
  427. package/contracts/type/Seconds.sol +81 -0
  428. package/contracts/type/Selector.sol +102 -0
  429. package/contracts/{types → type}/StateId.sol +38 -4
  430. package/contracts/type/String.sol +53 -0
  431. package/contracts/{types → type}/Timestamp.sol +23 -14
  432. package/contracts/{types → type}/UFixed.sol +1 -0
  433. package/contracts/{types → type}/Version.sol +6 -2
  434. package/package.json +8 -5
  435. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  436. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  437. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -610
  438. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  439. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -267
  440. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  441. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  442. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  443. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  444. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  445. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  446. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  447. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -774
  448. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  449. package/artifacts/contracts/components/Product.sol/Product.json +0 -754
  450. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  451. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  452. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  453. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  454. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  455. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  456. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  457. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  458. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  459. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  460. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  461. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  462. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  463. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  464. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  465. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  466. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  467. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  468. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  469. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  470. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  471. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  472. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  473. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  474. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  475. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  476. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  477. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  478. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  480. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  482. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  484. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  485. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  486. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  487. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  488. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  489. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  490. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  491. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  492. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  493. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -930
  494. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  495. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  496. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  497. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  498. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  499. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  500. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  501. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  502. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  503. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  504. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  505. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  506. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  507. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  508. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  509. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  510. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  511. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  512. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  513. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  514. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  515. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  516. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  517. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  518. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  519. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  520. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  521. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  522. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  523. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  524. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  525. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  526. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  527. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  528. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  529. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  530. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  531. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  532. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  533. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  534. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  535. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  536. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  537. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  538. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  539. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  540. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  541. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  542. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  543. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  544. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  545. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  546. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  547. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  548. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  549. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  550. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  551. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  552. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  553. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  554. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  555. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  556. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  557. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  558. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  559. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  560. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  561. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  562. package/contracts/components/BaseComponent.sol +0 -86
  563. package/contracts/components/Distribution.sol +0 -166
  564. package/contracts/components/IBaseComponent.sol +0 -24
  565. package/contracts/components/IDistributionComponent.sol +0 -43
  566. package/contracts/components/IPoolComponent.sol +0 -62
  567. package/contracts/components/IProductComponent.sol +0 -35
  568. package/contracts/components/Pool.sol +0 -259
  569. package/contracts/components/Product.sol +0 -297
  570. package/contracts/experiment/cloning/Cloner.sol +0 -47
  571. package/contracts/experiment/errors/Require.sol +0 -38
  572. package/contracts/experiment/errors/Revert.sol +0 -44
  573. package/contracts/experiment/inheritance/A.sol +0 -53
  574. package/contracts/experiment/inheritance/B.sol +0 -28
  575. package/contracts/experiment/inheritance/C.sol +0 -34
  576. package/contracts/experiment/inheritance/IA.sol +0 -13
  577. package/contracts/experiment/inheritance/IB.sol +0 -10
  578. package/contracts/experiment/inheritance/IC.sol +0 -12
  579. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  580. package/contracts/experiment/statemachine/ISM.sol +0 -25
  581. package/contracts/experiment/statemachine/SM.sol +0 -57
  582. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  583. package/contracts/experiment/types/TypeA.sol +0 -47
  584. package/contracts/experiment/types/TypeB.sol +0 -29
  585. package/contracts/instance/AccessManagedSimple.sol +0 -122
  586. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  587. package/contracts/instance/InstanceAccessManager.sol +0 -288
  588. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  589. package/contracts/instance/base/IInstanceBase.sol +0 -23
  590. package/contracts/instance/base/IService.sol +0 -15
  591. package/contracts/instance/base/KeyValueStore.sol +0 -172
  592. package/contracts/instance/base/Lifecycle.sol +0 -100
  593. package/contracts/instance/base/ServiceBase.sol +0 -44
  594. package/contracts/instance/module/ISetup.sol +0 -43
  595. package/contracts/instance/module/ITreasury.sol +0 -23
  596. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  597. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  598. package/contracts/instance/service/IDistributionService.sol +0 -12
  599. package/contracts/instance/service/IPoolService.sol +0 -37
  600. package/contracts/instance/service/IProductService.sol +0 -107
  601. package/contracts/shared/ContractDeployerLib.sol +0 -72
  602. package/contracts/test/TestFee.sol +0 -25
  603. package/contracts/test/TestRegisterable.sol +0 -18
  604. package/contracts/test/TestRoleId.sol +0 -14
  605. package/contracts/test/TestService.sol +0 -26
  606. package/contracts/test/TestToken.sol +0 -26
  607. package/contracts/test/TestVersion.sol +0 -44
  608. package/contracts/test/TestVersionable.sol +0 -17
  609. package/contracts/types/ChainId.sol +0 -38
  610. package/contracts/types/NftIdSet.sol +0 -60
  611. package/contracts/types/NumberId.sol +0 -52
  612. package/contracts/types/ObjectType.sol +0 -152
  613. package/contracts/types/RoleId.sol +0 -82
  614. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -2,92 +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 {ServiceBase} from "../../contracts/instance/base/ServiceBase.sol";
12
- import {IRegistry} from "../registry/IRegistry.sol";
13
- import {Registry} from "../registry/Registry.sol";
14
- import {RegistryService} from "../registry/RegistryService.sol";
15
- import {IService} from "../../contracts/instance/base/IService.sol";
16
- import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
17
- import {NftId, NftIdLib, zeroNftId} from "../../contracts/types/NftId.sol";
18
- import {VersionLib} from "../types/Version.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";
19
40
 
20
- contract InstanceService is ServiceBase, IInstanceService {
21
41
 
22
- address internal _registryAddress;
23
- address internal _accessManagerMaster;
24
- address internal _instanceMaster;
25
- address internal _instanceReaderMaster;
42
+ contract InstanceService is
43
+ Service,
44
+ IInstanceService
45
+ {
26
46
 
27
47
  // TODO update to real hash when instance is stable
28
48
  bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
29
- 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
+ }
30
96
 
31
97
  function createInstanceClone()
32
98
  external
33
99
  returns (
34
- AccessManagerSimple clonedAccessManager,
35
100
  Instance clonedInstance,
36
- NftId instanceNftId,
37
- InstanceReader clonedInstanceReader
101
+ NftId clonedInstanceNftId
38
102
  )
39
103
  {
40
- Registry registry = Registry(_registryAddress);
41
- NftId registryNftId = registry.getNftId(_registryAddress);
42
- address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
43
- RegistryService registryService = RegistryService(registryServiceAddress);
44
-
45
- clonedAccessManager = AccessManagerSimple(Clones.clone(_accessManagerMaster));
46
- clonedAccessManager.initialize(msg.sender);
47
-
48
- clonedInstance = Instance(Clones.clone(_instanceMaster));
49
- clonedInstance.initialize(address(clonedAccessManager), _registryAddress, registryNftId);
50
- ( IRegistry.ObjectInfo memory info, ) = registryService.registerInstance(clonedInstance);
51
- instanceNftId = info.nftId;
104
+ address instanceOwner = msg.sender;
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
111
+ clonedAccessManager.initialize(address(this));
112
+
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);
52
122
 
53
- clonedInstanceReader = InstanceReader(Clones.clone(address(_instanceReaderMaster)));
54
- clonedInstanceReader.initialize(_registryAddress, instanceNftId);
123
+ InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
124
+ clonedInstanceReader.initialize(address(clonedInstance));
125
+ clonedInstance.setInstanceReader(clonedInstanceReader);
126
+
127
+ BundleManager clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
128
+ clonedBundleManager.initialize(address(clonedInstance));
129
+ clonedInstance.setBundleManager(clonedBundleManager);
130
+
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);
135
+
136
+ // TODO amend setters with instance specific , policy manager ...
137
+
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),
164
+ address(clonedInstance),
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
+
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);
55
219
  }
56
220
 
57
- function setAccessManagerMaster(address accessManagerMaster) external {
58
- _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);
59
245
  }
60
246
 
61
- function setInstanceMaster(address instanceMaster) external {
62
- _instanceMaster = instanceMaster;
247
+
248
+ function getMasterInstanceReader() external view returns (address) {
249
+ return _masterInstanceReader;
63
250
  }
64
251
 
65
- function setInstanceReaderMaster(address instanceReaderMaster) external {
66
- _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;
67
295
  }
68
296
 
69
- function getInstanceReaderMaster() external view returns (address) {
70
- 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;
71
306
  }
72
307
 
73
- function getInstanceMaster() external view returns (address) {
74
- 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);
75
319
  }
76
320
 
77
- function getAccessManagerMaster() external view returns (address) {
78
- 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
+ );
79
340
  }
80
341
 
81
- // From IService
82
- function getName() public pure override(IService, ServiceBase) returns(string memory) {
83
- 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
+ }
84
389
  }
85
390
 
86
391
  /// @dev top level initializer
87
- // 1) registry is non upgradeable -> don't need a proxy and uses constructor !
88
- // 2) deploy registry service first -> from its initialization func it is easier to deploy registry then vice versa
89
- // 3) deploy registry -> pass registry service address as constructor argument
90
- // registry is getting instantiated and locked to registry service address forever
91
392
  function _initialize(
92
393
  address owner,
93
394
  bytes memory data
@@ -96,32 +397,43 @@ contract InstanceService is ServiceBase, IInstanceService {
96
397
  initializer
97
398
  virtual override
98
399
  {
99
- // bytes memory encodedConstructorArguments = abi.encode(
100
- // _registryAddress);
400
+ (
401
+ address registryAddress,,
402
+ //address managerAddress
403
+ address authority
404
+ ) = abi.decode(data, (address, address, address));
101
405
 
102
- // bytes memory instanceCreationCode = ContractDeployerLib.getCreationCode(
103
- // instanceByteCodeWithInitCode,
104
- // encodedConstructorArguments);
406
+ initializeService(registryAddress, authority, owner);
105
407
 
106
- // address instanceAddress = ContractDeployerLib.deploy(
107
- // instanceCreationCode,
108
- // INSTANCE_CREATION_CODE_HASH);
408
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
409
+ _stakingService = IStakingService(_getServiceAddress(STAKING()));
109
410
 
110
- address initialOwner = address(0);
111
- (_registryAddress, initialOwner) = abi.decode(data, (address, address));
411
+ registerInterface(type(IInstanceService).interfaceId);
412
+ }
112
413
 
113
- // // TODO register instance in registry
114
- IRegistry registry = IRegistry(_registryAddress);
115
- NftId registryNftId = registry.getNftId(_registryAddress);
116
414
 
117
- _initializeServiceBase(_registryAddress, registryNftId, initialOwner);
118
-
119
- _registerInterface(type(IService).interfaceId);
120
- _registerInterface(type(IInstanceService).interfaceId);
121
- }
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
+ }
122
430
 
123
- function getInstance() external view returns (Instance) {
124
- return Instance(address(this));
431
+ instance = Instance(instanceInfo.objectAddress);
432
+ componentNftId = componentInfo.nftId;
125
433
  }
126
- }
127
434
 
435
+ // From IService
436
+ function _getDomain() internal pure override returns(ObjectType) {
437
+ return INSTANCE();
438
+ }
439
+ }
@@ -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 ----------------------------------------------------//