@etherisc/gif-next 0.0.2-fd4931b-974 → 0.0.2-fd4ee14-428

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 (393) 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 +115 -80
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +81 -54
  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 +20 -1
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +32 -101
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +83 -71
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +121 -12
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +105 -85
  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 +206 -49
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +74 -31
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +248 -118
  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/Cloneable.sol/Cloneable.json +0 -53
  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/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  39. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +2 -71
  40. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  41. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  42. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  47. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  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 +675 -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 +1034 -0
  58. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  60. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  61. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +91 -48
  62. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  63. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +69 -38
  64. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  65. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +20 -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 +35 -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 +84 -42
  74. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  75. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +58 -35
  76. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  77. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +79 -36
  78. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  79. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +63 -32
  80. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  81. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +119 -68
  82. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +83 -48
  84. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  85. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +20 -1
  86. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  87. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +20 -1
  88. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  89. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +20 -1
  90. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  91. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +20 -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 +20 -1
  96. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  97. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +97 -46
  98. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +72 -37
  100. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  101. package/artifacts/contracts/product/PricingService.sol/PricingService.json +105 -62
  102. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  103. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +76 -45
  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 +61 -26
  108. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +54 -27
  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 +82 -45
  114. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  115. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -1
  116. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  117. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +129 -0
  118. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  119. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  120. package/artifacts/contracts/registry/Registry.sol/Registry.json +254 -97
  121. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  122. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
  123. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  124. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -15
  125. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +46 -30
  127. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  128. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +288 -182
  129. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  130. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +171 -0
  131. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  132. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +187 -0
  133. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  134. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +46 -177
  135. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  136. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
  137. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  138. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  139. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  140. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
  141. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  142. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
  143. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  144. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
  145. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  146. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
  147. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  148. package/artifacts/contracts/shared/Component.sol/Component.json +18 -12
  149. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  150. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +120 -70
  151. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  152. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +80 -49
  153. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  154. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +20 -1
  155. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  156. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  157. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  158. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
  159. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  160. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  161. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  162. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  163. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  164. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +11 -5
  165. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  166. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +27 -1
  167. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  168. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +11 -5
  169. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  170. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +0 -10
  171. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  172. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  173. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -1
  174. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  175. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  176. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -1
  177. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  178. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IService.sol/IService.json +20 -1
  180. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  181. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  182. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  183. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  184. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +18 -12
  185. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  186. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +10 -20
  187. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  188. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +6 -6
  189. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +1 -1
  190. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +27 -35
  191. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  192. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +13 -7
  193. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  194. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  195. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  196. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +35 -16
  197. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  198. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +15 -9
  199. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  200. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  201. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  202. package/artifacts/contracts/shared/Service.sol/Service.json +20 -1
  203. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  204. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  205. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  206. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  207. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  208. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  209. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +247 -579
  210. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  211. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +471 -62
  212. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  213. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  214. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  215. package/artifacts/contracts/staking/Staking.sol/Staking.json +303 -798
  216. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  217. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +81 -164
  218. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  219. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +368 -39
  220. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  221. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +503 -120
  222. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  223. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +67 -43
  224. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  225. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2261 -0
  226. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  227. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +281 -18
  228. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  229. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  230. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  231. package/artifacts/contracts/type/Amount.sol/AmountLib.json +68 -4
  232. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  233. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +40 -2
  234. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  235. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  236. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  237. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  238. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  239. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  240. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  241. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  242. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  243. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +28 -4
  244. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  245. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  246. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  247. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +96 -2
  248. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  250. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  252. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  254. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  256. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +114 -4
  258. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +52 -2
  260. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  262. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  264. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  266. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  268. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +17 -4
  270. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  274. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +2 -2
  276. package/contracts/distribution/Distribution.sol +2 -4
  277. package/contracts/distribution/DistributionService.sol +5 -6
  278. package/contracts/distribution/DistributionServiceManager.sol +0 -12
  279. package/contracts/distribution/IDistributionComponent.sol +1 -1
  280. package/contracts/distribution/IDistributionService.sol +1 -1
  281. package/contracts/instance/IInstance.sol +21 -11
  282. package/contracts/instance/IInstanceService.sol +26 -12
  283. package/contracts/instance/Instance.sol +84 -49
  284. package/contracts/instance/InstanceAdmin.sol +331 -0
  285. package/contracts/instance/InstanceAuthorizationsLib.sol +192 -151
  286. package/contracts/instance/InstanceReader.sol +32 -6
  287. package/contracts/instance/InstanceService.sol +119 -47
  288. package/contracts/instance/InstanceStore.sol +29 -20
  289. package/contracts/instance/base/BalanceStore.sol +11 -6
  290. package/contracts/instance/base/Cloneable.sol +2 -25
  291. package/contracts/instance/base/ObjectCounter.sol +21 -0
  292. package/contracts/instance/base/ObjectManager.sol +1 -3
  293. package/contracts/instance/module/IAccess.sol +2 -10
  294. package/contracts/oracle/IOracle.sol +20 -0
  295. package/contracts/oracle/IOracleComponent.sol +32 -0
  296. package/contracts/oracle/IOracleService.sol +65 -0
  297. package/contracts/oracle/Oracle.sol +145 -0
  298. package/contracts/oracle/OracleService.sol +278 -0
  299. package/contracts/oracle/OracleServiceManager.sol +42 -0
  300. package/contracts/pool/BundleService.sol +20 -20
  301. package/contracts/pool/IBundleService.sol +1 -1
  302. package/contracts/pool/IPoolService.sol +4 -1
  303. package/contracts/pool/PoolService.sol +38 -10
  304. package/contracts/product/ApplicationService.sol +6 -6
  305. package/contracts/product/ClaimService.sol +12 -7
  306. package/contracts/product/IApplicationService.sol +1 -1
  307. package/contracts/product/IClaimService.sol +7 -1
  308. package/contracts/product/IPolicyService.sol +1 -1
  309. package/contracts/product/IPricingService.sol +1 -1
  310. package/contracts/product/IProductService.sol +1 -1
  311. package/contracts/product/PolicyService.sol +9 -7
  312. package/contracts/product/PricingService.sol +8 -9
  313. package/contracts/product/Product.sol +1 -1
  314. package/contracts/product/ProductService.sol +6 -6
  315. package/contracts/registry/ChainNft.sol +1 -0
  316. package/contracts/registry/IRegistry.sol +20 -14
  317. package/contracts/registry/IRegistryService.sol +1 -0
  318. package/contracts/registry/IServiceAuthorization.sol +35 -0
  319. package/contracts/registry/Registry.sol +85 -66
  320. package/contracts/registry/RegistryAdmin.sol +333 -0
  321. package/contracts/registry/RegistryService.sol +8 -70
  322. package/contracts/registry/RegistryServiceManager.sol +1 -20
  323. package/contracts/registry/ReleaseManager.sol +218 -221
  324. package/contracts/registry/ServiceAuthorization.sol +86 -0
  325. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  326. package/contracts/registry/TokenRegistry.sol +56 -60
  327. package/contracts/shared/AccessAdmin.sol +759 -0
  328. package/contracts/shared/AccessManagerCustom.sol +741 -0
  329. package/contracts/shared/AccessManagerExtended.sol +481 -0
  330. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  331. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  332. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  333. package/contracts/shared/Component.sol +8 -13
  334. package/contracts/shared/ComponentService.sol +39 -17
  335. package/contracts/shared/ComponentVerifyingService.sol +13 -7
  336. package/contracts/shared/ERC165.sol +1 -1
  337. package/contracts/shared/IAccessAdmin.sol +168 -0
  338. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  339. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  340. package/contracts/shared/IComponent.sol +3 -7
  341. package/contracts/shared/IComponentService.sol +11 -0
  342. package/contracts/shared/IKeyValueStore.sol +1 -1
  343. package/contracts/shared/INftOwnable.sol +1 -1
  344. package/contracts/shared/IService.sol +8 -1
  345. package/contracts/shared/InitializableCustom.sol +177 -0
  346. package/contracts/shared/InstanceLinkedComponent.sol +1 -2
  347. package/contracts/shared/KeyValueStore.sol +1 -4
  348. package/contracts/shared/Lifecycle.sol +11 -2
  349. package/contracts/shared/NftIdSetManager.sol +2 -6
  350. package/contracts/shared/NftOwnable.sol +2 -13
  351. package/contracts/shared/PolicyHolder.sol +2 -1
  352. package/contracts/shared/ProxyManager.sol +6 -2
  353. package/contracts/shared/Service.sol +28 -22
  354. package/contracts/staking/IStaking.sol +93 -38
  355. package/contracts/staking/IStakingService.sol +71 -40
  356. package/contracts/staking/StakeManagerLib.sol +231 -0
  357. package/contracts/staking/Staking.sol +302 -137
  358. package/contracts/staking/StakingManager.sol +22 -20
  359. package/contracts/staking/StakingReader.sol +119 -24
  360. package/contracts/staking/StakingService.sol +193 -76
  361. package/contracts/staking/StakingServiceManager.sol +2 -2
  362. package/contracts/staking/StakingStore.sol +613 -0
  363. package/contracts/staking/TargetManagerLib.sol +76 -10
  364. package/contracts/type/AddressSet.sol +1 -1
  365. package/contracts/type/Amount.sol +15 -1
  366. package/contracts/type/Blocknumber.sol +14 -2
  367. package/contracts/type/Fee.sol +1 -1
  368. package/contracts/type/NftId.sol +9 -9
  369. package/contracts/type/NftIdSet.sol +1 -1
  370. package/contracts/type/ObjectType.sol +139 -67
  371. package/contracts/type/Referral.sol +1 -1
  372. package/contracts/type/RequestId.sol +75 -0
  373. package/contracts/type/RiskId.sol +1 -1
  374. package/contracts/type/RoleId.sol +79 -21
  375. package/contracts/type/Seconds.sol +18 -0
  376. package/contracts/type/Selector.sol +102 -0
  377. package/contracts/type/StateId.sol +12 -0
  378. package/contracts/type/String.sol +53 -0
  379. package/contracts/type/Timestamp.sol +6 -2
  380. package/contracts/type/Version.sol +1 -1
  381. package/package.json +3 -3
  382. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  383. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  384. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  385. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -298
  386. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  387. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  388. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  389. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  390. package/contracts/instance/InstanceAccessManager.sol +0 -543
  391. package/contracts/registry/RegistryAccessManager.sol +0 -167
  392. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  393. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
