@etherisc/gif-next 0.0.2-e769e2e-077 → 0.0.2-e802d97-713

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 (378) hide show
  1. package/README.md +2 -1
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +19 -13
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +79 -73
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +114 -56
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +11 -5
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +7 -1
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +25 -6
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +12 -22
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +47 -20
  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 +1 -1
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +126 -30
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +195 -64
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +77 -63
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +104 -34
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +246 -104
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  35. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  36. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  37. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  38. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +2 -2
  39. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  40. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  41. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  42. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  46. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  47. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  48. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  49. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +10 -0
  50. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  51. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  52. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  53. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +662 -0
  54. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  55. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  56. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  57. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +997 -0
  58. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +718 -0
  60. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  61. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +55 -41
  62. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  63. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +102 -40
  64. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  65. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +7 -1
  66. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  67. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +11 -5
  68. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  69. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +22 -1
  70. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  71. package/artifacts/contracts/pool/Pool.sol/Pool.json +18 -12
  72. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  73. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +56 -35
  74. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  75. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +95 -37
  76. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  77. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +39 -25
  78. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  79. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +96 -34
  80. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  81. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +81 -67
  82. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +115 -53
  84. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  85. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +7 -1
  86. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  87. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +7 -1
  88. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  89. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +7 -1
  90. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  91. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +7 -1
  92. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  93. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +11 -5
  94. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  95. package/artifacts/contracts/product/IProductService.sol/IProductService.json +7 -1
  96. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  97. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +59 -45
  98. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +104 -42
  100. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  101. package/artifacts/contracts/product/PricingService.sol/PricingService.json +69 -55
  102. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  103. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +109 -47
  104. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  105. package/artifacts/contracts/product/Product.sol/Product.json +18 -12
  106. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  107. package/artifacts/contracts/product/ProductService.sol/ProductService.json +25 -19
  108. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +87 -29
  110. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  111. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  112. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  113. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +150 -53
  114. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  115. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +187 -67
  116. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  117. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  118. package/artifacts/contracts/registry/Registry.sol/Registry.json +328 -103
  119. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  120. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
  121. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  122. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +197 -72
  123. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  124. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +87 -39
  125. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  126. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +752 -148
  127. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +1 -1
  128. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +2 -2
  129. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  130. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +185 -135
  131. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  132. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  133. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  134. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  135. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  136. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  137. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  138. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
  139. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  140. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
  141. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  142. package/artifacts/contracts/shared/Component.sol/Component.json +18 -12
  143. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  144. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +92 -63
  145. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  146. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +102 -46
  147. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  148. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +7 -1
  149. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  150. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  151. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  152. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  153. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  154. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  155. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  156. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +11 -5
  157. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  158. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +14 -1
  159. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  160. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +11 -5
  161. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  162. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +0 -10
  163. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  164. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  165. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -1
  166. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  167. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +21 -3
  168. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  169. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -1
  170. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  171. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  172. package/artifacts/contracts/shared/IService.sol/IService.json +7 -1
  173. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  174. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  175. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  176. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  177. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +18 -12
  178. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  179. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +10 -20
  180. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  181. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +6 -6
  182. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  183. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  184. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  185. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +13 -7
  186. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  187. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +31 -13
  188. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  189. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +64 -16
  190. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  191. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +15 -9
  192. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  193. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  194. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  195. package/artifacts/contracts/shared/Service.sol/Service.json +7 -1
  196. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  197. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  198. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  199. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  200. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  201. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  202. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +424 -593
  203. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  204. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +497 -49
  205. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  206. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +444 -0
  207. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  208. package/artifacts/contracts/staking/Staking.sol/Staking.json +598 -627
  209. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  210. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +149 -48
  211. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  212. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  213. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  214. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +593 -74
  215. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  216. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +119 -29
  217. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  218. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2189 -0
  219. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  220. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  221. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  222. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  223. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  224. package/artifacts/contracts/type/Amount.sol/AmountLib.json +68 -4
  225. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  226. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +40 -2
  227. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  228. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  229. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  230. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  231. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  232. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  233. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  234. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  235. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  236. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +28 -4
  237. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  238. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  239. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  240. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +15 -2
  241. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  242. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  243. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  244. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  245. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  246. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  247. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  249. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  251. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +76 -2
  253. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  255. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +17 -4
  257. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  261. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +2 -2
  263. package/contracts/distribution/Distribution.sol +2 -4
  264. package/contracts/distribution/DistributionService.sol +3 -2
  265. package/contracts/distribution/DistributionServiceManager.sol +9 -18
  266. package/contracts/distribution/IDistributionComponent.sol +1 -1
  267. package/contracts/distribution/IDistributionService.sol +1 -1
  268. package/contracts/instance/IInstance.sol +11 -6
  269. package/contracts/instance/IInstanceService.sol +3 -5
  270. package/contracts/instance/Instance.sol +29 -21
  271. package/contracts/instance/InstanceAdmin.sol +331 -0
  272. package/contracts/instance/InstanceAuthorizationsLib.sol +192 -151
  273. package/contracts/instance/InstanceReader.sol +30 -6
  274. package/contracts/instance/InstanceService.sol +69 -55
  275. package/contracts/instance/InstanceServiceManager.sol +10 -20
  276. package/contracts/instance/InstanceStore.sol +64 -42
  277. package/contracts/instance/base/BalanceStore.sol +1 -1
  278. package/contracts/instance/base/ObjectCounter.sol +21 -0
  279. package/contracts/instance/module/IAccess.sol +2 -10
  280. package/contracts/mock/Dip.sol +26 -0
  281. package/contracts/oracle/IOracle.sol +20 -0
  282. package/contracts/oracle/IOracleComponent.sol +32 -0
  283. package/contracts/oracle/IOracleService.sol +65 -0
  284. package/contracts/oracle/Oracle.sol +145 -0
  285. package/contracts/oracle/OracleService.sol +277 -0
  286. package/contracts/oracle/OracleServiceManager.sol +42 -0
  287. package/contracts/pool/BundleService.sol +6 -23
  288. package/contracts/pool/BundleServiceManager.sol +9 -18
  289. package/contracts/pool/IBundleService.sol +1 -1
  290. package/contracts/pool/IPoolService.sol +4 -1
  291. package/contracts/pool/PoolService.sol +45 -13
  292. package/contracts/pool/PoolServiceManager.sol +9 -18
  293. package/contracts/product/ApplicationService.sol +6 -5
  294. package/contracts/product/ApplicationServiceManager.sol +9 -6
  295. package/contracts/product/ClaimService.sol +13 -7
  296. package/contracts/product/ClaimServiceManager.sol +9 -6
  297. package/contracts/product/IApplicationService.sol +1 -1
  298. package/contracts/product/IClaimService.sol +7 -1
  299. package/contracts/product/IPolicyService.sol +1 -1
  300. package/contracts/product/IPricingService.sol +1 -1
  301. package/contracts/product/IProductService.sol +1 -1
  302. package/contracts/product/PolicyService.sol +10 -6
  303. package/contracts/product/PolicyServiceManager.sol +9 -21
  304. package/contracts/product/PricingService.sol +10 -9
  305. package/contracts/product/PricingServiceManager.sol +9 -18
  306. package/contracts/product/Product.sol +1 -1
  307. package/contracts/product/ProductService.sol +7 -5
  308. package/contracts/product/ProductServiceManager.sol +9 -21
  309. package/contracts/registry/ChainNft.sol +1 -0
  310. package/contracts/registry/IRegistry.sol +37 -24
  311. package/contracts/registry/IRegistryService.sol +26 -36
  312. package/contracts/registry/Registry.sol +164 -117
  313. package/contracts/registry/RegistryAdmin.sol +237 -0
  314. package/contracts/registry/RegistryService.sol +22 -83
  315. package/contracts/registry/RegistryServiceManager.sol +21 -23
  316. package/contracts/registry/ReleaseManager.sol +448 -223
  317. package/contracts/registry/TokenRegistry.sol +187 -59
  318. package/contracts/shared/AccessManagerCustom.sol +736 -0
  319. package/contracts/shared/AccessManagerExtended.sol +470 -0
  320. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  321. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  322. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  323. package/contracts/shared/Component.sol +8 -13
  324. package/contracts/shared/ComponentService.sol +35 -13
  325. package/contracts/shared/ComponentVerifyingService.sol +13 -7
  326. package/contracts/shared/ERC165.sol +1 -1
  327. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  328. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  329. package/contracts/shared/IComponent.sol +3 -7
  330. package/contracts/shared/IComponentService.sol +11 -0
  331. package/contracts/shared/IKeyValueStore.sol +1 -1
  332. package/contracts/shared/INftOwnable.sol +1 -1
  333. package/contracts/shared/IPolicyHolder.sol +6 -1
  334. package/contracts/shared/IService.sol +1 -1
  335. package/contracts/shared/InitializableCustom.sol +177 -0
  336. package/contracts/shared/InstanceLinkedComponent.sol +1 -2
  337. package/contracts/shared/KeyValueStore.sol +24 -66
  338. package/contracts/shared/Lifecycle.sol +11 -2
  339. package/contracts/shared/NftIdSetManager.sol +65 -0
  340. package/contracts/shared/NftOwnable.sol +2 -13
  341. package/contracts/shared/PolicyHolder.sol +21 -13
  342. package/contracts/shared/ProxyManager.sol +31 -1
  343. package/contracts/shared/Service.sol +1 -1
  344. package/contracts/staking/IStaking.sol +127 -36
  345. package/contracts/staking/IStakingService.sol +83 -39
  346. package/contracts/staking/StakeManagerLib.sol +179 -0
  347. package/contracts/staking/Staking.sol +432 -93
  348. package/contracts/staking/StakingManager.sol +22 -14
  349. package/contracts/staking/StakingReader.sol +187 -0
  350. package/contracts/staking/StakingService.sol +245 -39
  351. package/contracts/staking/StakingServiceManager.sol +8 -4
  352. package/contracts/staking/StakingStore.sol +572 -0
  353. package/contracts/staking/TargetManagerLib.sol +207 -0
  354. package/contracts/type/AddressSet.sol +1 -1
  355. package/contracts/type/Amount.sol +15 -1
  356. package/contracts/type/Blocknumber.sol +14 -2
  357. package/contracts/type/Fee.sol +1 -1
  358. package/contracts/type/NftId.sol +9 -4
  359. package/contracts/type/NftIdSet.sol +1 -1
  360. package/contracts/type/ObjectType.sol +12 -9
  361. package/contracts/type/Referral.sol +1 -1
  362. package/contracts/type/RequestId.sol +75 -0
  363. package/contracts/type/RiskId.sol +1 -1
  364. package/contracts/type/RoleId.sol +16 -8
  365. package/contracts/type/Seconds.sol +27 -0
  366. package/contracts/type/StateId.sol +27 -2
  367. package/contracts/type/Timestamp.sol +6 -2
  368. package/contracts/type/Version.sol +1 -1
  369. package/package.json +3 -3
  370. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  371. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  372. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  373. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -308
  374. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  375. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  376. package/contracts/instance/InstanceAccessManager.sol +0 -543
  377. package/contracts/registry/RegistryAccessManager.sol +0 -213
  378. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
