@etherisc/gif-next 0.0.2-b643f7e-850 → 0.0.2-b6ac966-948

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 (676) hide show
  1. package/README.md +40 -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 +1548 -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 +1234 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1560 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +858 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +943 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +945 -0
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +274 -1320
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +444 -172
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +364 -3003
  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 +662 -349
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +587 -397
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +349 -127
  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/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  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/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.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 +1185 -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 +802 -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 +1093 -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 +1520 -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 +1300 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +786 -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} +383 -338
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1002 -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 +1312 -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 +1318 -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/IDistributionService.sol/IDistributionService.json → product/IPricingService.sol/IPricingService.json} +290 -187
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  133. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +985 -0
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  135. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → product/IProductService.sol/IProductService.json} +144 -112
  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 +1276 -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 +377 -112
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +290 -297
  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 +611 -189
  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 +477 -318
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +337 -133
  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/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.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 +1640 -0
  178. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +812 -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} +208 -209
  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/{components/BaseComponent.sol/BaseComponent.json → shared/IComponent.sol/IComponent.json} +281 -103
  186. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  187. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +977 -0
  188. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +379 -370
  190. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  191. package/artifacts/contracts/{instance/IInstanceBase.sol/IInstanceBase.json → shared/IKeyValueStore.sol/IKeyValueStore.json} +60 -34
  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/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  206. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  207. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1015 -0
  208. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  209. package/artifacts/contracts/{instance/base/IKeyValueStore.sol/IKeyValueStore.json → shared/KeyValueStore.sol/KeyValueStore.json} +88 -20
  210. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  211. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  212. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  213. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  214. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
  216. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
  220. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  222. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Service.sol/Service.json +201 -162
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  226. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  227. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  228. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  229. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  230. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  232. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  233. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  234. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  236. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  238. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  240. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  242. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  244. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  246. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  247. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  248. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  249. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  250. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Amount.sol/AmountLib.json +369 -0
  252. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  254. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  256. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  258. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  260. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  262. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  264. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  265. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  266. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  268. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  270. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  272. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  274. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  276. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  278. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  280. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  282. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  284. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  286. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  288. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  290. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
  292. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +498 -0
  294. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  296. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  298. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  299. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  300. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  301. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  302. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  303. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  304. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  305. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -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 +47 -0
  318. package/contracts/distribution/Distribution.sol +301 -0
  319. package/contracts/distribution/DistributionService.sol +345 -0
  320. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  321. package/contracts/distribution/IDistributionComponent.sol +52 -0
  322. package/contracts/distribution/IDistributionService.sol +97 -0
  323. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +40 -43
  324. package/contracts/instance/IInstance.sol +68 -38
  325. package/contracts/instance/IInstanceService.sol +78 -18
  326. package/contracts/instance/Instance.sol +181 -380
  327. package/contracts/instance/InstanceAdmin.sol +266 -0
  328. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  329. package/contracts/instance/InstanceReader.sol +173 -83
  330. package/contracts/instance/InstanceService.sol +388 -178
  331. package/contracts/instance/InstanceServiceManager.sol +13 -30
  332. package/contracts/instance/InstanceStore.sol +276 -0
  333. package/contracts/instance/base/BalanceStore.sol +123 -0
  334. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  335. package/contracts/instance/base/ObjectCounter.sol +21 -0
  336. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  337. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +21 -37
  338. package/contracts/instance/module/IAccess.sol +29 -21
  339. package/contracts/instance/module/IBundle.sol +8 -8
  340. package/contracts/instance/module/IComponents.sol +51 -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 +33 -0
  349. package/contracts/oracle/IOracleService.sol +65 -0
  350. package/contracts/oracle/Oracle.sol +170 -0
  351. package/contracts/oracle/OracleService.sol +278 -0
  352. package/contracts/oracle/OracleServiceManager.sol +39 -0
  353. package/contracts/pool/BasicPool.sol +164 -0
  354. package/contracts/pool/BasicPoolAuthorization.sol +55 -0
  355. package/contracts/pool/BundleService.sol +342 -0
  356. package/contracts/pool/BundleServiceManager.sol +39 -0
  357. package/contracts/pool/IBundleService.sol +120 -0
  358. package/contracts/pool/IPoolComponent.sol +58 -0
  359. package/contracts/pool/IPoolService.sol +150 -0
  360. package/contracts/pool/Pool.sol +328 -0
  361. package/contracts/pool/PoolService.sol +436 -0
  362. package/contracts/pool/PoolServiceManager.sol +39 -0
  363. package/contracts/product/ApplicationService.sol +230 -0
  364. package/contracts/product/ApplicationServiceManager.sol +38 -0
  365. package/contracts/product/BasicProduct.sol +82 -0
  366. package/contracts/product/BasicProductAuthorization.sol +43 -0
  367. package/contracts/product/ClaimService.sol +416 -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 +40 -0
  374. package/contracts/product/IProductService.sol +33 -0
  375. package/contracts/product/PolicyService.sol +475 -0
  376. package/contracts/product/PolicyServiceManager.sol +39 -0
  377. package/contracts/product/PricingService.sol +300 -0
  378. package/contracts/product/PricingServiceManager.sol +39 -0
  379. package/contracts/product/Product.sol +392 -0
  380. package/contracts/product/ProductService.sol +99 -0
  381. package/contracts/product/ProductServiceManager.sol +39 -0
  382. package/contracts/registry/ChainNft.sol +15 -0
  383. package/contracts/registry/IRegistry.sol +85 -32
  384. package/contracts/registry/IRegistryService.sol +47 -28
  385. package/contracts/registry/ITransferInterceptor.sol +1 -0
  386. package/contracts/registry/Registry.sol +376 -248
  387. package/contracts/registry/RegistryAdmin.sol +365 -0
  388. package/contracts/registry/RegistryService.sol +111 -217
  389. package/contracts/registry/RegistryServiceManager.sol +26 -53
  390. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  391. package/contracts/registry/ReleaseRegistry.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 +280 -0
  395. package/contracts/shared/ComponentService.sol +622 -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 +112 -0
  401. package/contracts/shared/IInstanceLinkedComponent.sol +56 -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 +16 -6
  409. package/contracts/shared/InitializableCustom.sol +177 -0
  410. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  411. package/contracts/shared/KeyValueStore.sol +131 -0
  412. package/contracts/shared/Lifecycle.sol +77 -0
  413. package/contracts/shared/NftIdSet.sol +65 -0
  414. package/contracts/shared/NftOwnable.sol +59 -86
  415. package/contracts/shared/PolicyHolder.sol +102 -0
  416. package/contracts/shared/Registerable.sol +26 -41
  417. package/contracts/shared/RegistryLinked.sol +43 -0
  418. package/contracts/shared/Service.sol +58 -31
  419. package/contracts/shared/TokenHandler.sol +37 -6
  420. package/contracts/staking/IStaking.sol +167 -0
  421. package/contracts/staking/IStakingService.sol +160 -0
  422. package/contracts/staking/StakeManagerLib.sol +231 -0
  423. package/contracts/staking/Staking.sol +514 -0
  424. package/contracts/staking/StakingLifecycle.sol +23 -0
  425. package/contracts/staking/StakingManager.sol +50 -0
  426. package/contracts/staking/StakingReader.sol +183 -0
  427. package/contracts/staking/StakingService.sol +411 -0
  428. package/contracts/staking/StakingServiceManager.sol +44 -0
  429. package/contracts/staking/StakingStore.sol +605 -0
  430. package/contracts/staking/TargetManagerLib.sol +207 -0
  431. package/contracts/{types → type}/AddressSet.sol +1 -1
  432. package/contracts/type/Amount.sol +133 -0
  433. package/contracts/{types → type}/Blocknumber.sol +21 -3
  434. package/contracts/type/ClaimId.sol +75 -0
  435. package/contracts/{types → type}/DistributorType.sol +2 -2
  436. package/contracts/{types → type}/Fee.sol +33 -23
  437. package/contracts/{types → type}/NftId.sol +21 -15
  438. package/contracts/{types → type}/NftIdSet.sol +2 -2
  439. package/contracts/type/ObjectType.sol +271 -0
  440. package/contracts/type/PayoutId.sol +82 -0
  441. package/contracts/{types → type}/Referral.sol +5 -1
  442. package/contracts/type/RequestId.sol +75 -0
  443. package/contracts/{types → type}/RiskId.sol +1 -1
  444. package/contracts/type/RoleId.sol +174 -0
  445. package/contracts/type/Seconds.sol +81 -0
  446. package/contracts/type/Selector.sol +102 -0
  447. package/contracts/{types → type}/StateId.sol +34 -4
  448. package/contracts/type/String.sol +53 -0
  449. package/contracts/{types → type}/Timestamp.sol +23 -14
  450. package/contracts/{types → type}/UFixed.sol +7 -0
  451. package/contracts/{types → type}/Version.sol +5 -2
  452. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  453. package/contracts/upgradeability/ProxyManager.sol +198 -0
  454. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  455. package/contracts/upgradeability/Versionable.sol +59 -0
  456. package/package.json +10 -7
  457. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  458. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  459. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -744
  460. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  461. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  462. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  463. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  464. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  465. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  466. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  467. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  468. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -939
  469. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  470. package/artifacts/contracts/components/Product.sol/Product.json +0 -855
  471. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  472. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  473. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  474. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  475. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  476. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  477. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  478. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  479. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  480. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  481. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  482. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  483. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  484. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  485. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  486. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  487. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  488. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  489. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  490. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  491. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  492. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  493. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  494. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  496. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  498. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  499. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  500. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  501. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  503. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  505. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  506. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  507. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  508. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  509. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  510. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  511. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  512. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -775
  513. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  514. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  515. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  516. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  517. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -940
  518. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  519. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  520. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  521. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -272
  522. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  523. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  524. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  525. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  526. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  527. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  528. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  529. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  530. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  531. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  532. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  533. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  534. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  535. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  536. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
  537. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  538. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -444
  539. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  540. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  541. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  542. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  543. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  544. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1049
  545. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  546. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -464
  547. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  548. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1147
  549. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  550. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -488
  551. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  552. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  553. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  554. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  555. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  556. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  557. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  558. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  559. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  560. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  561. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  562. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  563. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  564. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  565. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  566. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  567. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  568. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  569. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  570. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  571. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  572. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  573. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  574. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  575. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  576. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  577. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  578. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  579. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  580. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  581. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  582. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  583. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  584. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  585. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  586. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  587. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  588. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  589. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  590. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  591. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  592. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  593. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  594. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  595. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  596. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  597. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  598. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  599. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  600. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  601. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  602. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  603. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  604. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  605. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  606. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  607. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  608. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  609. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  610. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  611. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  612. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  613. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  614. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  615. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  616. package/contracts/components/BaseComponent.sol +0 -132
  617. package/contracts/components/Distribution.sol +0 -163
  618. package/contracts/components/IBaseComponent.sol +0 -31
  619. package/contracts/components/IDistributionComponent.sol +0 -44
  620. package/contracts/components/IPoolComponent.sol +0 -66
  621. package/contracts/components/IProductComponent.sol +0 -35
  622. package/contracts/components/Pool.sol +0 -267
  623. package/contracts/components/Product.sol +0 -289
  624. package/contracts/experiment/cloning/Cloner.sol +0 -47
  625. package/contracts/experiment/errors/Require.sol +0 -38
  626. package/contracts/experiment/errors/Revert.sol +0 -44
  627. package/contracts/experiment/inheritance/A.sol +0 -53
  628. package/contracts/experiment/inheritance/B.sol +0 -28
  629. package/contracts/experiment/inheritance/C.sol +0 -34
  630. package/contracts/experiment/inheritance/IA.sol +0 -13
  631. package/contracts/experiment/inheritance/IB.sol +0 -10
  632. package/contracts/experiment/inheritance/IC.sol +0 -12
  633. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  634. package/contracts/experiment/statemachine/ISM.sol +0 -25
  635. package/contracts/experiment/statemachine/SM.sol +0 -57
  636. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  637. package/contracts/experiment/types/TypeA.sol +0 -47
  638. package/contracts/experiment/types/TypeB.sol +0 -29
  639. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  640. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  641. package/contracts/instance/IInstanceBase.sol +0 -26
  642. package/contracts/instance/InstanceAccessManager.sol +0 -288
  643. package/contracts/instance/InstanceBase.sol +0 -41
  644. package/contracts/instance/base/ComponentServiceBase.sol +0 -134
  645. package/contracts/instance/base/IInstanceBase.sol +0 -23
  646. package/contracts/instance/base/KeyValueStore.sol +0 -172
  647. package/contracts/instance/base/Lifecycle.sol +0 -100
  648. package/contracts/instance/module/ISetup.sol +0 -46
  649. package/contracts/instance/module/ITreasury.sol +0 -23
  650. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  651. package/contracts/instance/service/DistributionService.sol +0 -88
  652. package/contracts/instance/service/DistributionServiceManager.sol +0 -54
  653. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  654. package/contracts/instance/service/IDistributionService.sol +0 -12
  655. package/contracts/instance/service/IPoolService.sol +0 -51
  656. package/contracts/instance/service/IProductService.sol +0 -110
  657. package/contracts/instance/service/PoolService.sol +0 -287
  658. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  659. package/contracts/instance/service/ProductService.sol +0 -570
  660. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  661. package/contracts/shared/ContractDeployerLib.sol +0 -72
  662. package/contracts/shared/ProxyManager.sol +0 -94
  663. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  664. package/contracts/shared/Versionable.sol +0 -147
  665. package/contracts/test/TestFee.sol +0 -25
  666. package/contracts/test/TestRegisterable.sol +0 -18
  667. package/contracts/test/TestRoleId.sol +0 -14
  668. package/contracts/test/TestService.sol +0 -24
  669. package/contracts/test/TestToken.sol +0 -26
  670. package/contracts/test/TestVersion.sol +0 -44
  671. package/contracts/test/TestVersionable.sol +0 -17
  672. package/contracts/types/ChainId.sol +0 -38
  673. package/contracts/types/NumberId.sol +0 -52
  674. package/contracts/types/ObjectType.sol +0 -152
  675. package/contracts/types/RoleId.sol +0 -90
  676. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -2,193 +2,397 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