@@ -3,25 +3,30 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
5
 
6
+ import {Amount} from "../type/Amount.sol";
6
7
  import {Key32} from "../type/Key32.sol";
7
8
  import {NftId} from "../type/NftId.sol";
8
9
  import {RiskId} from "../type/RiskId.sol";
9
10
  import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT, DISTRIBUTOR, DISTRIBUTOR_TYPE} from "../type/ObjectType.sol";
10
11
  import {RoleId, RoleIdLib, eqRoleId, ADMIN_ROLE, INSTANCE_ROLE, INSTANCE_OWNER_ROLE} from "../type/RoleId.sol";
11
- import {VersionPart, VersionPartLib} from "../type/Version.sol";
12
12
  import {ClaimId} from "../type/ClaimId.sol";
13
13
  import {ReferralId} from "../type/Referral.sol";
14
14
  import {PayoutId} from "../type/PayoutId.sol";
15
15
  import {DistributorType} from "../type/DistributorType.sol";
16
+ import {Seconds} from "../type/Seconds.sol";
17
+ import {UFixed} from "../type/UFixed.sol";
18
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
16
19
 
17
20
  import {Registerable} from "../shared/Registerable.sol";
18
21
  import {TokenHandler} from "../shared/TokenHandler.sol";
22
+ import {AccessManagerExtendedInitializeable} from "../shared/AccessManagerExtendedInitializeable.sol";
19
23
 
