@etherisc/gif-next 0.0.2-b12de3e-067 → 0.0.2-b147315-239

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 (652) hide show
  1. package/README.md +19 -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 +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -143
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +274 -1333
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +444 -171
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +330 -2934
  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 +630 -351
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +605 -464
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +353 -155
  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/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  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 → pool}/IBundleService.sol/IBundleService.json +312 -278
  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/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +224 -248
  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/{instance/service → product}/IPolicyService.sol/IPolicyService.json +346 -290
  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} +283 -233
  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/{components/IBaseComponent.sol/IBaseComponent.json → product/IProductService.sol/IProductService.json} +144 -112
  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 +388 -127
  118. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  119. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +395 -219
  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 +576 -182
  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 +477 -318
  130. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  131. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +337 -133
  132. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  133. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +187 -0
  134. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  135. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1235 -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 +1 -1
  141. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +351 -100
  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/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +216 -198
  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/{components/BaseComponent.sol/BaseComponent.json → shared/IComponent.sol/IComponent.json} +281 -103
  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/IInstanceBase.sol/IInstanceBase.json → shared/IKeyValueStore.sol/IKeyValueStore.json} +60 -34
  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 +1 -1
  189. package/artifacts/contracts/shared/IService.sol/IService.json +97 -172
  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 +570 -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} +75 -43
  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 +1 -1
  213. package/artifacts/contracts/shared/Service.sol/Service.json +201 -162
  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 +187 -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 +2260 -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/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  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/{types → type}/Version.sol/VersionPartLib.json +3 -3
  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 +22 -25
  298. package/contracts/instance/IInstance.sol +76 -49
  299. package/contracts/instance/IInstanceService.sol +81 -18
  300. package/contracts/instance/Instance.sol +181 -382
  301. package/contracts/instance/InstanceAdmin.sol +331 -0
  302. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  303. package/contracts/instance/InstanceReader.sol +160 -83
  304. package/contracts/instance/InstanceService.sol +349 -209
  305. package/contracts/instance/InstanceServiceManager.sol +12 -25
  306. package/contracts/instance/InstanceStore.sol +272 -0
  307. package/contracts/instance/base/BalanceStore.sol +123 -0
  308. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  309. package/contracts/instance/base/ObjectCounter.sol +21 -0
  310. package/contracts/instance/base/ObjectLifecycle.sol +96 -0
  311. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +16 -37
  312. package/contracts/instance/module/IAccess.sol +29 -21
  313. package/contracts/instance/module/IBundle.sol +8 -8
  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 +73 -30
  352. package/contracts/registry/IRegistryService.sol +47 -28
  353. package/contracts/registry/IServiceAuthorization.sol +38 -0
  354. package/contracts/registry/ITransferInterceptor.sol +1 -0
  355. package/contracts/registry/Registry.sol +382 -248
  356. package/contracts/registry/RegistryAdmin.sol +333 -0
  357. package/contracts/registry/RegistryService.sol +114 -206
  358. package/contracts/registry/RegistryServiceManager.sol +24 -51
  359. package/contracts/registry/ReleaseLifecycle.sol +28 -0
  360. package/contracts/registry/ReleaseManager.sol +501 -0
  361. package/contracts/registry/ServiceAuthorization.sol +90 -0
  362. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  363. package/contracts/registry/TokenRegistry.sol +261 -57
  364. package/contracts/shared/AccessAdmin.sol +759 -0
  365. package/contracts/shared/AccessManagerCustom.sol +741 -0
  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 -13
  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 +15 -5
  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 +71 -0
  393. package/contracts/shared/NftIdSetManager.sol +65 -0
  394. package/contracts/shared/NftOwnable.sol +59 -86
  395. package/contracts/shared/PolicyHolder.sol +102 -0
  396. package/contracts/shared/ProxyManager.sol +131 -26
  397. package/contracts/shared/Registerable.sol +26 -41
  398. package/contracts/shared/RegistryLinked.sol +43 -0
  399. package/contracts/shared/Service.sol +57 -29
  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/{types → type}/NftIdSet.sol +2 -2
  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 +34 -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 +2 -1
  434. package/package.json +6 -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 -744
  438. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  439. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  440. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  441. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  442. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  443. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  444. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  445. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  446. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -939
  447. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  448. package/artifacts/contracts/components/Product.sol/Product.json +0 -855
  449. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  450. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  451. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  452. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  453. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  454. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  455. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  456. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  457. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  458. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  459. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  460. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  461. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  462. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  463. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  464. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  465. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  466. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  467. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  468. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  469. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  470. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  471. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  472. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  473. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  474. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  475. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  476. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  477. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  478. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  479. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  480. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  481. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  482. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  483. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  484. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  485. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  486. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  487. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  488. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  489. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  490. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  491. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.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 -940
  494. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  495. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  496. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  497. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
  498. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  499. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  500. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  501. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  502. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +0 -429
  503. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  504. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  505. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  506. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  507. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  508. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  509. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  510. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  511. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -923
  512. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  513. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -440
  514. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  515. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  516. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  517. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -684
  518. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  519. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -428
  520. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  521. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  522. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -466
  523. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  524. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  525. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  526. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  527. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  528. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  529. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -984
  530. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  531. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -464
  532. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  533. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -718
  534. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  535. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -428
  536. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  537. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -768
  538. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  539. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -420
  540. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  541. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  542. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  543. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  544. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  545. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  546. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  547. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  548. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  549. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  550. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  551. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  552. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  553. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  554. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  555. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  556. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  557. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  558. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  559. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  560. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  561. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  562. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  563. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  564. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  565. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  566. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  567. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  568. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  569. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  570. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  571. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  572. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  573. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  574. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  575. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  576. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  577. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  578. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  579. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  580. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  581. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  582. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  583. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  584. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  585. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  586. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  587. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  588. package/contracts/components/BaseComponent.sol +0 -132
  589. package/contracts/components/Distribution.sol +0 -163
  590. package/contracts/components/IBaseComponent.sol +0 -31
  591. package/contracts/components/IDistributionComponent.sol +0 -44
  592. package/contracts/components/IPoolComponent.sol +0 -66
  593. package/contracts/components/IProductComponent.sol +0 -35
  594. package/contracts/components/Pool.sol +0 -271
  595. package/contracts/components/Product.sol +0 -292
  596. package/contracts/experiment/cloning/Cloner.sol +0 -47
  597. package/contracts/experiment/errors/Require.sol +0 -38
  598. package/contracts/experiment/errors/Revert.sol +0 -44
  599. package/contracts/experiment/inheritance/A.sol +0 -53
  600. package/contracts/experiment/inheritance/B.sol +0 -28
  601. package/contracts/experiment/inheritance/C.sol +0 -34
  602. package/contracts/experiment/inheritance/IA.sol +0 -13
  603. package/contracts/experiment/inheritance/IB.sol +0 -10
  604. package/contracts/experiment/inheritance/IC.sol +0 -12
  605. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  606. package/contracts/experiment/statemachine/ISM.sol +0 -25
  607. package/contracts/experiment/statemachine/SM.sol +0 -57
  608. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  609. package/contracts/experiment/types/TypeA.sol +0 -47
  610. package/contracts/experiment/types/TypeB.sol +0 -29
  611. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  612. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  613. package/contracts/instance/IInstanceBase.sol +0 -26
  614. package/contracts/instance/InstanceAccessManager.sol +0 -288
  615. package/contracts/instance/InstanceBase.sol +0 -41
  616. package/contracts/instance/base/ComponentServiceBase.sol +0 -72
  617. package/contracts/instance/base/IInstanceBase.sol +0 -23
  618. package/contracts/instance/base/KeyValueStore.sol +0 -172
  619. package/contracts/instance/base/Lifecycle.sol +0 -100
  620. package/contracts/instance/module/ISetup.sol +0 -46
  621. package/contracts/instance/module/ITreasury.sol +0 -23
  622. package/contracts/instance/service/BundleService.sol +0 -260
  623. package/contracts/instance/service/BundleServiceManager.sol +0 -54
  624. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  625. package/contracts/instance/service/DistributionService.sol +0 -118
  626. package/contracts/instance/service/DistributionServiceManager.sol +0 -54
  627. package/contracts/instance/service/IBundleService.sol +0 -45
  628. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  629. package/contracts/instance/service/IDistributionService.sol +0 -12
  630. package/contracts/instance/service/IPolicyService.sol +0 -87
  631. package/contracts/instance/service/IPoolService.sol +0 -20
  632. package/contracts/instance/service/IProductService.sol +0 -40
  633. package/contracts/instance/service/PolicyService.sol +0 -508
  634. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  635. package/contracts/instance/service/PoolService.sol +0 -124
  636. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  637. package/contracts/instance/service/ProductService.sol +0 -173
  638. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  639. package/contracts/shared/ContractDeployerLib.sol +0 -72
  640. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  641. package/contracts/test/TestFee.sol +0 -25
  642. package/contracts/test/TestRegisterable.sol +0 -18
  643. package/contracts/test/TestRoleId.sol +0 -14
  644. package/contracts/test/TestService.sol +0 -24
  645. package/contracts/test/TestToken.sol +0 -26
  646. package/contracts/test/TestVersion.sol +0 -44
  647. package/contracts/test/TestVersionable.sol +0 -17
  648. package/contracts/types/ChainId.sol +0 -38
  649. package/contracts/types/NumberId.sol +0 -52
  650. package/contracts/types/ObjectType.sol +0 -152
  651. package/contracts/types/RoleId.sol +0 -92
  652. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -2,260 +2,393 @@
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 {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";
6
30
 
7
- import {AccessManagerUpgradeableInitializeable} from "./AccessManagerUpgradeableInitializeable.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 {BundleManager} from "./BundleManager.sol";
12
- import {IRegistry} from "../registry/IRegistry.sol";
13
- import {RegistryService} from "../registry/RegistryService.sol";
14
- import {Service} from "../../contracts/shared/Service.sol";
15
- import {IService} from "../shared/IService.sol";
16
- import {NftId} from "../../contracts/types/NftId.sol";
17
- import {RoleId} from "../types/RoleId.sol";
18
- import {VersionLib} from "../types/Version.sol";
19
- import {ADMIN_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, POLICY_SERVICE_ROLE, BUNDLE_SERVICE_ROLE} from "../types/RoleId.sol";
36
+ import {InstanceStore} from "./InstanceStore.sol";
37
+ import {InstanceAuthorizationsLib} from "./InstanceAuthorizationsLib.sol";
38
+ import {Seconds} from "../type/Seconds.sol";
39
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
40
+
41
+
42
+ contract InstanceService is
43
+ Service,
44
+ IInstanceService
45
+ {
46
+
47
+ // TODO update to real hash when instance is stable
48
+ bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
20
49
 
21
- contract InstanceService is Service, IInstanceService {
50
+ IRegistryService internal _registryService;
51
+ IStakingService internal _stakingService;
22
52
 
23
- address internal _masterInstanceAccessManager;
53
+ address internal _masterAccessManager;
54
+ address internal _masterInstanceAdmin;
24
55
  address internal _masterInstance;
25
56
  address internal _masterInstanceReader;
26
57
  address internal _masterInstanceBundleManager;
58
+ address internal _masterInstanceStore;
27
59
 
28
- // TODO update to real hash when instance is stable
29
- bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
30
- string public constant NAME = "InstanceService";
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
+ }
31
96
 
32
97
  function createInstanceClone()
33
98
  external
34
99
  returns (
35
- AccessManagerUpgradeableInitializeable clonedAccessManager,
36
100
  Instance clonedInstance,
37
- NftId clonedInstanceNftId,
38
- InstanceReader clonedInstanceReader,
39
- BundleManager clonedBundleManager
101
+ NftId clonedInstanceNftId
40
102
  )
41
103
  {
42
104
  address instanceOwner = msg.sender;
43
- IRegistry registry = getRegistry();
44
- address registryAddress = address(registry);
45
- NftId registryNftId = registry.getNftId(registryAddress);
46
- address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
47
- RegistryService registryService = RegistryService(registryServiceAddress);
105
+ AccessManagerExtendedInitializeable clonedAccessManager = AccessManagerExtendedInitializeable(
106
+ Clones.clone(_masterAccessManager));
48
107
 
49
- // initially set the authority of the access managar to this (being the instance service).
50
- // This will allow the instance service to bootstrap the authorizations of the instance
51
- // and then transfer the ownership of the access manager to the instance owner once everything is setup
52
- clonedAccessManager = AccessManagerUpgradeableInitializeable(Clones.clone(_masterInstanceAccessManager));
53
- clonedAccessManager.__AccessManagerUpgradeableInitializeable_init(address(this));
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));
54
112
 
55
113
  clonedInstance = Instance(Clones.clone(_masterInstance));
56
- clonedInstance.initialize(address(clonedAccessManager), registryAddress, registryNftId, msg.sender);
57
- ( IRegistry.ObjectInfo memory info, ) = registryService.registerInstance(clonedInstance);
58
- clonedInstanceNftId = info.nftId;
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);
59
122
 