@@ -4,15 +4,19 @@ pragma solidity ^0.8.20;
4
4
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
5
  import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
6
 
7
+ import {BundleManager} from "./BundleManager.sol";
8
+ import {ChainNft} from "../registry/ChainNft.sol";
7
9
  import {NftId} from "../type/NftId.sol";
8
10
  import {RoleId} from "../type/RoleId.sol";
11
+ import {SecondsLib} from "../type/Seconds.sol";
12
+ import {UFixedLib} from "../type/UFixed.sol";
9
13
  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";
10
- import {ObjectType, INSTANCE, BUNDLE, APPLICATION, POLICY, CLAIM, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../type/ObjectType.sol";
14
+ import {ObjectType, INSTANCE, BUNDLE, APPLICATION, CLAIM, DISTRIBUTION, POLICY, POOL, PRODUCT, REGISTRY, STAKING} from "../type/ObjectType.sol";
11
15
 
12
16
  import {Service} from "../shared/Service.sol";
13
17
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
14
18
  import {IService} from "../shared/IService.sol";
15
- import {AccessManagerUpgradeableInitializeable} from "../shared/AccessManagerUpgradeableInitializeable.sol";
19
+ import {AccessManagerExtendedInitializeable} from "../shared/AccessManagerExtendedInitializeable.sol";
16
20
 
17
21
  import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
18
22
  import {IPoolComponent} from "../pool/IPoolComponent.sol";
@@ -20,14 +24,14 @@ import {IProductComponent} from "../product/IProductComponent.sol";
20
24
 
21
25
  import {IRegistry} from "../registry/IRegistry.sol";
22
26
  import {IRegistryService} from "../registry/IRegistryService.sol";
23
- import {ChainNft} from "../registry/ChainNft.sol";
27
+ import {IStakingService} from "../staking/IStakingService.sol";
28
+ import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
24
29
 
25
30
  import {Instance} from "./Instance.sol";
26
31
  import {IInstance} from "./IInstance.sol";
27
- import {InstanceAccessManager} from "./InstanceAccessManager.sol";
32
+ import {InstanceAdmin} from "./InstanceAdmin.sol";
28
33
  import {IInstanceService} from "./IInstanceService.sol";
29
34
  import {InstanceReader} from "./InstanceReader.sol";
30
- import {BundleManager} from "./BundleManager.sol";
31
35
  import {InstanceStore} from "./InstanceStore.sol";
32
36
  import {InstanceAuthorizationsLib} from "./InstanceAuthorizationsLib.sol";
33
37
 
@@ -40,8 +44,10 @@ contract InstanceService is
40
44
  bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
41
45
 
42
46
  IRegistryService internal _registryService;
43
- address internal _masterOzAccessManager;
44
- address internal _masterInstanceAccessManager;
47
+ IStakingService internal _stakingService;
48
+
49
+ address internal _masterAccessManager;
50
+ address internal _masterInstanceAdmin;
45
51
  address internal _masterInstance;
46
52
  address internal _masterInstanceReader;
47
53
  address internal _masterInstanceBundleManager;
@@ -54,6 +60,13 @@ contract InstanceService is
54
60
  _;
55
61
  }