20
24
  import {IRegistry} from "../registry/IRegistry.sol";
21
25
 
22
26
  import {IInstance} from "./IInstance.sol";
27
+ import {IInstanceService} from "./IInstanceService.sol";
23
28
  import {InstanceReader} from "./InstanceReader.sol";
24
- import {InstanceAccessManager} from "./InstanceAccessManager.sol";
29
+ import {InstanceAdmin} from "./InstanceAdmin.sol";
25
30
  import {BundleManager} from "./BundleManager.sol";
26
31
  import {InstanceStore} from "./InstanceStore.sol";
27
32
 
@@ -48,7 +53,8 @@ contract Instance is
48
53
 
49
54
  bool private _initialized;
50
55
 
51
- InstanceAccessManager internal _accessManager;
56
+ IInstanceService internal _instanceService;
57
+ InstanceAdmin internal _instanceAdmin;
52
58
  InstanceReader internal _instanceReader;
53
59
  BundleManager internal _bundleManager;
54
60
  InstanceStore internal _instanceStore;
@@ -65,7 +71,7 @@ contract Instance is
65
71
  initializer()
66
72
  {
67
73
  if(authority == address(0)) {
68
- revert ErrorInstanceInstanceAccessManagerZero();
74
+ revert ErrorInstanceInstanceAdminZero();
69
75
  }
70
76
 
71
77
  __AccessManaged_init(authority);
@@ -73,40 +79,82 @@ contract Instance is
73
79
  IRegistry registry = IRegistry(registryAddress);
74
80
  initializeRegisterable(registryAddress, registry.getNftId(), INSTANCE(), true, initialOwner, "");
75
81
 
82
+ _instanceService = IInstanceService(
83
+ getRegistry().getServiceAddress(
84
+ INSTANCE(),
85
+ getMajorVersion()));
86
+
76
87
  registerInterface(type(IInstance).interfaceId);
77
88
  }
78
89
 