60
- clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
61
- clonedInstanceReader.initialize(registryAddress, clonedInstanceNftId);
123
+ InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
124
+ clonedInstanceReader.initialize(address(clonedInstance));
62
125
  clonedInstance.setInstanceReader(clonedInstanceReader);
63
126
 
64
- clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
65
- clonedBundleManager.initialize(address(clonedAccessManager), registryAddress, clonedInstanceNftId);
127
+ BundleManager clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
128
+ clonedBundleManager.initialize(address(clonedInstance));
66
129
  clonedInstance.setBundleManager(clonedBundleManager);
67
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
+
68
136
  // TODO amend setters with instance specific , policy manager ...
69
137
 
70
- _grantInitialAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
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;
71
154
 
72
- // to complete setup switch instance ownership to the instance owner
73
- // TODO: use a role less powerful than admin, maybe INSTANCE_ADMIN (does not exist yet)
74
- clonedAccessManager.grantRole(ADMIN_ROLE().toInt(), instanceOwner, 0);
75
- clonedAccessManager.revokeRole(ADMIN_ROLE().toInt(), address(this));
155
+ // create corresponding staking target
156
+ _stakingService.createInstanceTarget(
157
+ clonedInstanceNftId,
158
+ TargetManagerLib.getDefaultLockingPeriod(),
159
+ TargetManagerLib.getDefaultRewardRate());
76
160
 