- import {AccessManagerUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagerUpgradeable.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 {BundleSet} from "./BundleSet.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";
6
30
 
7
- import {AccessManagerUpgradeableInitializeable} from "./AccessManagerUpgradeableInitializeable.sol";
8
- import {InstanceAccessManager} from "./InstanceAccessManager.sol";
9
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";
10
35
  import {IInstanceService} from "./IInstanceService.sol";
11
36
  import {InstanceReader} from "./InstanceReader.sol";
12
- import {BundleManager} from "./BundleManager.sol";
13
- import {IRegistry} from "../registry/IRegistry.sol";
14
- import {Registry} from "../registry/Registry.sol";
15
- import {RegistryService} from "../registry/RegistryService.sol";
16
- import {Service} from "../../contracts/shared/Service.sol";
17
- import {IService} from "../shared/IService.sol";
18
- import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
19
- import {NftId, NftIdLib, zeroNftId} from "../../contracts/types/NftId.sol";
20
- import {RoleId} from "../types/RoleId.sol";
21
- import {VersionLib} from "../types/Version.sol";
22
- import {ADMIN_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_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";
23
40
 
24
- contract InstanceService is Service, IInstanceService {
25
41
 
26
- address internal _registryAddress;
27
- address internal _accessManagerMaster;
28
- address internal _instanceMaster;
29
- address internal _instanceReaderMaster;
30
- address internal _instanceBundleManagerMaster;
42
+ contract InstanceService is
43
+ Service,
44
+ IInstanceService
45
+ {
31
46
 
32
47
  // TODO update to real hash when instance is stable
33
48
  bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
34
- string public constant NAME = "InstanceService";
35
49
 
36
- function createInstanceClone()
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 _masterInstanceBundleSet;
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
+ }
96
+
97
+ function createInstance()
37
98
  external
38
99
  returns (
39
- AccessManagerUpgradeableInitializeable clonedAccessManager,
40
100
  Instance clonedInstance,
41
- NftId clonedInstanceNftId,
42
- InstanceReader clonedInstanceReader,
43
- BundleManager clonedBundleManager
101
+ NftId clonedInstanceNftId
44
102
  )
45
103
  {
104
+ // tx sender will become instance owner
46
105
  address instanceOwner = msg.sender;
47
- Registry registry = Registry(_registryAddress);
48
- NftId registryNftId = registry.getNftId(_registryAddress);
49
- address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
50
- RegistryService registryService = RegistryService(registryServiceAddress);
51
-
52
- // initially set the authority of the access managar to this (being the instance service).
53
- // This will allow the instance service to bootstrap the authorizations of the instance
54
- // and then transfer the ownership of the access manager to the instance owner once everything is setup
55
- clonedAccessManager = AccessManagerUpgradeableInitializeable(Clones.clone(_accessManagerMaster));
56
- clonedAccessManager.__AccessManagerUpgradeableInitializeable_init(address(this));
57
-
58
- clonedInstance = Instance(Clones.clone(_instanceMaster));
59
- clonedInstance.initialize(address(clonedAccessManager), _registryAddress, registryNftId, msg.sender);
60
- ( IRegistry.ObjectInfo memory info, ) = registryService.registerInstance(clonedInstance);
61
- clonedInstanceNftId = info.nftId;
62
-
63
- clonedInstanceReader = InstanceReader(Clones.clone(address(_instanceReaderMaster)));
64
- clonedInstanceReader.initialize(_registryAddress, clonedInstanceNftId);
65
- clonedInstance.setInstanceReader(clonedInstanceReader);
66
-
67
- clonedBundleManager = BundleManager(Clones.clone(_instanceBundleManagerMaster));
68
- clonedBundleManager.initialize(address(clonedAccessManager), _registryAddress, clonedInstanceNftId);
69
- clonedInstance.setBundleManager(clonedBundleManager);
70
-
71
- // TODO amend setters with instance specific , policy manager ...
72
-
73
- _grantInitialAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
74
-
75
- // to complete setup switch instance ownership to the instance owner
76
- // TODO: use a role less powerful than admin, maybe INSTANCE_ADMIN (does not exist yet)
77
- clonedAccessManager.grantRole(ADMIN_ROLE().toInt(), instanceOwner, 0);
78
- clonedAccessManager.revokeRole(ADMIN_ROLE().toInt(), address(this));
79
-
80
- emit LogInstanceCloned(address(clonedAccessManager), address(clonedInstance), address(clonedInstanceReader), clonedInstanceNftId);
81
- }
82
-
83
- function _grantInitialAuthorizations(AccessManagerUpgradeable clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
84
- // configure authorization for distribution service on instance
85
- address distributionServiceAddress = _registry.getServiceAddress("DistributionService", VersionLib.toVersion(3, 0, 0).toMajorPart());
86
- clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE().toInt(), distributionServiceAddress, 0);
87
- bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](2);
88
- instanceDistributionServiceSelectors[0] = clonedInstance.createDistributionSetup.selector;
89
- instanceDistributionServiceSelectors[1] = clonedInstance.updateDistributionSetup.selector;
90
- clonedAccessManager.setTargetFunctionRole(
91
- address(clonedInstance),
92
- instanceDistributionServiceSelectors,
93
- DISTRIBUTION_SERVICE_ROLE().toInt());
94
-
95
- // configure authorization for pool service on instance
96
- address poolServiceAddress = _registry.getServiceAddress("PoolService", VersionLib.toVersion(3, 0, 0).toMajorPart());
97
- clonedAccessManager.grantRole(POOL_SERVICE_ROLE().toInt(), address(poolServiceAddress), 0);
98
- bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
99
- instancePoolServiceSelectors[0] = clonedInstance.createPoolSetup.selector;
100
- instancePoolServiceSelectors[1] = clonedInstance.updatePoolSetup.selector;
101
- instancePoolServiceSelectors[2] = clonedInstance.createBundle.selector;
102
- instancePoolServiceSelectors[3] = clonedInstance.updateBundle.selector;
103
- clonedAccessManager.setTargetFunctionRole(
104
- address(clonedInstance),
105
- instancePoolServiceSelectors,
106
- POOL_SERVICE_ROLE().toInt());
106
+
107
+ // start with setting up a new OZ access manager
108
+ AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
109
+ Clones.clone(_masterAccessManager));
107
110
 
108
- // configure authorization for pool service on bundle manager
109
- bytes4[] memory bundleManagerPoolServiceSelectors = new bytes4[](5);
110
- bundleManagerPoolServiceSelectors[0] = clonedBundleManager.linkPolicy.selector;
111
- bundleManagerPoolServiceSelectors[1] = clonedBundleManager.unlinkPolicy.selector;
112
- bundleManagerPoolServiceSelectors[2] = clonedBundleManager.add.selector;
113
- bundleManagerPoolServiceSelectors[3] = clonedBundleManager.lock.selector;
114
- bundleManagerPoolServiceSelectors[4] = clonedBundleManager.unlock.selector;
115
- clonedAccessManager.setTargetFunctionRole(
116
- address(clonedBundleManager),
117
- bundleManagerPoolServiceSelectors,
118
- POOL_SERVICE_ROLE().toInt());
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
115
+
116
+ clonedInstanceAdmin.initialize(
117
+ clonedAccessManager,
118
+ InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
119
119
 
120
- // configure authorization for product service on instance
121
- address productServiceAddress = _registry.getServiceAddress("ProductService", VersionLib.toVersion(3, 0, 0).toMajorPart());
122
- clonedAccessManager.grantRole(PRODUCT_SERVICE_ROLE().toInt(), address(productServiceAddress), 0);
123
- bytes4[] memory instanceProductServiceSelectors = new bytes4[](9);
124
- instanceProductServiceSelectors[0] = clonedInstance.createProductSetup.selector;
125
- instanceProductServiceSelectors[1] = clonedInstance.updateProductSetup.selector;
126
- instanceProductServiceSelectors[2] = clonedInstance.createRisk.selector;
127
- instanceProductServiceSelectors[3] = clonedInstance.updateRisk.selector;
128
- instanceProductServiceSelectors[4] = clonedInstance.updateRiskState.selector;
129
- instanceProductServiceSelectors[5] = clonedInstance.createPolicy.selector;
130
- instanceProductServiceSelectors[6] = clonedInstance.updatePolicy.selector;
131
- instanceProductServiceSelectors[7] = clonedInstance.updatePolicyState.selector;
132
- clonedAccessManager.setTargetFunctionRole(
133
- address(clonedInstance),
134
- instanceProductServiceSelectors,
135
- PRODUCT_SERVICE_ROLE().toInt());
120
+ InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
121
+ BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
122
+ InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
123
+
124
+ // clone instance
125
+ clonedInstance = Instance(Clones.clone(_masterInstance));
126
+ clonedInstance.initialize(
127
+ clonedInstanceAdmin,
128
+ clonedInstanceStore,
129
+ clonedBundleSet,
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));
136
150
  }