90
+ //--- Staking ----------------------------------------------------------//
91
+
92
+ function setStakingLockingPeriod(Seconds stakeLockingPeriod)
93
+ external
94
+ // TODO decide if onlyOwner or restricted to instance owner role is better
95
+ onlyOwner()
96
+ {
97
+ _instanceService.setStakingLockingPeriod(stakeLockingPeriod);
98
+ }
99
+
100
+ function setStakingRewardRate(UFixed rewardRate)
101
+ external
102
+ onlyOwner()
103
+ {
104
+ _instanceService.setStakingRewardRate(rewardRate);
105
+ }
106
+
107
+ function refillStakingRewardReserves(Amount dipAmount)
108
+ external
109
+ onlyOwner()
110
+ {
111
+ address instanceOwner = msg.sender;
112
+ _instanceService.refillStakingRewardReserves(instanceOwner, dipAmount);
113
+ }
114
+
115
+ function withdrawStakingRewardReserves(Amount dipAmount)
116
+ external
117
+ onlyOwner()
118
+ returns (Amount newBalance)
119
+ {
120
+ return _instanceService.withdrawStakingRewardReserves(dipAmount);
121
+ }
122
+
79
123
  //--- Roles ------------------------------------------------------------//
80
124
 
81
125
  function createRole(string memory roleName, string memory adminName)
82
126
  external
127
+ // TODO decide if onlyOwner or restricted to instance owner role is better
83
128
  restricted // INSTANCE_OWNER_ROLE
84
129
  returns (RoleId roleId, RoleId admin)
85
130
  {
86
- (roleId, admin) = _accessManager.createRole(roleName, adminName);
131
+ (roleId, admin) = _instanceAdmin.createRole(roleName, adminName);
87
132
  }
88
133
 
89
134
  function grantRole(RoleId roleId, address account)
90
135
  external
136
+ // TODO decide if onlyOwner or restricted to instance owner role is better
91
137
  restricted // INSTANCE_OWNER_ROLE
92
138
  {
93
- _accessManager.grantRole(roleId, account);
139
+ AccessManagerExtendedInitializeable(authority()).grantRole(roleId.toInt(), account, 0);
94
140
  }
95
141
 
96
142
  function revokeRole(RoleId roleId, address account)
97
143
  external
144
+ // TODO decide if onlyOwner or restricted to instance owner role is better
98
145
  restricted // INSTANCE_OWNER_ROLE
99
146
  {
100
- _accessManager.revokeRole(roleId, account);
147
+ AccessManagerExtendedInitializeable(authority()).revokeRole(roleId.toInt(), account);
101
148
  }
102
149
 
103
150
  //--- Targets ------------------------------------------------------------//
104
151
 
105
152
  function createTarget(address target, string memory name)
106
153
  external
154
+ // TODO decide if onlyOwner or restricted to instance owner role is better
107
155
  restricted // INSTANCE_OWNER_ROLE
108
156
  {
109
- _accessManager.createTarget(target, name);
157
+ _instanceAdmin.createTarget(target, name);
110
158
  }
111
159
 