77
- emit LogInstanceCloned(address(clonedAccessManager), address(clonedInstance), address(clonedInstanceReader), clonedInstanceNftId);
161
+ emit LogInstanceCloned(
162
+ address(clonedAccessManager),
163
+ address(clonedInstanceAdmin),
164
+ address(clonedInstance),
165
+ address(clonedInstanceStore),
166
+ address(clonedBundleManager),
167
+ address(clonedInstanceReader),
168
+ clonedInstanceNftId);
78
169
  }
79
170
 
80
- function _grantInitialAuthorizations(AccessManagerUpgradeable clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
81
- _grantRegistryServiceAuthorizations(clonedAccessManager, clonedInstance);
82
- _grantPoolServiceAuthorizations(clonedAccessManager, clonedInstance);
83
- _grantProductServiceAuthorizations(clonedAccessManager, clonedInstance);
84
- _grantPolicyServiceAuthorizations(clonedAccessManager, clonedInstance);
85
- _grantBundleServiceAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
86
- _grantInstanceServiceAuthorizations(clonedAccessManager, clonedInstance);
87
- }
88
171
 
89
- function _grantRegistryServiceAuthorizations(AccessManagerUpgradeable clonedAccessManager, Instance clonedInstance) internal {
90
- // configure authorization for distribution service on instance
91
- IRegistry registry = getRegistry();
92
- address distributionServiceAddress = _registry.getServiceAddress("DistributionService", VersionLib.toVersion(3, 0, 0).toMajorPart());
93
- clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE().toInt(), distributionServiceAddress, 0);
94
- bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](2);
95
- instanceDistributionServiceSelectors[0] = clonedInstance.createDistributionSetup.selector;
96
- instanceDistributionServiceSelectors[1] = clonedInstance.updateDistributionSetup.selector;
97
- clonedAccessManager.setTargetFunctionRole(
98
- address(clonedInstance),
99
- instanceDistributionServiceSelectors,
100
- DISTRIBUTION_SERVICE_ROLE().toInt());
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);
101
181
  }