56
62
 
63
+ // TODO check component - service - instance version match
64
+ modifier onlyComponent() {
65
+ if (! getRegistry().isRegisteredComponent(msg.sender)) {
66
+ revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
67
+ }
68
+ _;
69
+ }
57
70
 
58
71
  function createInstanceClone()
59
72
  external
@@ -63,18 +76,17 @@ contract InstanceService is
63
76
  )
64
77
  {
65
78
  address instanceOwner = msg.sender;
66
- AccessManagerUpgradeableInitializeable clonedOzAccessManager = AccessManagerUpgradeableInitializeable(
67
- Clones.clone(_masterOzAccessManager));
79
+ AccessManagerExtendedInitializeable clonedAccessManager = AccessManagerExtendedInitializeable(
80
+ Clones.clone(_masterAccessManager));
68
81
 
69
82
  // initially grants ADMIN_ROLE to this (being the instance service).
70
83
  // This will allow the instance service to bootstrap the authorizations of the instance.
71
- // Instance service will not use oz access manager directlly but through instance access manager instead
72
84
  // Instance service will renounce ADMIN_ROLE when bootstraping is finished
73
- clonedOzAccessManager.initialize(address(this));
85
+ clonedAccessManager.initialize(address(this));
74
86
 
75
87
  clonedInstance = Instance(Clones.clone(_masterInstance));
76
88
  clonedInstance.initialize(
77
- address(clonedOzAccessManager),
89
+ address(clonedAccessManager),
78
90
  address(getRegistry()),
79
91
  instanceOwner);
80
92
  // initialize and set before instance reader
@@ -90,16 +102,17 @@ contract InstanceService is
90
102
  clonedBundleManager.initialize(address(clonedInstance));
91
103
  clonedInstance.setBundleManager(clonedBundleManager);
92
104
 
93
- InstanceAccessManager clonedInstanceAccessManager = InstanceAccessManager(Clones.clone(_masterInstanceAccessManager));
94
- clonedOzAccessManager.grantRole(ADMIN_ROLE().toInt(), address(clonedInstanceAccessManager), 0);
95
- clonedInstanceAccessManager.initialize(address(clonedInstance));
96
- clonedInstance.setInstanceAccessManager(clonedInstanceAccessManager);
105
+ InstanceAdmin clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
106
+ clonedAccessManager.grantRole(ADMIN_ROLE().toInt(), address(clonedInstanceAdmin), 0);
107
+ clonedInstanceAdmin.initialize(address(clonedInstance));
108
+ clonedInstance.setInstanceAdmin(clonedInstanceAdmin);
97
109
 
98
110
  // TODO amend setters with instance specific , policy manager ...
99
111
 
100
112
  // TODO library does external calls -> but it is registry and access manager -> find out is it best practice
101
113
  InstanceAuthorizationsLib.grantInitialAuthorizations(
102
- clonedInstanceAccessManager,
114
+ clonedAccessManager,
115
+ clonedInstanceAdmin,
103
116
  clonedInstance,
104
117
  clonedBundleManager,
105
118
  clonedInstanceStore,
@@ -107,14 +120,21 @@ contract InstanceService is
107
120
  getRegistry(),
108
121
  getVersion().toMajorPart());
109
122
 
110
- clonedOzAccessManager.renounceRole(ADMIN_ROLE().toInt(), address(this));
123
+ clonedAccessManager.renounceRole(ADMIN_ROLE().toInt(), address(this));
111
124
 
125
+ // register new instance with registry
112
126
  IRegistry.ObjectInfo memory info = _registryService.registerInstance(clonedInstance, instanceOwner);
113
127
  clonedInstanceNftId = info.nftId;
114
128
 
129
+ // create corresponding staking target
130
+ _stakingService.createInstanceTarget(
131
+ clonedInstanceNftId,
132
+ TargetManagerLib.getDefaultLockingPeriod(),
133
+ TargetManagerLib.getDefaultRewardRate());
134
+
115
135
  emit LogInstanceCloned(
116
- address(clonedOzAccessManager),
117
- address(clonedInstanceAccessManager),
136
+ address(clonedAccessManager),
137
+ address(clonedInstanceAdmin),
118
138
  address(clonedInstance),
119
139
  address(clonedInstanceStore),
120
140
  address(clonedBundleManager),
@@ -122,10 +142,10 @@ contract InstanceService is
122
142
  clonedInstanceNftId);
123
143
  }