137
151
 
138
- function setAccessManagerMaster(address accessManagerMaster) external {
139
- require(
140
- _accessManagerMaster == address(0),
141
- "ERROR:CRD-001:ACCESS_MANAGER_MASTER_ALREADY_SET");
142
- _accessManagerMaster = accessManagerMaster;
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);
143
162
  }
144
163
 
145
- function setInstanceMaster(address instanceMaster) external {
146
- require(
147
- _instanceMaster == address(0),
148
- "ERROR:CRD-002:INSTANCE_MASTER_ALREADY_SET");
149
- _instanceMaster = instanceMaster;
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);
150
174
  }
151
175
 
152
- function setInstanceReaderMaster(address instanceReaderMaster) external {
153
- require(
154
- _instanceReaderMaster == address(0),
155
- "ERROR:CRD-003:INSTANCE_READER_MASTER_ALREADY_SET");
156
- _instanceReaderMaster = instanceReaderMaster;
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);
157
187
  }
158
188
 
159
- function setBundleManagerMaster(address bundleManagerMaster) external {
160
- require(
161
- _instanceBundleManagerMaster == address(0),
162
- "ERROR:CRD-004:BUNDLE_MANAGER_MASTER_ALREADY_SET");
163
- _instanceBundleManagerMaster = bundleManagerMaster;
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);
164
200
  }