102
182
 
103
- function _grantPoolServiceAuthorizations(AccessManagerUpgradeable clonedAccessManager, Instance clonedInstance) internal {
104
- // configure authorization for pool service on instance
105
- address poolServiceAddress = _registry.getServiceAddress("PoolService", VersionLib.toVersion(3, 0, 0).toMajorPart());
106
- clonedAccessManager.grantRole(POOL_SERVICE_ROLE().toInt(), address(poolServiceAddress), 0);
107
- bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
108
- instancePoolServiceSelectors[0] = clonedInstance.createPoolSetup.selector;
109
- instancePoolServiceSelectors[1] = clonedInstance.updatePoolSetup.selector;
110
- clonedAccessManager.setTargetFunctionRole(
111
- address(clonedInstance),
112
- instancePoolServiceSelectors,
113
- POOL_SERVICE_ROLE().toInt());
114
- }
115
183
 
116
- function _grantProductServiceAuthorizations(AccessManagerUpgradeable clonedAccessManager, Instance clonedInstance) internal {
117
- // configure authorization for product service on instance
118
- address productServiceAddress = _registry.getServiceAddress("ProductService", VersionLib.toVersion(3, 0, 0).toMajorPart());
119
- clonedAccessManager.grantRole(PRODUCT_SERVICE_ROLE().toInt(), address(productServiceAddress), 0);
120
- bytes4[] memory instanceProductServiceSelectors = new bytes4[](5);
121
- instanceProductServiceSelectors[0] = clonedInstance.createProductSetup.selector;
122
- instanceProductServiceSelectors[1] = clonedInstance.updateProductSetup.selector;
123
- instanceProductServiceSelectors[2] = clonedInstance.createRisk.selector;
124
- instanceProductServiceSelectors[3] = clonedInstance.updateRisk.selector;
125
- instanceProductServiceSelectors[4] = clonedInstance.updateRiskState.selector;
126
- clonedAccessManager.setTargetFunctionRole(
127
- address(clonedInstance),
128
- instanceProductServiceSelectors,
129
- PRODUCT_SERVICE_ROLE().toInt());
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);
130
193
  }