124
144
 
125
-
126
145
  function setComponentLocked(bool locked)
127
146
  external
128
147
  virtual
148
+ onlyComponent()
129
149
  {
130
150
  // checks
131
151
  address componentAddress = msg.sender;
@@ -137,16 +157,12 @@ contract InstanceService is
137
157
  IRegistry registry = getRegistry();
138
158
  NftId instanceNftId = registry.getObjectInfo(componentAddress).parentNftId;
139
159
 
140
- if (instanceNftId.eqz()) {
141
- revert ErrorInstanceServiceComponentNotRegistered(componentAddress);
142
- }
143
-
144
160
  IInstance instance = IInstance(
145
161
  registry.getObjectInfo(
146
162
  instanceNftId).objectAddress);
147
163
 
148
- // interaction
149
- instance.getInstanceAccessManager().setTargetLockedByService(
164
+ // no revert in case already locked
165
+ instance.getInstanceAdmin().setTargetLockedByService(
150
166
  componentAddress,
151
167
  locked);
152
168
  }
@@ -167,15 +183,15 @@ contract InstanceService is
167
183
  returns(NftId masterInstanceNftId)
168
184
  {
169
185
  if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
170
- if(_masterOzAccessManager != address(0)) { revert ErrorInstanceServiceMasterOzAccessManagerAlreadySet(); }
171
- if(_masterInstanceAccessManager != address(0)) { revert ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet(); }
186
+ if(_masterAccessManager != address(0)) { revert ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet(); }
187
+ if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
172
188
  if(_masterInstanceBundleManager != address(0)) { revert ErrorInstanceServiceMasterBundleManagerAlreadySet(); }
173
189
 
174
190
  if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
175
191
 
176
192
  IInstance instance = IInstance(instanceAddress);
177
- InstanceAccessManager instanceAccessManager = instance.getInstanceAccessManager();
178
- address instanceAccessManagerAddress = address(instanceAccessManager);
193
+ InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
194
+ address instanceAdminAddress = address(instanceAdmin);
179
195
  InstanceReader instanceReader = instance.getInstanceReader();
180
196
  address instanceReaderAddress = address(instanceReader);
181
197
  BundleManager bundleManager = instance.getBundleManager();
@@ -183,19 +199,19 @@ contract InstanceService is
183
199
  InstanceStore instanceStore = instance.getInstanceStore();
184
200
  address instanceStoreAddress = address(instanceStore);
185
201
 
186
- if(instanceAccessManagerAddress == address(0)) { revert ErrorInstanceServiceInstanceAccessManagerZero(); }
202
+ if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
187
203
  if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
188
204
  if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleManagerZero(); }
189
205
  if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
190
206
 
191
- if(instance.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
192
- if(bundleManager.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceBundleManagerAuthorityMismatch(); }
193
- if(instanceStore.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
207
+ if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
208
+ if(bundleManager.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleManagerAuthorityMismatch(); }
209
+ if(instanceStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
194
210
  if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
195
211
  if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
196
212
 
197
- _masterOzAccessManager = instance.authority();
198
- _masterInstanceAccessManager = instanceAccessManagerAddress;
213
+ _masterAccessManager = instance.authority();
214
+ _masterInstanceAdmin = instanceAdminAddress;
199
215
  _masterInstance = instanceAddress;
200
216
  _masterInstanceReader = instanceReaderAddress;
201
217
  _masterInstanceBundleManager = bundleManagerAddress;
@@ -206,7 +222,7 @@ contract InstanceService is
206
222
  masterInstanceNftId = info.nftId;
207
223
  }
208
224
 
209
- function setMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
225
+ function upgradeMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
210
226
  if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
211
227
  if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
212
228
  if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
@@ -261,8 +277,7 @@ contract InstanceService is
261
277
  )
262
278
  external
263
279
  virtual
264
- // TODO re-enable once role - contract association is fixed
265
- // restricted()
280
+ restricted()
266
281
  {
267
282
  _createGifTarget(
268
283
  instanceNftId,
@@ -285,18 +300,19 @@ contract InstanceService is
285
300
  internal
286
301
  virtual
287
302
  {
303
+ // TODO instanceAdmin will check target instance match anyway
288
304
  (
289
305
  IInstance instance, // or instanceInfo
290
306
  // or targetInfo
291
307
  ) = _validateInstanceAndComponent(instanceNftId, targetAddress);
292
308
 
293
- InstanceAccessManager accessManager = instance.getInstanceAccessManager();
294
- accessManager.createGifTarget(targetAddress, targetName);
309
+ InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
310
+ instanceAdmin.createGifTarget(targetAddress, targetName);
295
311
  // set proposed target config
296
312
  // TODO restriction: gif targets are set only once and only here?
297
313
  // assume config is a mix of gif and custom roles and no further configuration by INSTANCE_OWNER_ROLE is ever needed?
298
314
  for(uint roleIdx = 0; roleIdx < roles.length; roleIdx++) {
299
- accessManager.setCoreTargetFunctionRole(targetName, selectors[roleIdx], roles[roleIdx]);
315
+ instanceAdmin.setTargetFunctionRoleByService(targetName, selectors[roleIdx], roles[roleIdx]);
300
316
  }
301
317
  }
302
318
 
@@ -310,18 +326,16 @@ contract InstanceService is
310
326
  virtual override
311
327
  {
312
328
  (
313
- address registryAddress,
314
- address initialOwner
315
- ) = abi.decode(data, (address, address));
316
-
317
- _registryService = IRegistryService(
318
- IRegistry(registryAddress).getServiceAddress(
319
- REGISTRY(),
320
- getVersion().toMajorPart()));
321
-
322
- // TODO while InstanceService is not deployed in InstanceServiceManager constructor
323
- // owner is InstanceServiceManager deployer
324
- initializeService(registryAddress, address(0), owner);
329
+ address registryAddress,,
330
+ //address managerAddress
331
+ address authority
332
+ ) = abi.decode(data, (address, address, address));
333
+
334
+ initializeService(registryAddress, authority, owner);
335
+
336
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
337
+ _stakingService = IStakingService(_getServiceAddress(STAKING()));
338
+
325
339
  registerInterface(type(IInstanceService).interfaceId);
326
340
  }
327
341
 
@@ -13,33 +13,23 @@ contract InstanceServiceManager is ProxyManager {
13
13
 
14
14
  InstanceService private _instanceService;
15
15
 
16
- /// @dev initializes proxy manager with instance service implementation and deploys instance
16
+ /// @dev initializes proxy manager with instance service implementation
17
17
  constructor(
18
- address registryAddress
19
- )
18
+ address authority,
19
+ address registryAddress,
20
+ bytes32 salt
21
+ )
20
22
  ProxyManager(registryAddress)
21
23
  {
22
- InstanceService instSrv = new InstanceService();
24
+ InstanceService instSrv = new InstanceService{salt: salt}();
23
25
  // bytes memory initCode = type(InstanceService).creationCode;
24
- bytes memory data = abi.encode(registryAddress, address(this));
25
- IVersionable versionable = deploy(
26
+ bytes memory data = abi.encode(registryAddress, address(this), authority);
27
+ IVersionable versionable = deployDetermenistic(
26
28
  address(instSrv),
27
- data);
29
+ data,
30
+ salt);
28
31
 
29
32
  _instanceService = InstanceService(address(versionable));
30
-
31
- // TODO `this` must have a role or own nft to register service
32
- //Registry registry = Registry(registryAddress);
33
- //address registryServiceAddress = registry.getServiceAddress(REGISTRY(), _instanceService.getMajorVersion());
34
- //RegistryService registryService = RegistryService(registryServiceAddress);
35
- //registryService.registerService(_instanceService);
36
- // RegistryService registryService = _instanceService.getRegistryService();
37
-
38
- // TODO no nft to link yet
39
- // link ownership of instance service manager ot nft owner of instance service
40
- //_linkToNftOwnable(
41
- // address(registryAddress),
42
- // address(_instanceService));
43
33
  }
44
34
 
45
35
  //--- view functions ----------------------------------------------------//
@@ -7,7 +7,8 @@ import {Amount} from "../type/Amount.sol";
7
7
  import {Key32, KeyId, Key32Lib} from "../type/Key32.sol";
8
8
  import {NftId} from "../type/NftId.sol";
9
9
  import {ClaimId} from "../type/ClaimId.sol";
10
- import {ObjectType, BUNDLE, DISTRIBUTION, FEE, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT, DISTRIBUTOR, DISTRIBUTOR_TYPE} from "../type/ObjectType.sol";
10
+ import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT, DISTRIBUTOR, DISTRIBUTOR_TYPE} from "../type/ObjectType.sol";
11
+ import {RequestId} from "../type/RequestId.sol";
11
12
  import {RiskId, RiskIdLib} from "../type/RiskId.sol";
12
13
  import {RoleId, RoleIdLib, INSTANCE_ROLE, INSTANCE_OWNER_ROLE} from "../type/RoleId.sol";
13
14
  import {StateId, ACTIVE} from "../type/StateId.sol";
@@ -21,18 +22,21 @@ import {BalanceStore} from "./base/BalanceStore.sol";
21
22
  import {IInstance} from "./IInstance.sol";
22
23
  import {KeyValueStore} from "../shared/KeyValueStore.sol";
23
24
  import {IKeyValueStore} from "../shared/KeyValueStore.sol";
25
+ import {ObjectCounter} from "./base/ObjectCounter.sol";
24
26
 
25
27
  import {IBundle} from "./module/IBundle.sol";
26
28
  import {IComponents} from "./module/IComponents.sol";
27
29
  import {IDistribution} from "./module/IDistribution.sol";
28
30
  import {IPolicy} from "./module/IPolicy.sol";
31
+ import {IOracle} from "../oracle/IOracle.sol";
29
32
  import {IRisk} from "./module/IRisk.sol";
30
33
 
31
34
 
32
35
  contract InstanceStore is
33
36
  AccessManagedUpgradeable,
37
+ BalanceStore,
34
38
  KeyValueStore,
35
- BalanceStore
39
+ ObjectCounter
36
40
  {
37
41
  function initialize(address instance)
38
42
  public
@@ -40,10 +44,12 @@ contract InstanceStore is
40
44
  {
41
45
  address authority = IInstance(instance).authority();
42
46
  __AccessManaged_init(authority);
47
+
43
48
  initializeLifecycle();
44
49
  }
45
50
 
46
51
  //--- Component ---------------------------------------------------------//
52
+
47
53
  function createComponent(
48
54
  NftId componentNftId,
49
55
  IComponents.ComponentInfo memory componentInfo
@@ -51,8 +57,8 @@ contract InstanceStore is
51
57
  external
52
58
  restricted()
53
59
  {
54
- _registerTarget(componentNftId);
55
- create(_toNftKey32(componentNftId, COMPONENT()), abi.encode(componentInfo));
60
+ _registerBalanceTarget(componentNftId);
61
+ _create(_toNftKey32(componentNftId, COMPONENT()), abi.encode(componentInfo));
56
62
  }
57
63
 
58
64
  function updateComponent(
@@ -63,24 +69,24 @@ contract InstanceStore is
63
69
  external
64
70
  restricted()
65
71
  {
66
- update(_toNftKey32(componentNftId, COMPONENT()), abi.encode(componentInfo), newState);
72
+ _update(_toNftKey32(componentNftId, COMPONENT()), abi.encode(componentInfo), newState);
67
73
  }
68
74
 
69
- //--- ProductSetup ------------------------------------------------------//
75
+ //--- Product -----------------------------------------------------------//
70
76
 
71
77
  function createProduct(NftId productNftId, IComponents.ProductInfo memory info) external restricted() {
72
- create(_toNftKey32(productNftId, PRODUCT()), abi.encode(info));
78
+ _create(_toNftKey32(productNftId, PRODUCT()), abi.encode(info));
73
79
  }
74
80
 
75
81
  function updateProduct(NftId productNftId, IComponents.ProductInfo memory info, StateId newState) external restricted() {
76
- update(_toNftKey32(productNftId, PRODUCT()), abi.encode(info), newState);
82
+ _update(_toNftKey32(productNftId, PRODUCT()), abi.encode(info), newState);
77
83
  }
78
84
 
79
85
  function updateProductSetupState(NftId productNftId, StateId newState) external restricted() {
80
- updateState(_toNftKey32(productNftId, PRODUCT()), newState);
86
+ _updateState(_toNftKey32(productNftId, PRODUCT()), newState);
81
87
  }
82
88
 
83
- //--- PoolSetup ------------------------------------------------------//
89
+ //--- Pool --------------------------------------------------------------//
84
90
 
85
91
  function createPool(
86
92
  NftId poolNftId,
@@ -89,133 +95,149 @@ contract InstanceStore is
89
95
  external
90
96
  restricted()
91
97
  {
92
- create(_toNftKey32(poolNftId, POOL()), abi.encode(info));
98
+ _create(_toNftKey32(poolNftId, POOL()), abi.encode(info));
93
99
  }
94
100
 
95
101
  function updatePool(NftId poolNftId, IComponents.PoolInfo memory info, StateId newState) external restricted() {
96
- update(_toNftKey32(poolNftId, POOL()), abi.encode(info), newState);
102
+ _update(_toNftKey32(poolNftId, POOL()), abi.encode(info), newState);
97
103
  }
98
104
 
99
105
  function updatePoolState(NftId poolNftId, StateId newState) external restricted() {
100
- updateState(_toNftKey32(poolNftId, POOL()), newState);
106
+ _updateState(_toNftKey32(poolNftId, POOL()), newState);
101
107
  }
102
108
 
103
- //--- DistributorType -------------------------------------------------------//
109
+ //--- DistributorType ---------------------------------------------------//
104
110
  function createDistributorType(DistributorType distributorType, IDistribution.DistributorTypeInfo memory info) external restricted() {
105
- create(distributorType.toKey32(), abi.encode(info));
111
+ _create(distributorType.toKey32(), abi.encode(info));
106
112
  }
107
113
 
108
114
  function updateDistributorType(DistributorType distributorType, IDistribution.DistributorTypeInfo memory info, StateId newState) external restricted() {
109
- update(distributorType.toKey32(), abi.encode(info), newState);
115
+ _update(distributorType.toKey32(), abi.encode(info), newState);
110
116
  }
111
117
 
112
118
  function updateDistributorTypeState(DistributorType distributorType, StateId newState) external restricted() {
113
- updateState(distributorType.toKey32(), newState);
119
+ _updateState(distributorType.toKey32(), newState);
114
120
  }
115
121
 
116
122
  //--- Distributor -------------------------------------------------------//
117
123
  function createDistributor(NftId distributorNftId, IDistribution.DistributorInfo memory info) external restricted() {
118
- create(_toNftKey32(distributorNftId, DISTRIBUTOR()), abi.encode(info));
124
+ _create(_toNftKey32(distributorNftId, DISTRIBUTOR()), abi.encode(info));
119
125
  }
120
126
 
121
127
  function updateDistributor(NftId distributorNftId, IDistribution.DistributorInfo memory info, StateId newState) external restricted() {
122
- update(_toNftKey32(distributorNftId, DISTRIBUTOR()), abi.encode(info), newState);
128
+ _update(_toNftKey32(distributorNftId, DISTRIBUTOR()), abi.encode(info), newState);
123
129
  }
124
130
 
125
131
  function updateDistributorState(NftId distributorNftId, StateId newState) external restricted() {
126
- updateState(_toNftKey32(distributorNftId, DISTRIBUTOR()), newState);
132
+ _updateState(_toNftKey32(distributorNftId, DISTRIBUTOR()), newState);
127
133
  }
128
134
 
129
135
  //--- Referral ----------------------------------------------------------//
130
136
  function createReferral(ReferralId referralId, IDistribution.ReferralInfo memory referralInfo) external restricted() {
131
- create(referralId.toKey32(), abi.encode(referralInfo));
137
+ _create(referralId.toKey32(), abi.encode(referralInfo));
132
138
  }
133
139
 
134
140
  function updateReferral(ReferralId referralId, IDistribution.ReferralInfo memory referralInfo, StateId newState) external restricted() {
135
- update(referralId.toKey32(), abi.encode(referralInfo), newState);
141
+ _update(referralId.toKey32(), abi.encode(referralInfo), newState);
136
142
  }
137
143
 
138
144
  function updateReferralState(ReferralId referralId, StateId newState) external restricted() {
139
- updateState(referralId.toKey32(), newState);
145
+ _updateState(referralId.toKey32(), newState);
140
146
  }
141
147
 
142
148
  //--- Bundle ------------------------------------------------------------//
143
149
  function createBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle) external restricted() {
144
- _registerTarget(bundleNftId);
145
- create(_toNftKey32(bundleNftId, BUNDLE()), abi.encode(bundle));
150
+ _registerBalanceTarget(bundleNftId);
151
+ _create(_toNftKey32(bundleNftId, BUNDLE()), abi.encode(bundle));
146
152
  }
147
153
 
148
154
  function updateBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle, StateId newState) external restricted() {
149
- update(_toNftKey32(bundleNftId, BUNDLE()), abi.encode(bundle), newState);
155
+ _update(_toNftKey32(bundleNftId, BUNDLE()), abi.encode(bundle), newState);
150
156
  }
151
157
 
152
158
  function updateBundleState(NftId bundleNftId, StateId newState) external restricted() {
153
- updateState(_toNftKey32(bundleNftId, BUNDLE()), newState);
159
+ _updateState(_toNftKey32(bundleNftId, BUNDLE()), newState);
154
160
  }
155
161
 
156
162
  //--- Risk --------------------------------------------------------------//
157
163
  function createRisk(RiskId riskId, IRisk.RiskInfo memory risk) external restricted() {
158
- create(riskId.toKey32(), abi.encode(risk));
164
+ _create(riskId.toKey32(), abi.encode(risk));
159
165
  }
160
166
 
161
167
  function updateRisk(RiskId riskId, IRisk.RiskInfo memory risk, StateId newState) external restricted() {
162
- update(riskId.toKey32(), abi.encode(risk), newState);
168
+ _update(riskId.toKey32(), abi.encode(risk), newState);
163
169
  }
164
170
 
165
171
  function updateRiskState(RiskId riskId, StateId newState) external restricted() {
166
- updateState(riskId.toKey32(), newState);
172
+ _updateState(riskId.toKey32(), newState);
167
173
  }
168
174
 
169
175
  //--- Application (Policy) ----------------------------------------------//
170
176
  function createApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy) external restricted() {
171
- create(_toNftKey32(applicationNftId, POLICY()), abi.encode(policy));
177
+ _registerBalanceTarget(applicationNftId);
178
+ _create(_toNftKey32(applicationNftId, POLICY()), abi.encode(policy));
172
179
  }
173
180
 
174
181
  function updateApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
175
- update(_toNftKey32(applicationNftId, POLICY()), abi.encode(policy), newState);
182
+ _update(_toNftKey32(applicationNftId, POLICY()), abi.encode(policy), newState);
176
183
  }
177
184
 
178
185
  function updateApplicationState(NftId applicationNftId, StateId newState) external restricted() {
179
- updateState(_toNftKey32(applicationNftId, POLICY()), newState);
186
+ _updateState(_toNftKey32(applicationNftId, POLICY()), newState);
180
187
  }
181
188
 
182
189
  //--- Policy ------------------------------------------------------------//
183
190
  function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
184
- update(_toNftKey32(policyNftId, POLICY()), abi.encode(policy), newState);
191
+ _update(_toNftKey32(policyNftId, POLICY()), abi.encode(policy), newState);
185
192
  }
186
193
 
187
194
  function updatePolicyClaims(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
188
- update(_toNftKey32(policyNftId, POLICY()), abi.encode(policy), newState);
195
+ _update(_toNftKey32(policyNftId, POLICY()), abi.encode(policy), newState);
189
196
  }
190
197
 
191
198
  function updatePolicyState(NftId policyNftId, StateId newState) external restricted() {
192
- updateState(_toNftKey32(policyNftId, POLICY()), newState);
199
+ _updateState(_toNftKey32(policyNftId, POLICY()), newState);
193
200
  }
194
201
 
195
202
  //--- Claim -------------------------------------------------------------//
196
203
  function createClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim) external restricted() {
197
- create(_toClaimKey32(policyNftId, claimId), abi.encode(claim));
204
+ _create(_toClaimKey32(policyNftId, claimId), abi.encode(claim));
198
205
  }