165
201
 
166
- function getInstanceReaderMaster() external view returns (address) {
167
- return _instanceReaderMaster;
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);
168
227
  }
169
228
 
170
- function getInstanceMaster() external view returns (address) {
171
- return _instanceMaster;
229
+
230
+ function getMasterInstanceReader() external view returns (address) {
231
+ return _masterInstanceReader;
172
232
  }
173
233
 
174
- function getAccessManagerMaster() external view returns (address) {
175
- return _accessManagerMaster;
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(_masterInstanceBundleSet != address(0)) { revert ErrorInstanceServiceMasterBundleSetAlreadySet(); }
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
+ BundleSet bundleManager = instance.getBundleSet();
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 ErrorInstanceServiceBundleSetZero(); }
260
+ if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
261
+
262
+ if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
263
+ if(bundleManager.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
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
+ _masterInstanceBundleSet = bundleManagerAddress;
273
+ _masterInstanceStore = instanceStoreAddress;
274
+
275
+ IInstance masterInstance = IInstance(_masterInstance);
276
+ IRegistry.ObjectInfo memory info = _registryService.registerInstance(masterInstance, getOwner());
277
+ masterInstanceNftId = info.nftId;
278
+ }
279
+
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;
176
289
  }
177
290
 
178
- function getBundleManagerMaster() external view returns (address) {
179
- return _instanceBundleManagerMaster;
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);
180
302
  }