131
194
 
132
- function _grantPolicyServiceAuthorizations(AccessManagerUpgradeable clonedAccessManager, Instance clonedInstance) internal {
133
- // configure authorization for policy service on instance
134
- address policyServiceAddress = _registry.getServiceAddress("PolicyService", VersionLib.toVersion(3, 0, 0).toMajorPart());
135
- clonedAccessManager.grantRole(POLICY_SERVICE_ROLE().toInt(), address(policyServiceAddress), 0);
136
- bytes4[] memory instancePolicyServiceSelectors = new bytes4[](3);
137
- instancePolicyServiceSelectors[0] = clonedInstance.createPolicy.selector;
138
- instancePolicyServiceSelectors[1] = clonedInstance.updatePolicy.selector;
139
- instancePolicyServiceSelectors[2] = clonedInstance.updatePolicyState.selector;
140
- clonedAccessManager.setTargetFunctionRole(
141
- address(clonedInstance),
142
- instancePolicyServiceSelectors,
143
- POLICY_SERVICE_ROLE().toInt());
144
- }
145
195
 
146
- function _grantBundleServiceAuthorizations(AccessManagerUpgradeable clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
147
- // configure authorization for bundle service on instance
148
- address bundleServiceAddress = _registry.getServiceAddress("BundleService", VersionLib.toVersion(3, 0, 0).toMajorPart());
149
- clonedAccessManager.grantRole(BUNDLE_SERVICE_ROLE().toInt(), address(bundleServiceAddress), 0);
150
- bytes4[] memory instanceBundleServiceSelectors = new bytes4[](2);
151
- instanceBundleServiceSelectors[0] = clonedInstance.createBundle.selector;
152
- instanceBundleServiceSelectors[1] = clonedInstance.updateBundle.selector;
153
- clonedAccessManager.setTargetFunctionRole(
154
- address(clonedInstance),
155
- instanceBundleServiceSelectors,
156
- BUNDLE_SERVICE_ROLE().toInt());
157
-
158
- // configure authorization for bundle service on bundle manager
159
- bytes4[] memory bundleManagerBundleServiceSelectors = new bytes4[](5);
160
- bundleManagerBundleServiceSelectors[0] = clonedBundleManager.linkPolicy.selector;
161
- bundleManagerBundleServiceSelectors[1] = clonedBundleManager.unlinkPolicy.selector;
162
- bundleManagerBundleServiceSelectors[2] = clonedBundleManager.add.selector;
163
- bundleManagerBundleServiceSelectors[3] = clonedBundleManager.lock.selector;
164
- bundleManagerBundleServiceSelectors[4] = clonedBundleManager.unlock.selector;
165
- clonedAccessManager.setTargetFunctionRole(
166
- address(clonedBundleManager),
167
- bundleManagerBundleServiceSelectors,
168
- BUNDLE_SERVICE_ROLE().toInt());
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);
169
206
  }