199
206
 
200
207
  function updateClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim, StateId newState) external restricted() {
201
- update(_toClaimKey32(policyNftId, claimId), abi.encode(claim), newState);
208
+ _update(_toClaimKey32(policyNftId, claimId), abi.encode(claim), newState);
202
209
  }
203
210
 
204
211
  function updateClaimState(NftId policyNftId, ClaimId claimId, StateId newState) external restricted() {
205
- updateState(_toClaimKey32(policyNftId, claimId), newState);
212
+ _updateState(_toClaimKey32(policyNftId, claimId), newState);
206
213
  }
207
214
 
208
215
  //--- Payout ------------------------------------------------------------//
209
216
  function createPayout(NftId policyNftId, PayoutId payoutId, IPolicy.PayoutInfo memory payout) external restricted() {
210
- create(_toPayoutKey32(policyNftId, payoutId), abi.encode(payout));
217
+ _create(_toPayoutKey32(policyNftId, payoutId), abi.encode(payout));
211
218
  }
212
219
 
213
220
  function updatePayout(NftId policyNftId, PayoutId payoutId, IPolicy.PayoutInfo memory payout, StateId newState) external restricted() {
214
- update(_toPayoutKey32(policyNftId, payoutId), abi.encode(payout), newState);
221
+ _update(_toPayoutKey32(policyNftId, payoutId), abi.encode(payout), newState);
215
222
  }