181
303
 
182
- // From IService
183
- function getName() public pure override(IService, Service) returns(string memory) {
184
- return NAME;
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());
342
+ }
343
+
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
+ );
363
+ }
364
+
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
+ }
185
393
  }
186
394
 
187
395
  /// @dev top level initializer
188
- // 1) registry is non upgradeable -> don't need a proxy and uses constructor !
189
- // 2) deploy registry service first -> from its initialization func it is easier to deploy registry then vice versa
190
- // 3) deploy registry -> pass registry service address as constructor argument
191
- // registry is getting instantiated and locked to registry service address forever
192
396
  function _initialize(
193
397
  address owner,
194
398
  bytes memory data
@@ -197,37 +401,43 @@ contract InstanceService is Service, IInstanceService {
197
401
  initializer
198
402
  virtual override
199
403
  {
200
- // bytes memory encodedConstructorArguments = abi.encode(
201
- // _registryAddress);
202
-
203
- // bytes memory instanceCreationCode = ContractDeployerLib.getCreationCode(
204
- // instanceByteCodeWithInitCode,
205
- // encodedConstructorArguments);
206
-
207
- // address instanceAddress = ContractDeployerLib.deploy(
208
- // instanceCreationCode,
209
- // INSTANCE_CREATION_CODE_HASH);
210
-
211
- address initialOwner = address(0);
212
- (_registryAddress, initialOwner) = abi.decode(data, (address, address));
213
- // TODO while InstanceService is not deployed in InstanceServiceManager constructor
214
- // owner is InstanceServiceManager deployer
215
- _initializeService(_registryAddress, owner);
216
-
217
- _registerInterface(type(IService).interfaceId);
218
- _registerInterface(type(IInstanceService).interfaceId);
404
+ (
405
+ address registryAddress,,
406
+ //address managerAddress
407
+ address authority
408
+ ) = abi.decode(data, (address, address, address));
409
+
410
+ initializeService(registryAddress, authority, owner);
411
+
412
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
413
+ _stakingService = IStakingService(_getServiceAddress(STAKING()));
414
+
415
+ registerInterface(type(IInstanceService).interfaceId);
219
416
  }
220
417
 
221
- function hasRole(address account, RoleId role, NftId instanceNftId) external view returns (bool) {
222
- IRegistry.ObjectInfo memory instanceObjectInfo = getRegistry().getObjectInfo(instanceNftId);
223
- address instanceAddress = instanceObjectInfo.objectAddress;
224
- Instance instance = Instance(instanceAddress);
225
- AccessManagerUpgradeable accessManager = AccessManagerUpgradeable(instance.authority());
226
- (bool isMember, uint32 executionDelay) = accessManager.hasRole(role.toInt(), account);
227
- if (executionDelay > 0) {
228
- return false;
229
- }
230
- 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;
231
437
  }
232
- }
233
438
 
439
+ // From IService
440
+ function _getDomain() internal pure override returns(ObjectType) {
441
+ return INSTANCE();
442
+ }
443
+ }