170
207
 
171
- function _grantInstanceServiceAuthorizations(AccessManagerUpgradeable clonedAccessManager, Instance clonedInstance) internal {
172
- // configure authorization for instance service on instance
173
- address instanceServiceAddress = _registry.getServiceAddress("InstanceService", VersionLib.toVersion(3, 0, 0).toMajorPart());
174
- clonedAccessManager.grantRole(INSTANCE_SERVICE_ROLE().toInt(), instanceServiceAddress, 0);
175
- bytes4[] memory instanceInstanceServiceSelectors = new bytes4[](1);
176
- instanceInstanceServiceSelectors[0] = clonedInstance.setInstanceReader.selector;
177
- clonedAccessManager.setTargetFunctionRole(
178
- address(clonedInstance),
179
- instanceInstanceServiceSelectors,
180
- INSTANCE_SERVICE_ROLE().toInt());
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);
181
219
  }
182
220
 
183
- function setMasterInstance(address accessManagerAddress, address instanceAddress, address instanceReaderAddress, address bundleManagerAddress) external onlyOwner {
184
- require(_masterInstanceAccessManager == address(0), "ERROR:CRD-001:ACCESS_MANAGER_MASTER_ALREADY_SET");
185
- require(_masterInstance == address(0), "ERROR:CRD-002:INSTANCE_MASTER_ALREADY_SET");
186
- require(_masterInstanceBundleManager == address(0), "ERROR:CRD-004:BUNDLE_MANAGER_MASTER_ALREADY_SET");
187
221
 
188
- require (accessManagerAddress != address(0), "ERROR:CRD-005:ACCESS_MANAGER_ZERO");
189
- require (instanceAddress != address(0), "ERROR:CRD-006:INSTANCE_ZERO");
190
- require (instanceReaderAddress != address(0), "ERROR:CRD-007:INSTANCE_READER_ZERO");
191
- require (bundleManagerAddress != address(0), "ERROR:CRD-008:BUNDLE_MANAGER_ZERO");
222
+ function setComponentLocked(bool locked)
223
+ external
224
+ virtual
225
+ onlyComponent()
226
+ {
227
+ // checks
228
+ address componentAddress = msg.sender;
192
229
 
193
- Instance instance = Instance(instanceAddress);
194
- InstanceReader instanceReader = InstanceReader(instanceReaderAddress);
195
- BundleManager bundleManager = BundleManager(bundleManagerAddress);
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);
196
240
 
197
- require(instance.authority() == accessManagerAddress, "ERROR:CRD-009:INSTANCE_AUTHORITY_MISMATCH");
198
- require(instanceReader.getInstanceNftId() == instance.getNftId(), "ERROR:CRD-010:INSTANCE_READER_INSTANCE_MISMATCH");
199
- require(bundleManager.getInstanceNftId() == instance.getNftId(), "ERROR:CRD-011:BUNDLE_MANAGER_INSTANCE_MISMATCH");
241
+ // no revert in case already locked
242
+ instance.getInstanceAdmin().setTargetLockedByService(
243
+ componentAddress,
244
+ locked);
245
+ }
246
+
247
+
248
+ function getMasterInstanceReader() external view returns (address) {
249
+ return _masterInstanceReader;
250
+ }
200
251
 