216
223
 
217
224
  function updatePayoutState(NftId policyNftId, PayoutId payoutId, StateId newState) external restricted() {
218
- updateState(_toPayoutKey32(policyNftId, payoutId), newState);
225
+ _updateState(_toPayoutKey32(policyNftId, payoutId), newState);
226
+ }
227
+
228
+ //--- Request -----------------------------------------------------------//
229
+
230
+ function createRequest(IOracle.RequestInfo memory request) external restricted() returns (RequestId requestId) {
231
+ requestId = _createNextRequestId();
232
+ _create(requestId.toKey32(), abi.encode(request));
233
+ }
234
+
235
+ function updateRequest(RequestId requestId, IOracle.RequestInfo memory request, StateId newState) external restricted() {
236
+ _update(requestId.toKey32(), abi.encode(request), newState);
237
+ }
238
+
239
+ function updateRequestState(RequestId requestId, StateId newState) external restricted() {
240
+ _updateState(requestId.toKey32(), newState);
219
241
  }
220
242
 
221
243
  //--- balance and fee management functions ------------------------------//
@@ -54,7 +54,7 @@ contract BalanceStore {
54
54
  feeAmount = _feeAmount[targetNftId];
55
55
  }
56
56
 
57
- function _registerTarget(NftId targetNftId) internal {
57
+ function _registerBalanceTarget(NftId targetNftId) internal {
58
58
  if (_isRegistered[targetNftId]) {
59
59
  revert ErrorBalanceStoreTargetAlreadyRegistered(targetNftId);
60
60
  }
@@ -0,0 +1,21 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Blocknumber, BlocknumberLib} from "../../type/Blocknumber.sol";
5
+ import {NftId} from "../../type/NftId.sol";
6
+ import {Amount} from "../../type/Amount.sol";
7
+ import {RequestId, RequestIdLib} from "../../type/RequestId.sol";
8
+
9
+ contract ObjectCounter {
10
+
11
+ // TODO refactor risk id
12
+ // mapping(NftId productNftId => uint64 risks) private _riskCounter;
13
+
14
+ uint256 private _requestCounter;
15
+
16
+ // TODO introduce RequestId (uint64)
17
+ function _createNextRequestId() internal returns (RequestId requestId) {
18
+ _requestCounter++;
19
+ requestId = RequestIdLib.toRequestId(_requestCounter);
20
+ }
21
+ }