112
160
  function setTargetFunctionRole(
@@ -117,38 +165,41 @@ contract Instance is
117
165
  external
118
166
  restricted // INSTANCE_OWNER_ROLE
119
167
  {
120
- _accessManager.setTargetFunctionRole(targetName, selectors, roleId);
168
+ _instanceAdmin.setTargetFunctionRoleByInstance(targetName, selectors, roleId);
121
169
  }
122
170
 
123
171
  function setTargetLocked(address target, bool locked)
124
172
  external
125
173
  restricted // INSTANCE_OWNER_ROLE
126
174
  {
127
- _accessManager.setTargetLockedByInstance(target, locked);
175
+ _instanceAdmin.setTargetLockedByInstance(target, locked);
128
176
  }
129
177
 
130
- //--- ITransferInterceptor ------------------------------------------------------------//
178
+ //--- ITransferInterceptor ----------------------------------------------//
131
179
 
180
+ // TODO interception of child components nfts
132
181
  function nftMint(address to, uint256 tokenId) external onlyChainNft {
133
- assert(_accessManager.roleMembers(INSTANCE_OWNER_ROLE()) == 0);// temp
134
- assert(_accessManager.grantRole(INSTANCE_OWNER_ROLE(), to) == true);
182
+ _instanceAdmin.transferInstanceOwnerRole(address(0), to);
135
183
  }
136
184
 
137
185
  function nftTransferFrom(address from, address to, uint256 tokenId) external onlyChainNft {
138
- assert(_accessManager.revokeRole(INSTANCE_OWNER_ROLE(), from) == true);
139
- assert(_accessManager.grantRole(INSTANCE_OWNER_ROLE(), to) == true);
186
+ _instanceAdmin.transferInstanceOwnerRole(from, to);
140
187
  }
141
188
 
189
+ //function nftBurn(address from, uint256 tokenId) external onlyChainNft {
190
+ //_instanceAdmin.transferInstanceOwnerRole(from, address(0));
191
+ //}
192
+
142
193
  //--- initial setup functions -------------------------------------------//
143
194
 
144
- function setInstanceAccessManager(InstanceAccessManager accessManager) external restricted {
145
- if(address(_accessManager) != address(0)) {
146
- revert ErrorInstanceInstanceAccessManagerAlreadySet(address(_accessManager));
195
+ function setInstanceAdmin(InstanceAdmin accessManager) external restricted {
196
+ if(address(_instanceAdmin) != address(0)) {
197
+ revert ErrorInstanceInstanceAdminAlreadySet(address(_instanceAdmin));
147
198
  }
148
199
  if(accessManager.authority() != authority()) {
149
- revert ErrorInstanceInstanceAccessManagerAuthorityMismatch(authority());
200
+ revert ErrorInstanceInstanceAdminAuthorityMismatch(authority());
150
201
  }
151
- _accessManager = accessManager;
202
+ _instanceAdmin = accessManager;
152
203
  }
153
204
 
154
205
  function setBundleManager(BundleManager bundleManager) external restricted() {
@@ -172,20 +223,6 @@ contract Instance is
172
223
  _instanceReader = instanceReader;
173
224
  }
174
225
 
175
- //--- external view functions -------------------------------------------//
176
-
177
- function getInstanceReader() external view returns (InstanceReader) {
178
- return _instanceReader;
179
- }
180
-
181
- function getBundleManager() external view returns (BundleManager) {
182
- return _bundleManager;
183
- }
184
-
185
- function getInstanceAccessManager() external view returns (InstanceAccessManager) {
186
- return _accessManager;
187
- }
188
-
189
226
  function setInstanceStore(InstanceStore instanceStore) external restricted {
190
227
  if(address(_instanceStore) != address(0)) {
191
228
  revert ErrorInstanceInstanceStoreAlreadySet(address(_instanceStore));
@@ -196,32 +233,30 @@ contract Instance is
196
233
  _instanceStore = instanceStore;
197
234
  }
198
235
 
199
- function getInstanceStore() external view returns (InstanceStore) {
200
- return _instanceStore;
201
- }
236
+ //--- external view functions -------------------------------------------//
202
237
 
203
- function getMajorVersion() external pure returns (VersionPart majorVersion) {
204
- return VersionPartLib.toVersionPart(GIF_MAJOR_VERSION);
238
+ function getInstanceReader() external view returns (InstanceReader) {
239
+ return _instanceReader;
205
240
  }
206
241
 
207
- function getDistributionService() external view returns (IDistributionService) {
208
- return IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), VersionPart.wrap(3)));
242
+ function getBundleManager() external view returns (BundleManager) {
243
+ return _bundleManager;
209
244
  }
210
245
 
211
- function getProductService() external view returns (IProductService) {
212
- return IProductService(getRegistry().getServiceAddress(PRODUCT(), VersionPart.wrap(3)));
246
+ function getInstanceAdmin() external view returns (InstanceAdmin) {
247
+ return _instanceAdmin;
213
248
  }
214
249
 
215
- function getPoolService() external view returns (IPoolService) {
216
- return IPoolService(getRegistry().getServiceAddress(POOL(), VersionPart.wrap(3)));
250
+ function getInstanceAccessManager() external view returns (AccessManagerExtendedInitializeable) {
251
+ return AccessManagerExtendedInitializeable(authority());
217
252
  }
218
253
 
219
- function getPolicyService() external view returns (IPolicyService) {
220
- return IPolicyService(getRegistry().getServiceAddress(POLICY(), VersionPart.wrap(3)));
254
+ function getInstanceStore() external view returns (InstanceStore) {
255
+ return _instanceStore;
221
256
  }
222
257
 
223
- function getBundleService() external view returns (IBundleService) {
224
- return IBundleService(getRegistry().getServiceAddress(BUNDLE(), VersionPart.wrap(3)));
258
+ function getMajorVersion() public pure returns (VersionPart majorVersion) {
259
+ return VersionPartLib.toVersionPart(GIF_MAJOR_VERSION);
225
260
  }
226
261
 
227
262
  //--- internal view/pure functions --------------------------------------//
@@ -0,0 +1,331 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+ import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
6
+
7
+ import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE, INSTANCE_SERVICE_ROLE, INSTANCE_OWNER_ROLE, INSTANCE_ROLE} from "../type/RoleId.sol";
8
+ import {TimestampLib} from "../type/Timestamp.sol";
9
+ import {NftId} from "../type/NftId.sol";
10
+
11
+ import {AccessManagerExtendedInitializeable} from "../shared/AccessManagerExtendedInitializeable.sol";
12
+
13
+ import {IRegistry} from "../registry/IRegistry.sol";
14
+
15
+ import {IInstance} from "./IInstance.sol";
16
+ import {IAccess} from "./module/IAccess.sol";
17
+
18
+ contract InstanceAdmin is
19
+ AccessManagedUpgradeable
20
+ {
21
+ using RoleIdLib for RoleId;
22
+
23
+ string public constant INSTANCE_ROLE_NAME = "InstanceRole";
24
+ string public constant INSTANCE_OWNER_ROLE_NAME = "InstanceOwnerRole";
25
+
26
+ string public constant INSTANCE_ADMIN_TARGET_NAME = "InstanceAdmin";
27
+
28
+ uint64 public constant CUSTOM_ROLE_ID_MIN = 10000; // MUST be even
29
+ uint32 public constant EXECUTION_DELAY = 0;
30
+
31
+ mapping(address target => IAccess.Type) _targetType;
32
+ mapping(RoleId roleId => IAccess.Type) _roleType;
33
+ uint64 _idNext;
34
+
35
+ AccessManagerExtendedInitializeable internal _accessManager;
36
+ address _instance;
37
+ IRegistry internal _registry;
38
+
39
+ // instance owner role is granted upon instance nft minting in callback function
40
+ // assume this contract is already a member of ADMIN_ROLE, the only member
41
+ function initialize(address instanceAddress) external initializer
42
+ {
43
+ IInstance instance = IInstance(instanceAddress);
44
+ IRegistry registry = instance.getRegistry();
45
+ address authority = instance.authority();
46
+
47
+ __AccessManaged_init(authority);
48
+
49
+ _accessManager = AccessManagerExtendedInitializeable(authority);
50
+ _instance = instanceAddress;
51
+ _registry = registry;
52
+ _idNext = CUSTOM_ROLE_ID_MIN;
53
+
54
+ // minimum configuration required for nft interception
55
+ _createRole(INSTANCE_ROLE(), INSTANCE_ROLE_NAME, IAccess.Type.Core);
56
+ _createRole(INSTANCE_OWNER_ROLE(), INSTANCE_OWNER_ROLE_NAME, IAccess.Type.Core);
57
+ _grantRole(INSTANCE_ROLE(), address(instance));
58
+
59
+ _createTarget(address(this), INSTANCE_ADMIN_TARGET_NAME, IAccess.Type.Core);
60
+ bytes4[] memory instanceAdminInstanceSelectors = new bytes4[](1);
61
+ instanceAdminInstanceSelectors[0] = this.transferInstanceOwnerRole.selector;
62
+ _setTargetFunctionRole(address(this), instanceAdminInstanceSelectors, INSTANCE_ROLE());
63
+ }
64
+
65
+ //--- Role ------------------------------------------------------//
66
+ // ADMIN_ROLE
67
+ // assume all core roles are known at deployment time
68
+ // assume core roles are set and granted only during instance cloning
69
+ // assume core roles are never revoked -> core roles admin is never active after intialization
70
+ function createCoreRole(RoleId roleId, string memory name) external restricted() {
71
+ _createRole(roleId, name, IAccess.Type.Core);
72
+ }
73
+
74
+ // ADMIN_ROLE
75
+ // assume gif roles can be revoked
76
+ // assume admin is INSTANCE_OWNER_ROLE or INSTANCE_ROLE
77
+ function createGifRole(RoleId roleId, string memory name, RoleId admin) external restricted() {
78
+ _createRole(roleId, name, IAccess.Type.Gif);
79
+ _setRoleAdmin(roleId, admin);
80
+ }
81
+
82
+ // INSTANCE_ROLE
83
+ // TODO specify how many owners role can have -> many roles MUST have exactly 1 member?
84
+ function createRole(string memory roleName, string memory adminName)
85
+ external
86
+ restricted()
87
+ returns(RoleId roleId, RoleId admin)
88
+ {
89
+ (roleId, admin) = _getNextCustomRoleId();
90
+
91
+ _createRole(roleId, roleName, IAccess.Type.Custom);
92
+ _createRole(admin, adminName, IAccess.Type.Custom);
93
+
94
+ _setRoleAdmin(roleId, admin);
95
+ _setRoleAdmin(admin, INSTANCE_OWNER_ROLE());
96
+ }
97
+
98
+ // ADMIN_ROLE
99
+ // assume used by instance service only during instance cloning
100
+ // assume used only by this.createRole(), this.createGifRole() afterwards
101
+ function setRoleAdmin(RoleId roleId, RoleId admin) public restricted() {
102
+ _setRoleAdmin(roleId, admin);
103
+ }
104
+
105
+ // INSTANCE_ROLE
106
+ function transferInstanceOwnerRole(address from, address to) external restricted() {
107
+ // temp pre transfer checks
108
+ assert(_getRoleMembers(INSTANCE_ROLE()) == 1);
109
+ assert(_hasRole(INSTANCE_ROLE(), _instance));
110
+ assert(_getRoleAdmin(INSTANCE_OWNER_ROLE()).toInt() == ADMIN_ROLE().toInt());
111
+ if(from != address(0)) { // nft transfer
112
+ assert(_getRoleMembers(INSTANCE_OWNER_ROLE()) == 1);
113
+ } else { // nft minting
114
+ assert(_getRoleMembers(INSTANCE_OWNER_ROLE()) == 0);
115
+ }
116
+
117
+ // transfer
118
+ assert(from != to);
119
+ _grantRole(INSTANCE_OWNER_ROLE(), to);
120
+ if(from != address(0)) { // nft transfer
121
+ _revokeRole(INSTANCE_OWNER_ROLE(), from);
122
+ }
123
+
124
+ // temp post transfer checks
125
+ assert(_getRoleMembers(INSTANCE_OWNER_ROLE()) == 1);// temp
126
+ assert(_hasRole(INSTANCE_OWNER_ROLE(), to));
127
+ }
128
+
129
+ //--- Target ------------------------------------------------------//
130
+ // ADMIN_ROLE
131
+ // assume some core targets are registred (instance) while others are not (instance accesss manager, instance reader, bundle manager)
132
+ function createCoreTarget(address target, string memory name) external restricted() {
133
+ _createTarget(target, name, IAccess.Type.Core);
134
+ }
135
+
136
+ // INSTANCE_SERVICE_ROLE
137
+ function createGifTarget(address target, string memory name) external restricted()
138
+ {
139
+ if(!_registry.isRegistered(target)) {
140
+ revert IAccess.ErrorIAccessTargetNotRegistered(target);
141
+ }
142
+
143
+ NftId targetParentNftId = _registry.getObjectInfo(target).parentNftId;
144
+ NftId instanceNftId = _registry.getObjectInfo(_instance).nftId;
145
+ if(targetParentNftId != instanceNftId) {
146
+ revert IAccess.ErrorIAccessTargetInstanceMismatch(target, targetParentNftId, instanceNftId);
147
+ }
148
+
149
+ _createTarget(target, name, IAccess.Type.Gif);
150
+ }
151
+
152
+ // INSTANCE_ROLE
153
+ // assume custom target.authority() is constant -> target MUST not be used with different instance access manager
154
+ // assume custom target can not be registered as component -> each service which is doing component registration MUST register a gif target
155
+ // assume custom target can not be registered as instance or service -> why?
156
+ // TODO check target associated with instance owner or instance or instance components or components helpers
157
+ function createTarget(address target, string memory name) external restricted() {
158
+ _createTarget(target, name, IAccess.Type.Custom);
159
+ }
160
+
161
+ // TODO instance owner locks component instead of revoking it access to the instance...
162
+ // INSTANCE_SERVICE_ROLE
163
+ function setTargetLockedByService(address target, bool locked) external restricted {
164
+ _setTargetLocked(target, locked);
165
+ }
166
+
167
+ // INSTANCE_ROLE
168
+ function setTargetLockedByInstance(address target, bool locked) external restricted {
169
+ _setTargetLocked(target, locked);
170
+ }
171
+
172
+
173
+ // allowed combinations of roles and targets:
174
+ //1) set core role for core target
175
+ //2) set gif role for gif target
176
+ //3) set custom role for gif target
177
+ //4) set custom role for custom target
178
+
179
+ // ADMIN_ROLE if used only during initialization, works with:
180
+ // any roles for any targets
181
+ // INSTANCE_SERVICE_ROLE if used not only during initilization, works with:
182
+ // core roles for core targets
183
+ // gif roles for gif targets
184
+ function setTargetFunctionRoleByService(
185
+ string memory targetName,
186
+ bytes4[] calldata selectors,
187
+ RoleId roleId
188
+ )
189
+ public
190
+ virtual
191
+ restricted
192
+ {
193
+ address target = _accessManager.getTargetAddress(targetName);
194
+ // not custom target
195
+ if(_targetType[target] == IAccess.Type.Custom) {
196
+ revert IAccess.ErrorIAccessTargetTypeInvalid(target, IAccess.Type.Custom);
197
+ }
198
+
199
+ // not custom role
200
+ if(_roleType[roleId] == IAccess.Type.Custom) {
201
+ revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Custom);
202
+ }
203
+
204
+ _setTargetFunctionRole(target, selectors, roleId);
205
+ }
206
+
207
+ // INSTANCE_ROLE
208
+ // gif role for gif target
209
+ // gif role for custom target
210
+ // custom role for gif target -> need to prohibit
211
+ // custom role for custom target
212
+ // TODO instance owner can mess with gif target (component) -> e.g. set custom role for function intendent to work with gif role
213
+ function setTargetFunctionRoleByInstance(
214
+ string memory targetName,
215
+ bytes4[] calldata selectors,
216
+ RoleId roleId// string memory roleName
217
+ )
218
+ public
219
+ virtual
220
+ restricted()
221
+ {
222
+ address target = _accessManager.getTargetAddress(targetName);
223
+
224
+ // not core target
225
+ if(_targetType[target] == IAccess.Type.Core) {
226
+ revert IAccess.ErrorIAccessTargetTypeInvalid(target, IAccess.Type.Core);
227
+ }
228
+
229
+ // not core role
230
+ if(_roleType[roleId] == IAccess.Type.Core) {
231
+ revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Core);
232
+ }
233
+
234
+ _setTargetFunctionRole(target, selectors, roleId);
235
+ }
236
+
237
+ //--- Role internal view/pure functions --------------------------------------//
238
+ function _createRole(RoleId roleId, string memory name, IAccess.Type rtype) internal {
239
+ _validateRole(roleId, rtype);
240
+
241
+ _roleType[roleId] = rtype;
242
+ _accessManager.createRole(roleId.toInt(), name);
243
+ }
244
+
245
+ function _validateRole(RoleId roleId, IAccess.Type rtype) internal pure
246
+ {
247
+ uint roleIdInt = roleId.toInt();
248
+ if(rtype == IAccess.Type.Custom && roleIdInt < CUSTOM_ROLE_ID_MIN) {
249
+ revert IAccess.ErrorIAccessRoleIdTooSmall(roleId);
250
+ }
251
+
252
+ if(
253
+ rtype != IAccess.Type.Custom &&
254
+ roleIdInt >= CUSTOM_ROLE_ID_MIN &&
255
+ roleIdInt != PUBLIC_ROLE().toInt())
256
+ {
257
+ revert IAccess.ErrorIAccessRoleIdTooBig(roleId);
258
+ }
259
+ }
260
+
261
+ function _grantRole(RoleId roleId, address account) internal {
262
+ _accessManager.grantRole(roleId.toInt(), account, EXECUTION_DELAY);
263
+ }
264
+
265
+ function _revokeRole(RoleId roleId, address member) internal {
266
+ _accessManager.revokeRole(roleId.toInt(), member);
267
+ }
268
+
269
+ function _setRoleAdmin(RoleId roleId, RoleId admin) internal {
270
+ if(_roleType[roleId] == IAccess.Type.Core) {
271
+ revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Core);
272
+ }
273
+
274
+ _accessManager.setRoleAdmin(roleId.toInt(), admin.toInt());
275
+ }
276
+
277
+ function _getRoleAdmin(RoleId roleId) internal view returns (RoleId admin) {
278
+ return RoleIdLib.toRoleId(_accessManager.getRoleAdmin(roleId.toInt()));
279
+ }
280
+
281
+ function _hasRole(RoleId roleId, address account) internal view returns (bool accountHasRole) {
282
+ uint32 executionDelay;
283
+ (accountHasRole, executionDelay) = _accessManager.hasRole(roleId.toInt(), account);
284
+ assert(executionDelay == 0);
285
+ }
286
+
287
+ function _getRoleMembers(RoleId roleId) internal view returns (uint) {
288
+ return _accessManager.getRoleMembers(roleId.toInt());
289
+ }
290
+
291
+ function _getNextCustomRoleId() internal returns(RoleId roleId, RoleId admin) {
292
+ uint64 roleIdInt = _idNext;
293
+ uint64 adminInt = roleIdInt + 1;
294
+
295
+ _idNext = roleIdInt + 2;
296
+
297
+ roleId = RoleIdLib.toRoleId(roleIdInt);
298
+ admin = RoleIdLib.toRoleId(adminInt);
299
+ }
300
+
301
+ //--- Target internal view/pure functions --------------------------------------//
302
+ function _createTarget(address target, string memory name, IAccess.Type ttype)
303
+ internal
304
+ {
305
+ _validateTarget(target, ttype);
306
+ _targetType[target] = ttype;
307
+ _accessManager.createTarget(target, name);
308
+ }
309
+
310
+ function _validateTarget(address target, IAccess.Type ttype)
311
+ internal
312
+ view
313
+ {}
314
+
315
+ // IMPORTANT: instance admin MUST be of Core type -> otherwise can be locked forever
316
+ // TODO: consider locking gif targets in a separate function?
317
+ function _setTargetLocked(address target, bool locked) internal
318
+ {
319
+ IAccess.Type targetType = _targetType[target];
320
+
321
+ if(targetType == IAccess.Type.Core) {
322
+ revert IAccess.ErrorIAccessTargetTypeInvalid(target, targetType);
323
+ }
324
+
325
+ _accessManager.setTargetClosed(target, locked);
326
+ }
327
+
328
+ function _setTargetFunctionRole(address target, bytes4[] memory selectors, RoleId roleId) internal {
329
+ _accessManager.setTargetFunctionRole(target, selectors, roleId.toInt());
330
+ }
331
+ }