201
- _masterInstanceAccessManager = accessManagerAddress;
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;
202
287
  _masterInstance = instanceAddress;
203
288
  _masterInstanceReader = instanceReaderAddress;
204
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;
205
295
  }
206
296
 
207
- function setMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
208
- require(_masterInstanceReader != address(0), "ERROR:CRD-003:INSTANCE_READER_MASTER_NOT_SET");
209
- require (instanceReaderAddress != address(0), "ERROR:CRD-012:INSTANCE_READER_ZERO");
210
- require(instanceReaderAddress != _masterInstanceReader, "ERROR:CRD-014:INSTANCE_READER_MASTER_SAME_AS_NEW");
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(); }
211
301
 
212
302
  InstanceReader instanceReader = InstanceReader(instanceReaderAddress);
213
- require(instanceReader.getInstanceNftId() == Instance(_masterInstance).getNftId(), "ERROR:CRD-015:INSTANCE_READER_INSTANCE_MISMATCH");
303
+ if(instanceReader.getInstance() != IInstance(_masterInstance)) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch(); }
214
304
 
215
305
  _masterInstanceReader = instanceReaderAddress;
216
306
  }
217
307
 
218
- function upgradeInstanceReader(NftId instanceNftId) external {
308
+ function upgradeInstanceReader(NftId instanceNftId)
309
+ external
310
+ onlyInstanceOwner(instanceNftId)
311
+ {
219
312
  IRegistry registry = getRegistry();
220
313
  IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
221
314
  Instance instance = Instance(instanceInfo.objectAddress);
222
- address owner = instance.getOwner();
223
-
224
- if (msg.sender != owner) {
225
- revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
226
- }
227
315
 
228
316
  InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
229
- upgradedInstanceReaderClone.initialize(address(registry), instanceNftId);
317
+ upgradedInstanceReaderClone.initialize(address(instance));
230
318
  instance.setInstanceReader(upgradedInstanceReaderClone);
231
319
  }
232
320
 
233
- function getMasterInstanceReader() external view returns (address) {
234
- return _masterInstanceReader;
235
- }
236
321
 
237
- function getMasterInstance() external view returns (address) {
238
- return _masterInstance;
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
+ );
239
340
  }
240
341
 
241
- function getMasterInstanceAccessManager() external view returns (address) {
242
- return _masterInstanceAccessManager;
243
- }
244
342
 
245
- function getMasterInstanceBundleManager() external view returns (address) {
246
- return _masterInstanceBundleManager;
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
+ );
247
361
  }
248
362
 
249
- // From IService
250
- function getName() public pure override(IService, Service) returns(string memory) {
251
- return NAME;
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
+ }
252
389
  }
253
390
 
254
391
  /// @dev top level initializer
255
- // 1) registry is non upgradeable -> don't need a proxy and uses constructor !
256
- // 2) deploy registry service first -> from its initialization func it is easier to deploy registry then vice versa
257
- // 3) deploy registry -> pass registry service address as constructor argument
258
- // registry is getting instantiated and locked to registry service address forever
259
392
  function _initialize(
260
393
  address owner,
261
394
  bytes memory data
@@ -264,36 +397,43 @@ contract InstanceService is Service, IInstanceService {
264
397
  initializer
265
398
  virtual override
266
399
  {
267
- address initialOwner = address(0);
268
- address registryAddress = address(0);
269
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
270
- // TODO while InstanceService is not deployed in InstanceServiceManager constructor
271
- // owner is InstanceServiceManager deployer
272
- _initializeService(registryAddress, owner);
273
-
274
- _registerInterface(type(IService).interfaceId);
275
- _registerInterface(type(IInstanceService).interfaceId);
400
+ (
401
+ address registryAddress,,
402
+ //address managerAddress
403
+ address authority
404
+ ) = abi.decode(data, (address, address, address));
405
+
406
+ initializeService(registryAddress, authority, owner);
407
+
408
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
409
+ _stakingService = IStakingService(_getServiceAddress(STAKING()));
410
+
411
+ registerInterface(type(IInstanceService).interfaceId);
276
412
  }
277
- // TODO use instanceAddress instead of nft
278
- /*function hasRole(address account, RoleId role, NftId instanceNftId) external view returns (bool) {
279
- IRegistry.ObjectInfo memory instanceObjectInfo = getRegistry().getObjectInfo(instanceNftId);
280
- address instanceAddress = instanceObjectInfo.objectAddress;
281
- Instance instance = Instance(instanceAddress);
282
- AccessManagerUpgradeable accessManager = AccessManagerUpgradeable(instance.authority());
283
- (bool isMember, uint32 executionDelay) = accessManager.hasRole(role.toInt(), account);
284
- if (executionDelay > 0) {
285
- return false;
286
- }
287
- return isMember;
288
- }*/
289
- function hasRole(address account, RoleId role, address instanceAddress) external view returns (bool) {
290
- Instance instance = Instance(instanceAddress);
291
- AccessManagerUpgradeable accessManager = AccessManagerUpgradeable(instance.authority());
292
- (bool isMember, uint32 executionDelay) = accessManager.hasRole(role.toInt(), account);
293
- if (executionDelay > 0) {
294
- return false;
295
- }
296
- return isMember;
413
+
414
+
415
+ function _validateInstanceAndComponent(NftId instanceNftId, address componentAddress)
416
+ internal
417
+ view
418
+ returns (IInstance instance, NftId componentNftId)
419
+ {
420
+ IRegistry registry = getRegistry();
421
+ IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
422
+ if(instanceInfo.objectType != INSTANCE()) {
423
+ revert ErrorInstanceServiceNotInstanceNftId(instanceNftId);
424
+ }
425
+
426
+ IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
427
+ if(componentInfo.parentNftId != instanceNftId) {
428
+ revert ErrorInstanceServiceInstanceComponentMismatch(instanceNftId, componentInfo.nftId);
429
+ }
430
+
431
+ instance = Instance(instanceInfo.objectAddress);
432
+ componentNftId = componentInfo.nftId;
297
433
  }
298
- }
299
434
 
435
+ // From IService
436
+ function _getDomain() internal pure override returns(ObjectType) {
437
+ return INSTANCE();
438
+ }
439
+ }